Str已经被定义为全局变量

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'的变量充当全局变量?

Luc*_*Luc 5

在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)

  • 小点,但是`str()`不是用于转换的函数.它是`str`对象的构造函数. (4认同)