Как объявить необязательный аргумент (mode) в функции (non_optional, mode=»bla bla») в Python?

#python #argument-passing #function-declaration

#python #передача аргумента #объявление функции

Вопрос:

Как объявить необязательный аргумент в функции, которая принимает по крайней мере 1 реальный (необязательный) аргумент в Python?

Вот пример:

 def myfunc(data, mode='never_mind'):
    if mode == 'never_mind:
        return 
    elif mode == 'print':
        print "Input data:", data
        # do something with data...
    elif mode == 'sqrt':
        print "%f is a square root of %f (input data)" % (data ** 0.5, data)
    else:
        print "Invalid input mode."

# I want to declare a new function as myfunc() with predeclared mode='sqrt' (for example).
# How can I do it?

new_func = myfunc
new_func.mode = 'sqrt'            # it doesn't work!

# or...

new_func = myfunc(mode='sqrt')    # it doesn't work either!
  

Ответ №1:

Оформить functools.partial покупку.

 In [1]: from functools import partial

In [2]: def f(a, b="b"):
   ...:     print(a, b)
   ...:     

In [3]: g = partial(f, b="c")

In [4]: g("a")
a c