Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python函数中可选参数的命名实践_Python_Function_Variables_Optional Arguments - Fatal编程技术网

python函数中可选参数的命名实践

python函数中可选参数的命名实践,python,function,variables,optional-arguments,Python,Function,Variables,Optional Arguments,在python函数中为可选参数指定与外部变量相同的名称可以吗? 它似乎工作得很好,因为下面定义的函数f和g给出了相同的输出。然而,这种做法是否被视为不好的做法,在某些情况下是否会失败 a = 1 def f(x,A=a): return x*A def g(x,a=a): return x*a print g(2) >> 2 print g(2,a=2) >> 4 它会起作用,但我认为许多人会阻止它,因为它很容易令人困惑 编程工作的一半是获得有效的代码。另一半是编写清

在python函数中为可选参数指定与外部变量相同的名称可以吗? 它似乎工作得很好,因为下面定义的函数f和g给出了相同的输出。然而,这种做法是否被视为不好的做法,在某些情况下是否会失败

a = 1
def f(x,A=a): return x*A
def g(x,a=a): return x*a

print g(2)
>> 2
print g(2,a=2)
>> 4

它会起作用,但我认为许多人会阻止它,因为它很容易令人困惑


编程工作的一半是获得有效的代码。另一半是编写清晰明了的代码,以便您或其他人在一年后能够理解它。

如果您想将变量传递给它,它将失败


但最好的命名实践是,函数和变量不被称为a、f、g、x。这样就不太可能发生碰撞。

它会起作用,尽管它很容易让人困惑,但它是完全有效的。这是因为函数和对函数的调用发生在不同的名称空间中。所以如果你写:

def some_function(var1,var2=somevalue):  #var1 & var2 of functions namespace
    some things happening here

var1 = somevalue #mainspace var1
var2 = somevalue #mainspace var2
some_function(var1,var2=var2) 
#upper line: first var2 = from function, second var2 = from mainspace 
它可以工作,因为主命名空间中的var1与函数命名空间中的var1是完全不同的变量。somefunction的调用将如图所示工作,即使您在一行中使用var2两次。但是,正如你在解释过程中所看到的困难,这样做会引起一些混乱,所以如果可以的话,最好跳过类似的事情。python相对于其他一些语言的主要优势之一是可读性,您应该通过自己的编码风格来支持它


命名变量a和其他变量a也是应该避免的。阅读python中的命名约定:www.python.org/doc/articles/styleguide.html,阅读名称空间:停止使用python中的单词variable

在内存块的意义上,没有任何变量的值可以改变

使用变量作为标识符或名称的同义词令人困惑


拜托

你把可选参数称为什么?A还是A?请!停止坚持使用单词variable表示内存块。它表示一个名称,其值可以随时间变化。Python有它们。如果要将变量传递给它,它怎么会失败?