Merhabalar
print(*range(0,10))
range ’ in önündeki yıldız işareti kullanmak for a bir alternatif fakat buradaki mantık nedir ? Arka planda ki olay nedir ?
Bir de range bir veri tipi midir ?
Vakit ayıranlara şimdiden teşekkürler.
Merhabalar
print(*range(0,10))
range ’ in önündeki yıldız işareti kullanmak for a bir alternatif fakat buradaki mantık nedir ? Arka planda ki olay nedir ?
Bir de range bir veri tipi midir ?
Vakit ayıranlara şimdiden teşekkürler.
o generatorler ve listeler için bir özellik o range fonksiyonunun içindeki elemanları teker teker parametre olarak fonksiyona gönderiyor
değil…
Yinelenebilir bir verinin önüne *
işareti koymak yinelenebilir bir veriyi açmayı sağlar.
Örnek:
a = range(*[1, 10])
Bu yukarıdaki ifade range(1, 10)
ifadesiyle aynıdır.
Dolayısıyla siz *range(0, 10)
yazdığınızda, bu yinelenebilir veriyi açmış oluyorsunuz.
Arka plandaki olay nedir sorusunun cevabını vermek o kadar da kolay değil.
evet, range bir veri tipidir.
evet, range bir veri tipidir.
hmm bilmiyordum nasıl ya biraz daha anlatabilir misiniz?
range
bir sınıf, aynı list
veya int
gibi.
hmm bilmiyordum nasıl ya biraz daha anlatabilir misiniz?
Kendisine ait metotları bulunan bir sınıf işte.
print(type(range(10)))
yazdığınızda cevabı alırsınız aslında.
range ’ in önündeki yıldız işareti kullanmak for a bir alternatif fakat buradaki mantık nedir ?
Mantık şu;
print(*range(3))
ile bu:
print(0, 1, 2)
eşdeğer.
Arka planda ki olay nedir ?
Bu:
>>> from dis import dis
>>> dis("print(*range(0, 10))")
1 0 LOAD_NAME 0 (print)
2 LOAD_NAME 1 (range)
4 LOAD_CONST 0 (0)
6 LOAD_CONST 1 (10)
8 CALL_FUNCTION 2
10 CALL_FUNCTION_EX 0
12 RETURN_VALUE
Biraz açıklarsam, 8 sayısının yanındaki CALL_FUNCTION
, range fonksiyonunun çağrılmasına karşılık geliyor. Yanındaki 2
de iki tane argüman ile çağırıldığını söylüyor (0
ve 10
). Daha sonraki CALL_FUNCTION_EX
de print fonksiyonunun çağırılışına karşılık geliyor, aradaki fark stack’de biriktirilen nesneleri ayrı ayrı kullanmak yerine stack’daki son değerin (range fonksiyonunun dönüş değerinin) içeriğini kullanmak.
Bir de range bir veri tipi midir ?
Evet.
>>> isinstance(range, type)
True
o generatorler ve listeler için bir özellik
Bu özellik sadece iterable’lar için.