如何使用可选参数调用 python 函数
How to call python function with optional parameters
我有以下功能:
def create(self, name, page=5, opt1=False, opt2=False,
opt3=False,
opt4=False,
opt5=False,
opt6=False,
*parameters):
是否可以只分配一个可选参数和一些*参数?例如
create('some name', opt4=True, 1, 2, 3) # I need 1, 2, 3 to be assigned to *parameters
大多数时候,我不需要更改 opt1...opt6 的值,我只需要更改其中一个,然后分配其他一些 *parameters
。所以我正在寻找一种方法来避免设置 opt1...opt6 如果我不想更改它们的默认值。
在 Python 3.x 中,尝试将 parameters
放在任何默认参数之前,例如 -
def create(self, name , *parameters, page=5, opt1=False,
opt2=False,opt3=False,
opt4=False,opt5=False,
opt6=False):
print(parameters)
print(page)
print(opt4)
In [31]: create('C', 'some name', 1, 2, 3, opt4 = True)
(1, 2, 3)
5
True
请理解,使用此方法,您只能使用命名参数调用具有默认值的参数。
对于 Python 2.x ,您可以尝试使用 *parameters
然后 **kwargs
作为默认参数 -
>>> def create(self, name, *parameters, **kwargs):
... kwargs.setdefault('opt4',False) #You will need to do for all such parameters.
... print(parameters)
... print(kwargs['opt4'])
...
>>> create('C', 'some name', 1, 2, 3, opt4 = True)
(1, 2, 3)
True
同样,设置 opt1...opt6
或 page
等值的唯一方法是使用命名参数。
嗯,这肯定不好,
但你或许可以处理这个
的变体
def create(name, page=5, opt1=False, opt2=False,
opt3=False,
opt4=False,
opt5=False,
opt6=False,
*parameters):
print(parameters)
print(page)
print(opt4)
myArgs = dict(zip(['page','opt1','opt2','opt3','opt4','opt5','opt6'],create.func_defaults))
myArgs['opt4']=True
create("MyName",**myArgs)
我有以下功能:
def create(self, name, page=5, opt1=False, opt2=False,
opt3=False,
opt4=False,
opt5=False,
opt6=False,
*parameters):
是否可以只分配一个可选参数和一些*参数?例如
create('some name', opt4=True, 1, 2, 3) # I need 1, 2, 3 to be assigned to *parameters
大多数时候,我不需要更改 opt1...opt6 的值,我只需要更改其中一个,然后分配其他一些 *parameters
。所以我正在寻找一种方法来避免设置 opt1...opt6 如果我不想更改它们的默认值。
在 Python 3.x 中,尝试将 parameters
放在任何默认参数之前,例如 -
def create(self, name , *parameters, page=5, opt1=False,
opt2=False,opt3=False,
opt4=False,opt5=False,
opt6=False):
print(parameters)
print(page)
print(opt4)
In [31]: create('C', 'some name', 1, 2, 3, opt4 = True)
(1, 2, 3)
5
True
请理解,使用此方法,您只能使用命名参数调用具有默认值的参数。
对于 Python 2.x ,您可以尝试使用 *parameters
然后 **kwargs
作为默认参数 -
>>> def create(self, name, *parameters, **kwargs):
... kwargs.setdefault('opt4',False) #You will need to do for all such parameters.
... print(parameters)
... print(kwargs['opt4'])
...
>>> create('C', 'some name', 1, 2, 3, opt4 = True)
(1, 2, 3)
True
同样,设置 opt1...opt6
或 page
等值的唯一方法是使用命名参数。
嗯,这肯定不好, 但你或许可以处理这个
的变体def create(name, page=5, opt1=False, opt2=False,
opt3=False,
opt4=False,
opt5=False,
opt6=False,
*parameters):
print(parameters)
print(page)
print(opt4)
myArgs = dict(zip(['page','opt1','opt2','opt3','opt4','opt5','opt6'],create.func_defaults))
myArgs['opt4']=True
create("MyName",**myArgs)