SORU
12 AĞUSTOS 2011, Cuma


Her zaman anahtar kelime argümanlar kullanmak için bir sebep var mı?

Python içine atlama önce, Objective-C / Cocoa kitap ile başlamıştım. Hatırladığım kadarıyla, çok fonksiyonu anahtar kelime argümanlar açıkça belirtilmesi gerekir. Yakın zamana kadar her şeyi unutmuşum ve sadece Python konumsal bağımsız değişkenler kullanılır. Ama son zamanlarda, uygunsuz pozisyonlar - sinsi küçük şeyler neden olan birkaç hata yaptım.

Beni düşünme - genel olarak özellikle non-anahtar kelime argümanlar gerektiren bir durum olmadığı sürece konuşma, - anahtar kelime argümanlar kullanmak için herhangi bir iyi bir neden var mı? Kabul kötü tarzı her zaman onları basit fonksiyonlar için kullanılır mı?

Sanki çoğunuz gibi benim 50 satırı programları olmuştur Ölçekleme için 500 veya daha fazla satır düzenli olarak, eğer ben sadece alıştığım için her zaman kullanarak anahtar kelime argümanlar, kod olacak daha kolay okunabilir ve sürdürülebilir olarak büyür. Bu yüzden olmayabilir herhangi bir sebebi var mı?

GÜNCELLEME:

Alıyorum genel izlenim genellikle çok basit tartışmalar için kullanılması gerektiğini çok iyi argümanlar tarzı bir tercih olduğunu, ama iyi bir stil ile aksi takdirde tutarlı. Kabul etmeden önce ben bu yöntemi kaynaklanan sigara tarzı herhangi bir özel sorunlar - örneğin, önemli performans isabet olsa açıklamak ister misin?

CEVAP
12 AĞUSTOS 2011, Cuma


Anahtar kelime argümanlar dışında berraklığı kullanmak için bir neden ve kod okunabilirliği yok. Anahtar kelimeler kullanmayı tercih anahtar kodu okuma veya ek yararlı bilgiler ekler olup olmadığını dayalı olmalıdır.

Aşağıdaki genel kuralı takip ediyorum:

  1. Eğer sabit fonksiyon (isim) işlev adı bağımsız değişkeni anlaması için ise anahtar kelime Şifremi text.splitlines(True) istemem örneğin () geçirir.
  2. Eğer yapmak zordur anlaması sipariş argümanlar, örneğin eğer çok fazla argüman, ya da ne zaman sahip bağımsız isteğe bağlı argümanlar – pas tarafından anahtar kelime (örneğin funkyplot(x, y, None, None, None, None, None, None, 'red') görünmüyor, özellikle güzel).
  3. Eğer argüman amacı açıktır eğer hiç anahtar kelime ile ilk birkaç argümanları. , sin(2*pi) sin(value=2*pi) aynı plot(x, y, z) için de geçerlidir daha iyi olduğunu görürsünüz.

Çoğu durumda, istikrarlı zorunlu konumsal bağımsız değişkenleri ve isteğe bağlı argümanlar anahtar kelime olacaktır.

Orada da olası bir fark performans, çünkü her uygulama anahtar kelime argümanlar olurdu biraz daha yavaş, ama şöyle bir düşününce bu olurdu genellikle erken optimizasyonu ve sonuçları olmaz önemli olduğunu düşünmüyorum. önemli kararı.

GÜNCELLEME: Non-stylistical ilgilidir

Anahtar kelime argümanlar konumsal bağımsız ve ayrı teknik dezavantajları vardır yeni bir API Olası performans sorunları tanımlama varsa herşeyi yapabilir. Ancak, eğer mevcut elemanları ile kodunuzu birleştirerek iseniz küçük sorunlar olabilir.

Aşağıdakileri göz önünde bulundurun:

  • Eğer fonksiyonu anahtar kelime argümanlar almak yaparsanız, bu arayüz bir parçası haline gelir. Benzer bir imza ama aynı değişkeni için farklı bir anahtar kelime olan başka bir işlev yerine koyamazsın.
  • Bir dekoratör ya da işlev konumsal argüman alır varsayar bu fonksiyon başka bir programı kullanmak isteyebilirsiniz. İlişkisiz yöntemleri bir örnek gibi yardımcı çünkü onlar hep pas ilk bağımsız değişken olarak konumsal sonra okuma olarak konumsal, cls.method(self=cls_instance) çalışmıyor olsa bile, orada bir tartışma self tanım.

Bunların hiçbiri sizin API iyi tasarım ve özellikle eğer zaten var olan bir şey ile değiştirilebilir olması gereken bir şey tasarlıyorsanız değil anahtar kelime argümanlar kullanma belgesi, eğer gerçek bir sorun olurdu.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • cyriak

    cyriak

    29 Mart 2006
  • ŠĩŗĜŕôŵåɭȍҭҭ

    ŠĩŗĜŕô

    29 Kasım 2009