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?
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.
SyntaxError
kodun çalıştırılmasından önce bayt derleme aşamasında gösterilir. try
/except
.
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)