python函数中可选参数的命名实践
在python函数中为可选参数指定与外部变量相同的名称可以吗? 它似乎工作得很好,因为下面定义的函数f和g给出了相同的输出。然而,这种做法是否被视为不好的做法,在某些情况下是否会失败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 它会起作用,但我认为许多人会阻止它,因为它很容易令人困惑 编程工作的一半是获得有效的代码。另一半是编写清
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有它们。如果要将变量传递给它,它怎么会失败?