如何在Python中以整数作为关键字进行参数传递?
问题描述
编写了如下代码,当传入字符或字符串作为关键字参数名时运行正常:
def myfunc(**num): for i in num: print(i, num[i]) myfunc(a="One", b="Two")
但尝试传入整数作为关键字参数名(如执行myfunc(1="One", 2="Two"))时,出现语法错误:
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
请问该如何解决这个问题?
解决办法
这是因为Python语法规定,关键字参数的名称必须是合法的标识符,而纯数字(如1、2)不符合标识符命名规则——标识符必须以字母、下划线开头,不能直接用数字或特殊字符。
有两种可行的解决方式:
- 改用符合规则的参数名,比如给数字添加前缀:
myfunc(n1="One", n2="Two")
函数内部遍历num时,键会是"n1"、"n2",可以正常输出。
- 如果必须保留整数作为键,不要直接传关键字参数,先创建字典再通过解包传递:
num_dict = {1: "One", 2: "Two"} myfunc(**num_dict)
这种方式绕开了关键字参数名的语法限制,函数内部能正常遍历整数键并输出对应值。
内容的提问来源于stack exchange,提问作者Giorgos
相关产品推荐
相关产品推荐

