简体   繁体   中英

Python optional function argument to default to another argument's value

I want to define a function with some optional arguments, let's say A (mandatory) and B (optional). When B is not given, I want it to take the same value as A. How could I do that?

I have tried this, but it doesn't work (name 'B' is not defined):

def foo(A, B=A):
    do_something()

I understand that the values of the arguments are not assigned before the body of the function.

You shall do this inside of your function.

Taking your original function:

def foo(A, B=A):
    do_something()

try something like:

def foo(A, B=None):
    if B is None:
        B = A
    do_something()

Important thing is, that function default values for function arguments are given at the time, the function is defined.

When you call the function with some value for A , it is too late as the B default value was already assigned and lives in function definition.

You could do it like this. If B has a value of None then assign it from A

def foo(A, B=None):
    if B is None:
        B = A

    print 'A = %r' % A
    print 'B = %r' % B

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM