Random modülü kaynak kodlarını incelerken (Bu nasıl rastgele sayı üretiyor demiştim) ağzım açık kaldı. İnsan bakınca ben hiç python öğrenememişim diyor. Ah ingilizcem yetseydi de şu ingilizce kılavuzu doğru düzgün okuyabilsem diyorum . . . Her neyse, işte orada şöyle bir kullanım gördüm:
x = ord(a[0]) << 7 if a else 0
Random sınıfı seed metodu 112. satır
Bu arada, şu << işlecinin ne işe yaradığını da gösterebilirseniz memnun olurum.
Eğer koşul doğru ise(True) degiskenin değerini 1 yap, yanlış ise(False) 0 yap.
>> ve << operatorleri de bit kaydırma işlemi yapar. Yani mesela 97 sayısının binary karşılığı 1100001 ise, << operatorü, verilen sayı kadar sola kaydırır bitleri. 97 sayısının sola doğru bit bit kaydırılması, 11000010. Her bir sola kaydırmada 2’nin katları ile çarpılmış oluyor binary işlem olarak. Mesela
>>> 8 << 0 # 8 x 2**0
8
>>> 8 << 1 # 8 x 2**1
16
>>> 8 << 2 # 8 x 2**2
32
>>> 8 << 3 # 8 x 2**3
64
Aynı şekilde her sağa kaydırma da, 2’nin katları ile bölme oluyor.
T if C else F: C'yi degerlendirip dogru ise T, degil ise F degeri aliyor
(= ile birlikte kullanilmak zorunda degil)
Diger dillerde ?: olarak gorebileceginiz bir uclu operatorun sirasi yanlis versiyonu.
(Hemen her yerde C ? T : F veya if C then T else F sirasiyla gorursunuz.
RNG (Random Number Generator) konusuna gelince de, aramak istediginiz anahtar kelime “PRNG” (PseudoRandom Number Generator) veya PRNG’lerin en basitlerinden biri olan “LCG” (Linear Congruential Generator). Turkce kaynak… aslinda seneler once sozluge yazdigim bir entry vardi, backup diskimden bulup cikarsam…
Modül kaynak kodlarını okumak çok önemli. İnsan görünce gerçekten “Ben hiçbir şey bilmiyormuşum…” diyor. Zaten Python maceramız da “Acaba falanca program nasıl yazıldı?” diye sorarak başlamadı mı? Şimdi kullandığınız modüllerin de nasıl yapıldığını bilmeden gerçek bir “Python Programcısı” olur muyuz? Hayır, elbette olamayız. O yüzden kendimizi geliştirmek için bu modüllere vereceğiz kendimizi