在Python中,我们如何可能使用方法作为变量?
“sum”是如何在上述代码中用作变量的方法?Python有一个名称空间层次结构,它将用于解析名称。在函数中是局部变量、全局变量,然后是内置变量。在模块级,它只是全局的,然后是内置的。您可以为全局变量指定任何合法变量名,包括内置变量中的任何名称。globals中的“sum”隐藏了内置名称。根据在Python中,我们如何可能使用方法作为变量?,python,arrays,python-3.x,list,methods,Python,Arrays,Python 3.x,List,Methods,“sum”是如何在上述代码中用作变量的方法?Python有一个名称空间层次结构,它将用于解析名称。在函数中是局部变量、全局变量,然后是内置变量。在模块级,它只是全局的,然后是内置的。您可以为全局变量指定任何合法变量名,包括内置变量中的任何名称。globals中的“sum”隐藏了内置名称。根据内置函数中的名称测试每个全局变量赋值会很昂贵,而且也不可取-目前,如果愿意,您可以有目的地重写任何内置函数 当脚本运行时,“sum”不在globals中,因此它解析为内置函数 n=int(input(
内置函数
中的名称测试每个全局变量赋值会很昂贵,而且也不可取-目前,如果愿意,您可以有目的地重写任何内置函数
当脚本运行时,“sum”不在globals中,因此它解析为内置函数
n=int(input())
a=list(map(int,input().split()))
sum=a[0]
>>> "sum" in globals()
False
>>> sum
<built-in function sum>
>>> id(sum)
139891628989872
将其从globals中删除,您将再次获得先前隐藏的函数
>>> sum = "foo"
>>> sum
'foo'
>>> "sum" in globals()
True
>>del sum
>>>总数
>>>id(总和)
139891628989872
Python有一个名称空间层次结构,它将使用它来解析名称。在函数中是局部变量、全局变量,然后是内置变量。在模块级,它只是全局的,然后是内置的。您可以为全局变量指定任何合法变量名,包括内置变量中的任何名称。globals中的“sum”隐藏了内置名称。根据内置函数
中的名称测试每个全局变量赋值会很昂贵,而且也不可取-目前,如果愿意,您可以有目的地重写任何内置函数
当脚本运行时,“sum”不在globals中,因此它解析为内置函数
n=int(input())
a=list(map(int,input().split()))
sum=a[0]
>>> "sum" in globals()
False
>>> sum
<built-in function sum>
>>> id(sum)
139891628989872
将其从globals中删除,您将再次获得先前隐藏的函数
>>> sum = "foo"
>>> sum
'foo'
>>> "sum" in globals()
True
>>del sum
>>>总数
>>>id(总和)
139891628989872
您正在覆盖sum
的定义。如果随后尝试将其用作函数,例如sum(a)
,则会出现错误:“TypeError:“int”对象不可调用”您正在覆盖sum
的定义。如果随后尝试将其用作函数,例如,sum(a)
,则会出现错误:“TypeError:'int'对象不可调用”