为什么在Python中不推荐使用通用换行模式?


26

我只是注意到文件操作的通用换行符功能似乎即将退出。

为Python 3.5的文档openmode参数表明它弃用:

'U' 通用换行模式(不建议使用)

open记录mode参数用法时,至少追溯到Python 3.2 包含类似的“仅向后兼容”警告:

'U' 通用换行模式(为了向后兼容;不应在新代码中使用)

即使在Python 2.7中,的文档中也有类似的警告io.open

这是什么原因?


2
其背后的逻辑非常简单。命名事物而不是未命名事物被认为更“ Pythonic”。因此,您使用命名参数而不是字符标志。标志的想法在很大程度上是Python的C实现的遗留部分,这也就不足为奇了。
世界工程师

因为默认情况下以通用换行模式打开文件。
鲍里斯(Boris)'18年

Answers:


37

open()功能在Python 3库有一个newline说法。设置为None启用通用换行符。这是公认的方法,使mode='U'参数变得多余。

使用newline=None以实现通用换行模式(这是默认值)。


5
看来我误会了。我读这句话的意思是,一般不推荐使用通用换行符,而不仅仅是模式字符。感谢您清理。
jpmc26 2015年

6

遇到这个问题后,我更新了文档,以使发生的事情更清楚(https://github.com/python/cpython/pull/11646/files)。

令人费解的神秘表条目'U'不见了,取而代之的是下面的一段指出:

允许使用其他模式字符'U',该字符不再起作用,被认为已弃用。它以前universal newlines在文本模式下启用:term :,这已成为Python 3.0中的默认行为。newline <open-newline-parameter>有关更多详细信息,请参见:ref:参数的文档。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.