在调用函数时,函数中相同的 function_name 和 parameter_name 会造成障碍!谁能解释发生了什么事?
while calling the function, the same function_name and parameter_name in function creates obstruct! Can anyone explain whats happening?
#In simple form
def name(name):
print(name)
name='arjun'
name(name) #In this line, what's happening?
#Error 'str' object is not callable
函数和其他对象没有单独的命名空间。如果你写
def name1(name2):
print(name2)
您创建类型 function
的实例,然后将该实例分配给名称 name1
。 (def
语句只是一种非常奇特的赋值语句。)
参数名是局部变量,属于函数定义的作用域,不属于函数定义的作用域。这意味着您可以重复使用该名称,但不建议这样做,因为它可能会造成混淆。
belongs to the scope in which the function is defined
|
| +--- belongs to the scope inside the function
| |
v v
def name(name):
print(name)
但是,下面的赋值
name = 'arjun'
是在与函数定义相同的范围内,所以这使得name
引用一个str
对象而不是function
它曾经引用的对象。
#In simple form
def name(name):
print(name)
name='arjun'
name(name) #In this line, what's happening?
#Error 'str' object is not callable
函数和其他对象没有单独的命名空间。如果你写
def name1(name2):
print(name2)
您创建类型 function
的实例,然后将该实例分配给名称 name1
。 (def
语句只是一种非常奇特的赋值语句。)
参数名是局部变量,属于函数定义的作用域,不属于函数定义的作用域。这意味着您可以重复使用该名称,但不建议这样做,因为它可能会造成混淆。
belongs to the scope in which the function is defined
|
| +--- belongs to the scope inside the function
| |
v v
def name(name):
print(name)
但是,下面的赋值
name = 'arjun'
是在与函数定义相同的范围内,所以这使得name
引用一个str
对象而不是function
它曾经引用的对象。