Function 命名参数是否与传递给它们的变量相同?

Function 命名参数是否与传递给它们的变量相同?,function,variables,parameters,language-agnostic,Function,Variables,Parameters,Language Agnostic,如果我将函数的参数命名为与传递给它们的变量相同的参数,那么是否有任何规则(或者会遇到任何问题)? 例如,在Python中: def foo(param): pass param = 2 foo(param) 在我所做的相当有限的编程中,我在这样做时没有遇到任何问题。我会在某些语言中遇到问题吗?这样做可以吗,还是应该避免这种做法?这种特殊情况下的“问题”是函数参数名称将覆盖外部参数变量;i、 e.您不能(隐式)再引用全局param,因为在您的函数中param被定义为局部变量 但是,这

如果我将函数的参数命名为与传递给它们的变量相同的参数,那么是否有任何规则(或者会遇到任何问题)? 例如,在Python中:

def foo(param):
    pass

param = 2

foo(param)
在我所做的相当有限的编程中,我在这样做时没有遇到任何问题。我会在某些语言中遇到问题吗?这样做可以吗,还是应该避免这种做法?

这种特殊情况下的“问题”是函数参数名称将覆盖外部
参数
变量;i、 e.您不能(隐式)再引用全局
param
,因为在您的函数中
param
被定义为局部变量

但是,这确实是应该的。您的函数应该只关心它在本地声明的参数,而不关心隐式全局变量。相反,函数的调用方不必担心函数内部发生的任何事情。将变量命名为函数的参数对调用方没有影响,对函数本身也没有影响

因此,不,这里绝对没有问题。

在这种特殊情况下的“问题”是函数参数名称将隐藏外部
参数
变量;i、 e.您不能(隐式)再引用全局
param
,因为在您的函数中
param
被定义为局部变量

但是,这确实是应该的。您的函数应该只关心它在本地声明的参数,而不关心隐式全局变量。相反,函数的调用方不必担心函数内部发生的任何事情。将变量命名为函数的参数对调用方没有影响,对函数本身也没有影响

所以,不,这里绝对没有问题