关键字不能是表达式

时间:2018-03-18 06:49:05

标签: python

我有这段代码:

class mydict():

  def __init__(self, dict, **kwargv):
    for key, item in dict.items():
      print key, item

    for key, item in kwargv.items():
      print key, item

test_dic = {1:'I', 2:'love'}
dic = mydict(test_dic, 3='python')

如果我将mydict(test_dic, name='python')设置为有效,但如果它是int,则会出现以下错误:

  

关键字不能是表达式

有人能解释一下这背后的过程吗?

3 个答案:

答案 0 :(得分:4)

3

是所谓的关键字参数。在这种情况下,关键字是ImageDataGenerator。但关键字必须是有效的标识符。 Valid identifiers是:

  

大写和小写字母A到Z,下划线_和除第一个字符外,数字0到9

答案 1 :(得分:0)

变量名不能以数字开头,而kwargs输入必须是有效的变量名

答案 2 :(得分:0)

在Python中,关键字参数名称(如参数名称)必须是标识符 - 与变量名称,函数名称等的规则相同。

这在教程中没有真正解释过。它在the reference中被精确描述,但这并不是新手友好的。

无论如何,这意味着简写dict(key1=value1, key2=value2)不适用于所有词典,只是字典,其键是有效标识符的字符串。当然,您可以像使用test_dic一样使用字典显示。

这通常出现在更高级的代码中,您尝试调用类似func(**test_dic)的内容,它会扩展为等同于func(1='I', 2='love'),并且会给您一个非常神秘的错误,所以...很高兴你跑了在此之前,它更容易理解。