Soru Tanımlanamayan True, sözdizimi hatasına neden olur


Birisi elses kodunda şu yapıyı bugün buldum:

try: True, False
except NameError: True = 1==1; False = 1==0

Bunu anladığım kadarıyla tanımlar True ve False zaten tanımlanmamışlarsa. Yani eğer tanımlanmışlarsa, NameError-Ödeme, değil mi?

Bunu kendim için bir kabukta denedim ve bana gösteriyor SyntaxError: can't assign to keyword

Benim sorum, True ve False tanımlandığında neden sözdizimi hatasını bile çekiyor? Sistemimde True ve False varsa, istisna işlemlerini geçip, bir sözdizimi hatası göstermemeli midir?


19
2018-06-25 06:31


Menşei


Bu satırlar, python 2.3 sürümleriyle kodları uyumlu hale getirir. (Görmek PEP 285). Fakat kimse python <2.3 kullanır ve hatta python <2.5 Gerçekten mi nadir. Şu anda python2.7 / 3 + 'da kodu taşınabilir hale getirmeye çalışsanız iyi olur. - Bakuriu
2ndscale.com/rtomayko/2003/TrueFalseInOldPython - 101


Cevaplar:


Bu kod Python 2.x için yazılmıştır ve Python 3.x üzerinde çalışmayacaktır. True ve False doğru anahtar kelimelerdir).

Dan beri True ve False Python 3 anahtar kelimelerdir, bir SyntaxError yakalayamadığın

Bu kod, Python'un çok eski sürümleri nedeniyle var. Python 2.2'de (2001'de yayımlandı!) True ve False Önceden tanımlanmış adlar olarak mevcut olmadığından, bu kod, daha sonra kodun basitçe kullanabilmesi için uyumlu tanımlar sağlar. True ve False.

Python 2.x kodunuzu Python 3.x'e dönüştürürken, bu satırları kaldırın; tarihseldirler ve Python 3.x'te kullanmazlar. Bu satırları başka birinin kodunda görüyorsanız, programın Python 3 için yazılmadığını veya taşınmadığını gösteren kesin bir işarettir.


22
2018-06-25 06:39



“Programın Python 3 için yazılmadığını ya da tasvir edilmediğinin kesin bir işareti” - ya da bu çağın herhangi bir Python versiyonu… xD - poke
Bunun yerine ne kullandılar? intBoole mantığı için mi? - Caramiriel
Evet, 1 ve 0 kullandılar. True ve False Python 2.2.1'de sabit olarak eklenmiştir, ancak basitçe 1 ve 0 sırasıyla. Gerçek bool tip sadece Python 2.3'te eklendi PEP 285. - nneonneo
(Ve bu tarihe kadar, bool hala bir alt tipi int) - poke


SyntaxError kodun çalıştırılmasından önce bayt derleme aşamasında gösterilir. try/except.


9
2018-06-25 06:32





Boole tipi Python 2.3'te tanıtıldı: https://docs.python.org/2.3/whatsnew/section-bool.html

Böylece bu kod parçası, Python'un eski sürümü için, örn. Python'un çok eski versiyonunu desteklemek için 2.3+ (yani 2.3'ten önceki)


3
2018-06-25 06:39