Hug*_*eer 1 python string variables global
我在使用函数时发现了一些非常奇怪的东西.看起来变量名'str'已经被定义为全局变量.看一看:
def Example(x):
str = input()
return str
print (Example(str))
#When typing 'Hello!' Output --> Hello!
Run Code Online (Sandbox Code Playgroud)
变量str在函数Example中定义.那么为什么没有NameError:名称'str'没有定义?
当我调用变量x或其他东西时(在本例中为'bar'):
def Example(x):
bar = input()
return bar
print (Example(bar))
#Output: NameError: name 'bar'is not defined
Run Code Online (Sandbox Code Playgroud)
为什么名为'str'的变量充当全局变量?
在python中,str()是字符串构造函数.它用于将对象强制转换为字符串.
您可以在本地使用它,但它将覆盖对该功能的访问.您将无法再使用str().
供参考:https: //docs.python.org/2/library/functions.html#str
class str(object ='')
返回一个包含对象的可打印表示的字符串.对于字符串,这将返回字符串本身.与repr(object)的区别在于str(object)并不总是尝试返回eval()可接受的字符串; 它的目标是返回一个可打印的字符串.如果没有给出参数,则返回空字符串''.
出于一般知识的目的,如果删除变量,可以返回构造函数.例如:
test = 1
str(test)
>>>'1'
str = 2
str(test)
>>>TypeError: 'int' object is not callable
del str
str(test)
>>>'1'
Run Code Online (Sandbox Code Playgroud)