Neden evrensel satırsonları modu Python'da kullanımdan kaldırılıyor?


26

Dosya işlemlerinin evrensel newline özelliğinin ortaya çıktığını farkettim .

Python 3.5 open'in modeparametresi için belgeler kullanımdan kaldırıldığını gösteriyor:

'U' evrensel satırsonu modu (kullanımdan kaldırıldı)

En azından Python 3.2 kadar opengeriye, modebağımsız değişken kullanımını belgeleyen benzer bir "yalnızca geriye dönük uyumluluk" uyarısı içeriyor :

'U' evrensel yeni satırlar modu (geriye dönük uyumluluk için; yeni kodda kullanılmamalıdır)

Python 2.7'de bile benzer bir uyarı belgelendirilir io.open.

Bunun sebebi nedir?


2
Bunun arkasındaki mantık oldukça basittir. İsimsiz şeylerden ziyade şeyleri adlandırmak daha "Pythonic" olarak kabul edilir. Bu yüzden karakter bayrağı yerine adlandırılmış bir parametre kullanırsınız. Bayrak fikri, Python'un C uygulamasının artık bir parçası değil ve ayıklanmasının küçük bir merakı.
Dünya Mühendisi

Çünkü dosyalar varsayılan olarak evrensel satırsonu modunda açılır.
Boris,

Yanıtlar:


37

open()Fonksiyon Python 3 kütüphanede bir sahiptir newlineargüman. NoneEvrensel yeni satırları etkinleştirmek için ayarlama . mode='U'Argümanı gereksiz kılan, bunu yapmanın kabul edilen yolu budur .

newline=NoneEvrensel yeni satır modunu etkinleştirmek için kullanın (bu varsayılandır).


5
Yanlış anladım gibi görünüyor. Genelde evrensel yeni satırların yalnızca mod karakteri değil kullanımdan kaldırıldığını söyleyerek okudum. Bunu temizlediğin için teşekkürler.
jpmc26

6

Bu soruyu tökezledikten sonra, neler olup bittiğiyle ilgili daha net olması için dokümantasyonu güncelledik ( https://github.com/python/cpython/pull/11646/files ).

Kafa karıştırıcı şifreli tablo girişi için 'U'gitti ve bunun yerine aşağıda belirtilen bir paragraf var:

İzin verilmeyen, 'U'artık hiçbir etkisi olmayan ve kullanımdan kaldırıldığı kabul edilen ek bir mod karakteri var. Daha önce etkin: terim: universal newlinesPython 3.0'da varsayılan davranış olan metin modunda. Daha newline <open-newline-parameter>fazla ayrıntı için : ref: parametresinin belgelerine bakın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.