在调用函数时,函数中相同的 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它曾经引用的对象。