我从饼干里找到两条线
name = 'rack.session'
val = 'CookieVal'
我想用它们编一本字典
cookies = dict(rack.session=val)
但是SyntaxError: keyword can't be an expression
所以我试着逃离那个点
re.escape(name)
。。。但它也引发了同样的错误
这怎么可能?根据Pythontype()
,name是一个字符串:
type(name)
<class 'str'>
为什么Python会混淆字符串和表达式?
Tags:
rack.session
的问题是,python认为您试图使用表达式的值rack.session
并将其传递给dict()
,这是不正确的,因为dict()
希望您在使用关键字参数时传递变量名,然后在创建dict时将这些变量名转换为字符串。简单示例:
因此,不能使用
=
左侧的对象,只能使用有效的标识符。字节码使
rack.session
的情况更加清楚:因此,对于
rack.session = val
,python会认为您试图使用从rack.session
返回的值并将其传递给dict
,这是不正确的。其次,rack.session
不是有效的标识符,因为在python标识符中不允许使用点(.
)。这适用于python中的任何函数,甚至不适用于
dict
,关键字参数必须是有效的标识符。从docs:
有效示例:
例如,您可以简单地执行以下操作:
至于“为什么Python会混淆字符串和表达式?”,不是。我不知道你为什么认为python会这么做。你把字符串和变量混为一谈,这是完全不同的。
相关问题 更多 >
编程相关推荐