Python 如何有条件地传递不同的参数
我希望能够在满足条件时将参数更改为函数 目前我正在做这项工作,但我重复第一个论点,有没有办法改变第二个论点Python 如何有条件地传递不同的参数,python,Python,我希望能够在满足条件时将参数更改为函数 目前我正在做这项工作,但我重复第一个论点,有没有办法改变第二个论点 credential = './credentials.json' if os.path.exists(credential): account = authenticate(client_config=secrets, credentials=credential) else: account = authenticate(client_config=secrets, seri
credential = './credentials.json'
if os.path.exists(credential):
account = authenticate(client_config=secrets, credentials=credential)
else:
account = authenticate(client_config=secrets, serialize=credential)
优雅的方法是使用kwargs:
credential = './credentials.json'
key = "credentials" if os.path.exists(credentials) else "serialize"
auth_kwargs = {"client_config": secrets, key: credential}
account = authenticate(**auth_kwargs)
您可以将(未打包的)字典传递给函数:
credential = './credentials.json'
arguments = {'client_config': secrets, 'serialize': credential} # default
if os.path.exists(credentials):
arguments.pop('serialize')
arguments['credentials'] = credential
account = authenticate(**arguments)
我认为你的方式也很好,但你可以做到
credential='./credentials.json'
params={'serialize':凭证}
如果os.path.存在(凭据):
params['credentials']=params.pop('serialize')
帐户=身份验证(客户端配置=机密,**参数)
对于这一点,有以下几种方法:
from functools import partial
credential = './credentials.json'
auth = partial(authenticate, client_config=secrets)
if os.path.exists(credential):
account = auth(credentials=credential)
else:
account = auth(serialize=credential)
代码中有一个语法错误和一个小错误。首先,不要使用三个等号,第二,如果没有条件,你可以只做
,
是的,我修复了这个问题,还修改了它来检查文件是否存在,但我想避免使用其他条件,可能会做一些三元运算,只要在“凭证”中声明函数就行了请注意,这是一个打字错误?老实说,这些答案没有一个比您的代码短(在更复杂的情况下可能更短)。您没有使用键
…有点困惑。key
在哪里使用?@matiss抱歉,我忘了把它添加到dict中-已修复