gpt4 book ai didi

python - 仅传递函数参数(如果存在)

转载 作者:行者123 更新时间:2023-12-01 07:28:28 24 4
gpt4 key购买 nike

我的 python3 类函数定义如下:

class class1:
def funcOne(self, reqvar1, reqVar2, optVar1=default1, optVar2=default2, optVar3="server.domain", optVar4="defaultUser", optVar5="<default_Flags>"):

它在主程序中被调用(我想这样调用它),例如:

argsIn=argparser.parse_args()

classInst=class1()
classInst.funcOne(5, 12, argsIn.inVal1, argsIn.inVal2, argsIn.inVal3, argsIn.inVal4, argsIn.inVal5)

args.inVal[1-5] 在运行时命令行上是可选的。如果没有提供它们,我希望类函数使用默认值,如果确实提供了它们,那么它们将使用提供的值。

目前,如果命令行上未提供它们,则 inVal[1-5] 将作为“无”传递,从而覆盖实际的默认值。

类函数是单独维护的,它们管理默认值。将它们放入我的脚本中(例如在 argparser 选项中)是不合适的。

有没有一种方法可以轻松地处理这种情况,而无需求助于:

if args.inVal1 and not args.inVal2...
if not args.inVal1 and args.inVal2 and not args.inVal3...

随着组合数量变大。

看起来应该很简单,但我没有在这里连接任何东西。

感谢您的帮助。

最佳答案

如果您创建包含可选变量名称的字典,则可以将该字典传递给函数调用。我只是注释掉了 argparser 进行测试。

class class1:
def funcOne(self, reqvar1, reqVar2, optVar1='default1', optVar2='default2', optVar3="server.domain", optVar4="defaultUser", optVar5="<default_Flags>"):
print(optVar1)
print(optVar2)
print(optVar3)
print(optVar4)
print(optVar5)

#argsIn=argparser.parse_args()

optionalArgs = {'optVar1': 'TestingVar1', #args.inVal1,
'optVar2': None, #args.inVal2,
'optVar3': 'TestingVar3', #args.inVal3,
'optVar4': None, #args.inVal4,
'optVar5': None} #args.inVal5}
optionalArgsClean = {k:v for k, v in optionalArgs.items() if v is not None}

classInst=class1()
classInst.funcOne(5, 12, **optionalArgsClean)

运行上面的代码会产生:

TestingVar1
default2
TestingVar3
defaultUser
<default_Flags>

关于python - 仅传递函数参数(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57329127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com