14

Is it possible to define a function argument's default value to another argument in the same function definition? Something like:

def func(a, b=a):
  print a, b

but that didn't work.

jonrsharpe
  • 115,751
  • 26
  • 228
  • 437
Alex
  • 306
  • 2
  • 9
  • Why not assign `a` to `b` in the first line of the function? – McGlothlin Nov 04 '15 at 17:04
  • 3
    You can't do that, you need to do `b=None` then `if b is None: b = a`. See http://stackoverflow.com/q/4575326/3001761 (which you could have found trivially if you'd searched for this...) – jonrsharpe Nov 04 '15 at 17:04

1 Answers1

25

No. This is not possible. The Python interpreter thinks that you want to assign the default value of argument b to a global variable a when there isn't a global variable a.

You might want to try something like this:

def func(a, b=None):
    if b is None:
        b = a
Ethan Bierlein
  • 3,353
  • 4
  • 28
  • 42