说我有一个功能:
def NewFunction():
return '£'
Run Code Online (Sandbox Code Playgroud)
我想在它前面打一些带有井号的东西,当我尝试运行这个程序时它会输出错误,显示以下错误信息:
SyntaxError: Non-ASCII character '\xa3' in file 'blah' but no encoding declared;
see http://www.python.org/peps/pep-0263.html for details
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何在返回功能中加入英镑符号?我基本上是在课堂上使用它,它'__str__'包含在包含英镑符号的部分内.
PEP 263定义了如何声明Python源代码编码.
通常,Python文件的前两行应该以:
#!/usr/bin/python
# -*- coding: <encoding name> -*-
Run Code Online (Sandbox Code Playgroud)
但我看到很多文件以:
#!/usr/bin/python
# -*- encoding: <encoding name> -*-
Run Code Online (Sandbox Code Playgroud)
=> 编码而不是编码.
那么声明文件编码的正确方法是什么?
是否允许编码,因为使用的正则表达式是懒惰的?或者它只是声明文件编码的另一种形式?
我问这个问题是因为PEP没有谈论编码,它只是谈论编码.
我还在学习python,我有一个疑问:
在python 2.6.x中,我通常在文件头中声明编码,如下所示(如PEP 0263)
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
在那之后,我的字符串像往常一样写:
a = "A normal string without declared Unicode"
Run Code Online (Sandbox Code Playgroud)
但每次我看到python项目代码时,都不会在标题处声明编码.相反,它在每个字符串声明如下:
a = u"A string with declared Unicode"
Run Code Online (Sandbox Code Playgroud)
有什么不同?这是为了什么目的?我知道Python 2.6.x默认设置ASCII编码,但它可以被头声明覆盖,那么每个字符串声明的重点是什么?
附录:似乎我已将文件编码与字符串编码混合在一起.谢谢你解释:)