Çoğu fonksiyon isimlendirmek kolaydır. Genel olarak, bir işlev adı ne yaptığını veya ürettiği sonucun türünü temel alır. Bununla birlikte, bir jeneratör işlevi söz konusu olduğunda, sonuç diğer bazı tiplere göre yinelenebilir olabilir. fonksiyon adında türünde bir nesneyi döndürmez beriPython Generator İşlev İsimleri - önek faydalı mı?
def sometype(iterable):
for x in iterable:
yield some_transformation(x)
sometype
adı, yanıltıcı hissediyor. Bu gerçekten sometype
üzerinden yinelenebilir.
iter_sometype
veya gen_sometype
gibi bir ad, Hungarian Notation gibi bir çok hissedilir. Bununla birlikte, aynı zamanda işlev amacını açıklığa kavuşturuyor gibi görünüyor.
Daha da ileri giderek, bir önekin yararlı olabileceği bazı özel durumlar vardır. Bunlar, bazıları itertools numaralı telefondan edinilebilen tipik örneklerdir. Ancak, çoğu zaman 'u 'a benzeyen, ancak mükemmel bir uyum sağlamayan algoritmik karmaşıklığa sahip bir versiyon yazmamız gerekir.
def reduce_sometype(iterable):
summary = sometype()
for x in iterable:
if some_rule(x):
yield summary
summary= sometype()
summary.update(x)
def map_sometype(iterable):
for x in iterable:
yield some_complex_mapping(x)
def filter_sometype(iterable):
for x in iterable:
if some_complex_rule(x):
yield x
iter_
, map_
, reduce_
, filter_
önek bir jeneratör işlevinin adını açıklamak yardımcı olur mu? Yoksa sadece görsel karmaşası mı?
Bir önek yardımcı oluyorsa, öneki öneriniz nelerdir?
Alternatif olarak, bir son ek yararlıysa, ne tür öneriniz var?
Sana tür genelleştirilmiş üzerinde .. demek, en basit jeneratör ifadeler olarak doğrudan 2. ve 3. işlevler yazmak düşünüyorum ala '(some_mapping (x) iterable for x)'. Birincisi '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' • '' '' '' '' '' '' '' '•' '' '' '' '' '' '•' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' • '' '' '' '•' '' • '' '' '' '' '' • '' '•' '' • '' '' '. –
@ THC4k: Lütfen daha karmaşık olduklarını hayal edin.Itertools'un içine kolayca sığacak kadar karmaşık. Temel fonksiyonel programlama ilkelerini ihlal ettikleri kadar karmaşık değiller. Örneğin, bir çok ön kurulum çalışmasını bir optimizasyon olarak içerebilirler. –