Python3 首行还有必要加编码注释吗?
最近在帮日本写个项目,快结项了,他们要求全部 py 文件头加上:# -- coding: utf-8 -- 。。。。。。 我没解释,直接就苦逼慢慢改了。
我理解他们对编码的严谨,但是都 python3 了,,,这有必要吗?我觉得是多余的。你们觉得呢?
Python3 首行还有必要加编码注释吗?
现在Python3默认就是UTF-8编码,所以# -*- coding: utf-8 -*-这行基本可以省了。除非你项目里有些老文件还在用Python2的写法,或者你非要用个什么奇怪的编码(比如gbk),那可能还得留着。但新项目直接不写就行,更干净。
总结:新项目不用加,保持代码简洁。
编码严谨 711 不服
就算是 copy 不也得一个个文件 copy 吗
正常人都知道用 copy,但是文件很多啊,而且我心里是不平衡的,因为我认为是没必要的。
这个不是自动加就好了么…
当然你不需要 Python2 上跑是没什么必要
。。和一楼相同的疑问
有必要,因为我前几天就遇到过没加编码导致在另一台服务器上输出和注释全部乱码,你永远不知道自己的程序会被放在什么奇怪的环境下运行
用 py2 写个首行自动加的脚本不就得了(手动狗头)
这不是有些坑逼会要求 py2/py3 兼容么…
我的话,用 sed 对某个文件夹下的所有.py 文件首行添加就行了,还可以加判断是否包含这句=。=
咋说呢,人家是甲方,他爱咋搞咋搞=。=习惯就好了
一行命令直接加上的事
额,各位 v 友,其实我的问题重点在,有没有必要加,,,我知道可以自动加编码注释,我是故意取消的,我知道我在用的是 python3。不是加的难度,是有没有必要。
有必要啊,,你永远不知道你的代码会被放在什么环境下运行
有没有必要是甲方决定的, 不是你决定的
没必要,爸爸说了之后,这就是个需求了,你觉得他们需求都有必要吗?
指定编码和不指定编码,源文件内容是两个不同的编码,这和 py2 或者 py3 没有什么关系。
对于我自己的项目,如果文件内部有非 ASCII 字符,我会加上。
退一步考虑,就算 Python 3 解释器不关心它,有些编辑器或者 IDE 说不定也会关心它。
加了又不会怀孕 😒
9102 年是什么梗?只是单纯倒过来写显得都什么年代了?
2019 年了,还在用 9012 这种烂梗吗?
没事 明年就没人用了
写好模版了,真心生命远离手打 233
就算爸爸说每个文件里面要加一个雅美蝶,也要加啊!
我一直觉得加这个很不合理。
注释就应该是注释,加与不加完全没有任何区别。不应该承担任何功能。
我一直是不加的,但是遇到过因为没加导致的报错
find . -name “*.py” | xargs grep -L ‘# – coding: utf-8 --’ | xargs sed -i '2 a# – coding: utf-8 --'
一行的事搞那么纠结干啥。。
这个才是标准思路。
楼主只是描述了一个背景,对其中的事感到奇怪,超脱背景后讨论这件事奇不奇怪
怎么这么多人说背景和怎么做这件事
不管是脚本还是手动 copy 甚至手打,楼主应该是做完了才来问的
对于这个奇怪的注释设定,我不知道,但我不加自己的脚本也能跑,没有细究过
因为明年就用不了了啊。。。
既然明确说了是 py3 的项目,那我觉得没必要
py3 项目不需要加…
用 sed 直接加上就行
pycharm 兴建文件时设置好模板就好
我靠,这大佬,佩服。但是我改完才来发帖的。复制粘贴也没那么麻烦。 只是感觉没必要、多余而已。
拒绝 py2 的流毒,不加
#15 废话,人家让加就加啊,有总比没有好不是吗
这也不知道的话…你是怎么会写程序的?程序不就是为了帮人类解决简单重复的工作而发明的吗
一个 sed 全部搞定
和你用不用 python3 有什么关系?执行环境你又不能控制。
这种事情要慎重考虑,“ 9102 ”年不是什么好的理由。
哎,没吃过亏的年轻人啊!
9102 年,2020 看你怎么说
不论是公司还是个人项目都不加。。
既然是 py3 的项目,就可以不用写。 楼上有的人说执行环境的问题,py3 的解释器已经默认使是 utf-8。难不成你 py3 的代码,强行要在 py2 解释器运行?除非一开始就打算要兼容 py2 和 py3 两个版本。
顺便吐槽一下,我同事也喜欢这么干(多此一举的事情),我用 with open 打开了项目中的文本,code review 的时候,同事让我用 try-except 去捕捉这个异常。这明明是一个不可能发生的异常(除非代码被人恶意做了手脚)。如果连这种异常都要去捕捉,那我每个 import 语句都要 try-except 了,因为理论上,我项目里的 py 文件和第三方库,还有可能被人偷了呢。 何必多此一举?
用 IDE 自动加就行了… 加就加呗,也不是什么难事
另外我赞同 吐槽的情况,有的人用 Python 这么灵动的语言,就是能写出笨重的代码出来…
处处捕获异常,处处考虑兼容 3.5 之前的版本,以及大量重复代码堆积的属性和 getter setter
sed
手动 copy ……
windows 下打开一个已打开的文件会报错, linux 下不会
如果甲方让你把所有的变量名,方法名都改为日文命名, 你也必须改. 因为对方是甲方
不用,py2 遗留的东西,因为这个编码问题才会用 py3 的
如果从使用的角度来讲,在一个自己未知的环境部署,还是有必要的。python3 文档里是"By default, Python source files are treated as encoded in UTF-8."注意一下 default ,如果程序部署在自己不掌握的环境,尤其是交给别人去部署,这种 default 就是不可信的,因为你永远无法知道他们的环境是怎么样的,python 设置呀什么的,甚至他们用的有可能是自己魔改后的 python 解析器。
这玩意只有你代码文件里有相关字符串才需要啊…你代码文件里没有其他编码的当然不需要啊
你引用的库也不会在每个文件里都带这个头啊(其实大部分库都没带头,因为人家都用英文),
不过在东亚国家注释得写母语的话,233333
Python3 不是默认 utf8 吗?
日文编码比中文水还深,给日本供货编码细节注意一下还是合理的吧
一个肯定没问题的方案,一个可能有问题的方案,我倾向于选择前者。
没有加的习惯。。。
讲道理会编程检测一下首行让后自动加不就好了,反正 ascii 文件嘛
为啥我 Windows 10 系统,有时候编辑 py 文件没问题,但是过几天再用 utf 编码打开就乱码,用记事本打开在复制到文本编辑器里面保存会好,过几天又不行,html 和 js 文件也一样效果
编辑器用的是 nd+
不知道,我不用记事本或者 nd+。会不会是 BOM 问题?
我一般用 Visual Studio Code 或者 PyCharm。

