Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中声明函数中的可选参数(mode)(非可选,mode=";bla-bla";)?_Python_Argument Passing_Function Declaration - Fatal编程技术网

如何在Python中声明函数中的可选参数(mode)(非可选,mode=";bla-bla";)?

如何在Python中声明函数中的可选参数(mode)(非可选,mode=";bla-bla";)?,python,argument-passing,function-declaration,Python,Argument Passing,Function Declaration,如何在函数中声明一个可选参数,该函数在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'

如何在函数中声明一个可选参数,该函数在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!

签出
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