Python dinamiktir. Bir sınıfın oluşturulması, bir modülün içe aktarılması gibi yürütülebilir bir ifadedir ; şartlı yapılabilir. Yaratılıştan sonra bir sınıf değiştirilebilir; Bu kolay metaprogramming ve AOP sağlar.
Orada hiçbir arayüzler; ördek yazım kuralları. Onlara umutsuzca ihtiyacınız varsa, 'soyut temel sınıflar (ABC'ler)' vardır, ancak genellikle hiçbir statik tip kontrolü olmadığı için arayüzleri kaçırmazsınız.
Her şey bir nesne olmasına rağmen, işlevler nesnelerden önce gelir. Bir modülde sadece fonksiyonlara (ve sınıfsız) sahip olmak gayet iyi.
Her şey birinci sınıf bir varlıktır. İşlevleri parametre olarak geçmek, bunları döndürmek ve değişkenlere atamak normdur. Sınıflar için aynen. Yöntemler sadece fonksiyonlardır; Bir örnek yöntemi normal bir işlevmiş gibi ele alabilir, etrafından geçirebilirsiniz.
Yerleşik dikteleri, kümeleri, listeleri ve tuple'ları kullanın. Listeler ve alıntılar değişkendir, tuples değildir. Hepsi çok verimli ve sözdizimsel olarak özlü. Bir tuple kullanarak bir fonksiyondan birkaç değer döndürmeye alışın (parantez bile gerekmez). Çok basit nesnelerin karmaşık hiyerarşilerini düz listelerden, totelerden ve diktenlerden ('hashtables') yapılan düzenlemelerle değiştirmeye alışın, hayatı kolaylaştırır.
Python'un bir miktar FP desteği var; liste kavramalarını ve sonra yineleyiciler ve jeneratörleri öğrenir Bunlar çok yardımcı olur.
Herhangi bir operatör uygun yöntemler tanımlayarak aşırı yüklenebilir, bu nedenle ekleme veya karşılaştırma istediğiniz şeyi geri getirebilir. Bunun SQLAlchemy gibi şeylerle çalıştığını unutmayın.
Boş yok, sadece Yok, tam teşekküllü bir nesne. Hiçbirini iyi, vb. Olarak yazdırabilirsiniz. Başka hiçbir örneğin beklendiği durumlarda Yok'u geçmek, genellikle bir NPE'de değil, bazen yürütme hattında daha da aşağıya atılan bir AttributeError'da sonuçlanır.
Python'un tamamen dinamik doğası nedeniyle, neredeyse hiç statik çekiniz yok . Programınızda hiçbir zaman bulunmayan bir adama (örneğin bir yazım hatası) veya yalnızca belirli bir yürütme yolunda tanımlanmış olan bir adama başvurabilirsiniz ve yürütme bu başvuruya ulaşana ve bir NameError yükseltilinceye kadar hiçbir şey size hatırlatmaz. Değişkenlerinizin kapsamına dikkat edin ve daha fazla birim testi yazın.
Python'un tamamen dinamik olması nedeniyle, nesneler neredeyse her zaman dövülebilir. Genellikle bir örneğe bile alanlar ve yöntemler ekleyebilir ve böylece durum veya yöntem kümesini istemeden silebilir veya üzerine yazabilirsiniz. Öznitelikler atarken dikkatli olun. Bu da ilginç olasılıklara izin verir :)
Orada hiçbir sembolik sabitler , sadece değişkenler. Yanlışlıkla 'sabit' üzerine yazmadığınızdan emin olun. Olumlu bir sabitin üzerine yazamayacağınızdan emin olmak istiyorsanız, bir işlev veya özellik kullanın (bu, gizlenmiş bir işlevdir).
Python'un konuları G / Ç'ye bağlı işlemler için iyidir, ancak CPU'ya bağlı değildir. Paralel iş parçacıklarında çalıştırarak hesaplama işlemini hızlandırmaya çalışmayın.