gpt4 book ai didi

python - 从 optparse 传递可选参数

转载 作者:行者123 更新时间:2023-12-01 05:57:56 25 4
gpt4 key购买 nike

我试图弄清楚如何从 optparse 传递可选参数。我遇到的问题是,如果未指定 optparse 选项,它默认为 None 类型,但如果我将 None 类型传递到函数中,它会对我大喊大叫,而不是使用默认值(这是可以理解且有效的)。

conn = psycopg2.connect(database=options.db, hostname=options.hostname, port=options.port)

问题是,如何使用函数的默认值作为可选参数,但如果有输入而不需要大量 if 语句,仍然传入用户输入。

最佳答案

定义一个函数remove_none_values,用于过滤字典中的无值参数。

def remove_none_values(d):
return dict((k,v) for (k,v) in d.iteritems() if not v is None)

kwargs = {
'database': options.db,
'hostname': options.hostname,
...
}
conn = psycopg2.connect(**remove_none_values(kwargs))

或者,定义一个函数包装器,在将数据传递给原始函数之前不删除任何值。

def ignore_none_valued_kwargs(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
newkwargs = dict((k,v) for (k,v) in d.iteritems() if not v is None)
return f(*args, **kwargs)
return wrapper

my_connect = ignore_none_valued_kwargs(psycopg2)
conn = my_connect(database=options.db, hostname=options.hostname, port=options.port)

关于python - 从 optparse 传递可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11661246/

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