在python函数中调用参数作为函数定义的一部分?

Zac*_*ach 1 python arguments function

如何在函数定义中的函数输入中传递参数?

例如:

def correlate1(vara1, vara2=vara1*2):
    print "test"
Run Code Online (Sandbox Code Playgroud)

返回:

Traceback (most recent call last):
  File "test.py", line 321, in <module>
    def correlate1(vara1, vara2=vara*2):
NameError: name 'vara1' is not defined
Run Code Online (Sandbox Code Playgroud)

显然,你可以这样做:

    def correlate1(vara1, vara2=0):
        if vara2==0:
            var2=vara1*2        
        print "test"
Run Code Online (Sandbox Code Playgroud)

但有没有办法在函数定义中做到这一点?

Ble*_*der 7

只需在调用函数后设置它:

def correlate1(vara1, vara2=None):
    vara2 = 2 * vara1 if vara2 is None else vara2

    print "test"
Run Code Online (Sandbox Code Playgroud)

甚至更简单:

def correlate2(var1, var2=None):
    var2 = var2 or var1 * 2
    print "test"
Run Code Online (Sandbox Code Playgroud)

var2默认值表达式不能包含,var1因为var1在调用函数之前不存在.

  • +1因为这个答案使用None而不是提问者提到的0,表示应该使用vara2的'默认解释'.这很重要,因为vara2应该是一个数值,因此当用vara2 = 0调用时,这实际上可能是预期的值. (2认同)