Is there a way to pass optional parameters to a function?
在python中是否有一种方法可以在调用函数时将可选参数传递给函数,并且在函数定义中有一些基于"仅当传递可选参数时"的代码?
在Python文档2、7.6。函数的定义方式来给你a几A检测是否来电提供的选择参数。
第一,你可以使用特殊的语法
例如,这是一个函数的参数是一个
1 2 3 4 5 6 7 8 9 10 11 12 | >>> def opt_fun(x1, x2, *positional_parameters, **keyword_parameters): ... if ('optional' in keyword_parameters): ... print 'optional parameter found, it is ', keyword_parameters['optional'] ... else: ... print 'no optional parameter, sorry' ... >>> opt_fun(1, 2) no optional parameter, sorry >>> opt_fun(1,2, optional="yes") optional parameter found, it is yes >>> opt_fun(1,2, another="yes") no optional parameter, sorry |
第二,你可以供应一个默认的参数值和价值这一样
1 2 | def my_func(mandatory_arg, optional_arg=100): print mandatory_arg, optional_arg |
docs.python.org http:/ / / / / 2 controlflow.html #教程默认参数值
我觉得这比使用
如果传递的参数是确定的,在所有,我使用自定义对象,默认值为:效用
1 2 3 4 5 | MISSING = object() def func(arg=MISSING): if arg is MISSING: ... |
1 2 3 4 5 6 7 8 9 | def op(a=4,b=6): add = a+b print add i)op() [o/p: will be (4+6)=10] ii)op(99) [o/p: will be (99+6)=105] iii)op(1,1) [o/p: will be (1+1)=2] Note: If none or one parameter is passed the default passed parameter will be considered for the function. |
如果你想给一个参数赋值的一些默认值(价值)。样(X = 10)。但重要的是要充分的论据,然后第一默认值。
EC。
(y,x = 10)
但
(X = 10,y)是错的
你可以指定一个可选参数的默认值为东西不会传递到函数和检查它与
1 2 3 4 5 6 7 8 9 | class _NO_DEFAULT: def __repr__(self):return"<no default>" _NO_DEFAULT = _NO_DEFAULT() def func(optional= _NO_DEFAULT): if optional is _NO_DEFAULT: print("the optional argument was not passed") else: print("the optional argument was:",optional) |
那么只要你做你需要做的
1 2 3 4 5 6 7 8 9 | # these two work the same as using ** func() func(optional=1) # the optional argument can be positional or keyword unlike using ** func(1) #this correctly raises an error where as it would need to be explicitly checked when using ** func(invalid_arg=7) |