当我试图创造这个
self.cmds = {
'help' : self.cmdsHelp,
'write-start' : self.startWriter,
'write' : self.writeTo,
'read-start' : self.startReader,
'read' : self.readFrom
}
使用内置的dict()
函数。。。i、 e
self.cmds = dict(
help = self.cmdsHelp,
write-start = self.startWriter,
write = self.writeTo,
read-start = self.startReader,
read = self.readFrom
)
。。。我得到这个错误:
write-start = self.startWriter,
^
SyntaxError: keyword can't be an expression
带花括号({}
)的字典——不管是什么特别的名字——都能用,但我不明白为什么“新版本”(即dict()
形式)不能用。有什么我不知道的吗,还是你只需要用大括号?你知道吗
字典中的每个值都是一个函数(是的,我确实删除了self.
,而且我还尝试了self.function()
和function()
,因此当我调用它时,我不必执行self.cmds[<input>]()
,而是可以执行self.cmds[<input>]
)
关键字参数必须是valid python identifiers。不能在有效标识符中使用
-
(而是尝试减去两个标识符)。dict()
只是一个可调用函数,传递给它的关键字参数也不例外。你知道吗改用
{}
文字dict语法:因为这样就可以使用任何有效的不可变哈希值作为键。你知道吗
或者,使用有效的标识符;将
-
替换为_
,这是标识符中允许的字符:任何其他替代方法都会很快变得难看;您可以使用dict literal语法生成
**kwargs
双splat关键字参数映射:但这已经不可读了,是吗。你知道吗
您可以在以下情况之后设置这些非标识符键:
但那更难看。你知道吗
注意,字典显示(official term for the syntax)对于解释器来说比
dict()
调用更快,因为用于构建一个字典的字节码指令更少,而且不涉及函数调用。你知道吗相关问题 更多 >
编程相关推荐