无法在 Python 中重载函数让我开始研究*args
并将**kwargs
未定义数量的参数和变量定义传递给被调用函数。我试图将这个概念应用到一个简单的函数中,该函数使用分隔符将参数打印到屏幕上(并且暂时没有围绕所有内容的讨厌的“”)。您可以在该帖子的末尾找到代码片段。
我的问题是我不知道将 kwargs 的值实际分配给它们各自的参数 OUTSIDE CLASSES 的正确方法。如果我想使用setattr
它接受 3 个参数 ( setatt(self, key, value)
),当然,当我尝试只传递一个键和一个值时,它总是会给我一个错误。是否有适当的方法为类外的全局函数的参数赋值?
我希望你能为我扫清天空。
这是我想通过寻找替代方法来工作的不工作代码示例setattr(self, key, value)
:
import sys
def printAll(*args, **kwargs):
sep = ""
for key, value in kwargs.items():
setattr(key, value)
for arg in args:
sys.stdout.write(str(arg))
sys.stdout.write(sep)
nr = 9876543210
printAll("How many", "arguments", " I want", nr, sep='-')
编辑:好的,这是在阅读@Martijn Pieters 和@Fabian 的答案后更新和工作的示例函数:
def printAll(*args, **kwargs):
# use sep = 'value' to define a seperator or use the default one
sep = kwargs.get('sep')
if sep is None:
sep = ""
for arg in args:
sys.stdout.write(str(arg))
sys.stdout.write(sep)