为什么模块名称中的连字符会产生语法错误?
我使用的是 python 2.6,并在导入模块时得到以下信息:
File "./test-nmea-uploader.py", line 11
import nmea-uploader as sut
^
SyntaxError: invalid syntax
为什么会这样? python 风格指南似乎没有提及在名称中使用连字符,尽管它建议使用下划线。
艾伦
I'm using python 2.6 and get the following when importing a module:
File "./test-nmea-uploader.py", line 11
import nmea-uploader as sut
^
SyntaxError: invalid syntax
Why is that so? The python style guide seems to hold no mention about using hyphens in names, although it suggest the use of underscores.
Alan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
根据 http://docs.python.org/reference/lexical_analysis.html#identifiers,任何标识符必须以小写/大写字母或下划线开头,并且包含小写/大写字母、数字或下划线。
包名称是标识符,因此它们绑定到相同的规则。
另外,
nmea-uploader
也可能意味着从nmea
中减去uploader
。由于您可以在 python 文件中的任何位置导入包,因此如果您提前定义了变量
nmea
和uploader
,如果允许使用连字符作为标识符,解释器会感到困惑名称。According to http://docs.python.org/reference/lexical_analysis.html#identifiers, any identifier must start with a lowercase/uppercase letter or an underscore and contain lowercase/uppercase letters, numbers or an underscore.
Package names are identifiers, so they are bound to the same rules.
In addition,
nmea-uploader
might also mean the subtraction ofuploader
fromnmea
.Since you can import a package anywhere in a python file, if you have defined the variables
nmea
anduploader
in advance, the interpreter would get confused if a hyphen was allowed for identifier names.标识符不能包含连字符。这不是风格问题,而是语言语法的一部分,请参见 http://docs.python.org /reference/lexical_analysis.html#identifiers
Identifiers cannot contain hyphens. This is not a question of style, but a part of the language syntax, see http://docs.python.org/reference/lexical_analysis.html#identifiers
字符
-
是 python 中的运算符,因此不能在标识符中使用它。请参阅词法分析 - Python v2.7.2 文档。
The character
-
is an operator in python so you can't use it in an identifier.See Lexical analysis — Python v2.7.2 documentation.
,因为 python 样式指南 与确定代码中的错误 完全无关。
样式指南建议您应该使用什么。要确定您可以使用什么,请查阅语言语法或其他此类文档。
Because the python style guide is totally irrelevant to determining what is an error in your code or not.
The style guide suggests what you should use. To determine what you may use, consult the language grammar, or other such documentation.