On 5/23/21 7:28 PM, Peter Otten wrote:
On 23/05/2021 06:37, hw wrote:

Hi,

I'm starting to learn python and have made a little example program following a tutorial[1] I'm attaching.

Running it, I'm getting:


Traceback (most recent call last):
   File "[...]/hworld.py", line 18, in <module>
     print(isinstance(int, float))
TypeError: isinstance() arg 2 must be a type or tuple of types


I would understand to get an error message in line 5 but not in 18. Is this a bug or a feature?

It is a bug in your code (which you don't provide). Did you assign some value to float, e. g.:

 >>> float = 42.0
 >>> isinstance(int, float)
Traceback (most recent call last):
   File "<pyshell#313>", line 1, in <module>
     isinstance(int, float)
TypeError: isinstance() arg 2 must be a type or tuple of types

If you do not shadow the built-in you should get

 >>> isinstance(int, float)
False


Apparently the attachment was stripped from my message. I'll put a smaller version directly into this message instead of an attachment:


#!/usr/bin/python

print("world!")

int = 17
print("world", int)

float = 6.670
print("world", float)

foo = 0
print(type(int))
print(type(float))
print(type(foo))

print(isinstance(foo, str))
print(isinstance(int, float))
print(isinstance(float, float))


I don't know about shadowing. If I have defeated a whole variable type by naming a variable like a variable type, I would think it is a bad idea for python to allow this without warning. It seems like a recipie for creating chaos.
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to