PyCharm’da bir program yazıyordum. ctrl tuşuna basılı tutup fare ile kalıtım içeren şeylere basınca kaynak dosya açılıyor. Programımda threadler vardı. ctrl’ye basılı tutup threading’e bastım, PyCharm’ın kendi python’undaki threading.pyi dosyası açıldı.
Orada şöyle ilginç kodlar vardı.
if sys.version_info >= (3,):
TIMEOUT_MAX = ... # type: float
Ben olduğum yerde kaldım. Ve açtım etkileşimli kabuğu:
>>> a = ...
>>> a
Ellipsis
>>> dir(a)
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__ha
sh__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr_
_', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
>>> Ellipsis()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'ellipsis' object is not callable
Ne yaptım ettim bulamadım. Bu ... nedir ne işe yarar?
Yardımlarınızı bekliyorum.
def foo():#Okuyan kişi için fonksiyon bundan ibaret
pass#Elbette programatik şekilde düzenlenebilir.
def bar():#İçi dolacak
...# Ancak şimdilik yazılmamış.
#Başka kodları deneme amaçlı olabilir.
Ben 'expression’a ‘deyim’, 'statement’a da ‘ifade’ diyorum. Python’da her şey bir ifadedir. Sınıf ve fonksiyon tanımlarını, import, return, break, vb. ifadeleri, atama ifadelerini birer ifade gibi düşünebilirsiniz. Bunun yanında herhangi bir şey döndüren her ifade bir deyimdir. Mesela şunlar birer ifadedir:
Bunlar birer ifadedir ancak herhangi bir değer döndürmedikleri için deyim değillerdir. Şu ifadeler ise birer deyimdir, çünkü bir değer döndürürler:
>>> A
<class '__main__.A'>
>>> A()
<__main__.A object at 0x01470A50>
>>> a
<function a at 0x01410858>
>>> a()
>>>
Gördüğünüz gibi hem sınıflar hem de sınıf örnekleri, hem fonksiyonlar hem de fonksiyon çağrımları birer deyimdir. Yani bir nesne için söylediğim yukarıdaki şu ifadem kesinlikle doğrudur: