python - 如何将可选的python参数传递给带有可选参数的子函数
问题描述
给定一个带有可选参数的简单 Python 函数,例如:
def wait(seconds=3):
time.sleep(seconds)
如何创建一个调用它并传递可选参数的函数?例如,这不起作用:
def do_and_wait(message, seconds=None):
print(message)
wait(seconds)
注意:我希望能够wait
使用可选seconds
参数从其他函数调用,而不必知道seconds
底层wait
函数中的当前默认值并将其复制到调用它的每个其他函数。
如上所述,如果我使用可选参数调用它,do_and_wait(2)
那么它可以工作,但试图依赖wait
's 默认值,例如调用它do_and_wait()
会导致 TypeError,因为在wait
秒内 == None。
有没有一种简单而干净的方法来完成这项工作?我知道我可以像这样滥用 kwargs:
def do_and_wait(message, **kwargs):
print(message)
wait(**kwargs)
但是这个函数的读者和用户似乎不清楚,因为参数上没有有用的名称。
注意:这是一个愚蠢的简化示例。
解决方案
我认为您没有完全解释您的问题,因为我不希望答案会这么简单,但我只会在 do_and_wait() 中使用与 wait() 相同的默认值(和数据类型),像这样:
def do_and_wait(message, seconds=3):
print(message)
wait(seconds)
推荐阅读
- javascript - 根据父级中div的位置滚动父级div溢出
- javascript - 有没有办法让客户端应用程序与没有设置 CORS 的服务器一起工作
- saml - 如何解决 SAML 响应错误无效名称 ID 策略
- nginx - Nginx 忽略尾随斜杠,如果丢失不重定向
- javascript - 使用 exceljs 将多行写入工作簿中的多个工作表时没有写入任何内容
- amazon-sqs - 具有 SQS 扇出模式的 AWS X-ray
- python - 如何从 .py 文件更改 .kv 文件中 TextInput 框的提示文本
- ruby - 处理 sinatra 中的数据库错误
- c++ - 为什么 make_shared 不能构造这个对象?
- azure - asp.net web api 应用程序的内存转储分析显示缓存相关对象消耗内存