[英]Python: pass dictionary variable as function argument
我正在重用另一位开发人员的一段代码(它是一个套接字侦听器),它具有以下 function:
def start_my_client(self, *, config: dict):
我是 Python 的新手,所以我假设它需要一个字典变量作为参数传递,所以我创建了这个变量:
config_dic = {'name': 'my_socket', 'hostname': 'test', 'description': 'TEST'}
但是,我在调用 function 时尝试了很多不同的方法来传递变量,但没有一种对我有用,例如:
def handle_messages(conn, addr):
conn.start_my_client(config=config_dic)
我没有收到来自 function 的任何信息。我也试过这个:
def handle_messages(conn, addr):
conn.start_my_client(**config_dic)
它抛出这个错误:
TypeError: start_my_client() got an unexpected keyword argument 'name'
关于如何传递变量的任何提示?
第一个电话看起来很合理
def handle_messages(conn, addr):
conn.start_my_client(config=config_dic)
output 对此有何期待?
如果你像那样传递 config_dic
def handle_messages(conn, addr):
conn.start_my_client(**config_dic)
你在这里执行解包 arguments。 这意味着方法 start_my_client 获取 arguments 的方式与您调用这样的方法的方式相同
conn.start_my_client(name='my_socket', hostname='test', description='TEST')
这就是你出错的原因
TypeError: start_my_client() got an unexpected keyword argument 'name'
start_my_client 不期望名为 name 的参数。
如中所述:
你使用的function可以收到几个不同的arguments:
def start_my_client(self, *, config: dict):
因此,调用时可能需要一个数字 arguments,如下所示:
conn.start_my_client(a, b, c)
至于:
,这个
只需指出传递的每个参数都应该是dicts
。
因此,您可以将 function 称为:
def handle_messages(conn, addr):
conn.start_my_client(config_dic)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.