如何在不需要 =True 的情况下使用 kwargs 作为标志?
How do I use kwargs as flags without needing =True?
我正在开发一个 python 模块,它可以获取 downloads/updates 然后自动安装其他模块。对于 "flags" 系统,我如何在不需要 =True 的情况下使用 **kwargs(或替代方案)?
总的来说,我不是很有经验,所以我不确定在这里做什么
目前,要使静默标志起作用,它必须如下所示:
pyup.imp(["psutil","shutil","os","sys","pyinstaller"],silent=True)
但我希望调用函数看起来像这样:
pyup.imp(["psutil","shutil","os","sys","pyinstaller"],silent)
函数本身看起来像这样(在 pyup.py 中):
def imp(libs = [], *args, **kwargs):
其中 libs[] 是包含所需库的数组。
如何使函数调用不需要“=True”?
如果我们这样定义一个函数,你不能:
def imp(libs = [], *args, **kwargs):
但是如果你这样定义函数,你可以:
def imp(libs = [], silent = True, *args, **kwargs):
事实上,正如您发布的那样,您可以毫无问题地使用此 运行:
silent = True
imp(["psutils", ...], silent)
只有在函数内部,kwargs
永远不会有键 silent
,因为它由另一个参数持有。
如果您想将一系列字符串标志传递给您的函数(就像它是一个终端应用程序一样),您可以通过 *args
.
将它们作为未命名的位置参数传递
def imp(libs=[], *args):
silent = '--silent' in args
# somewhere else
imp([...], '--silent')
我正在开发一个 python 模块,它可以获取 downloads/updates 然后自动安装其他模块。对于 "flags" 系统,我如何在不需要 =True 的情况下使用 **kwargs(或替代方案)?
总的来说,我不是很有经验,所以我不确定在这里做什么
目前,要使静默标志起作用,它必须如下所示:
pyup.imp(["psutil","shutil","os","sys","pyinstaller"],silent=True)
但我希望调用函数看起来像这样:
pyup.imp(["psutil","shutil","os","sys","pyinstaller"],silent)
函数本身看起来像这样(在 pyup.py 中):
def imp(libs = [], *args, **kwargs):
其中 libs[] 是包含所需库的数组。
如何使函数调用不需要“=True”?
如果我们这样定义一个函数,你不能:
def imp(libs = [], *args, **kwargs):
但是如果你这样定义函数,你可以:
def imp(libs = [], silent = True, *args, **kwargs):
事实上,正如您发布的那样,您可以毫无问题地使用此 运行:
silent = True
imp(["psutils", ...], silent)
只有在函数内部,kwargs
永远不会有键 silent
,因为它由另一个参数持有。
如果您想将一系列字符串标志传递给您的函数(就像它是一个终端应用程序一样),您可以通过 *args
.
def imp(libs=[], *args):
silent = '--silent' in args
# somewhere else
imp([...], '--silent')