İleri-ilan Python bir işlevi olması mümkün mü?
İleri-ilan Python bir işlevi olması mümkün mü? Bir liste ilan edilmeden önce cmp
kendi işlevini kullanarak sıralamak istiyorum.
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
Çağırma sonra cmp_configs
yöntemin tanımını koymak için kodu düzenledim. Bu hata ile başarısız:
NameError: name 'cmp_configs' is not defined
Orada "" 8 ** yöntemi daha önce kullandığı? bildirmek için herhangi bir yolu var mı Benim kod daha temiz görünmesi değil mi?
Ben bazı insanlar sadece bu sorunum yok ki benim kod yeniden olmamı söylemek için cazip olacak varsayalım. Ancak, bu muhtemelen özyineleme bazı formları uygularken, örneğin kaçınılmaz olduğu durumlarda vardır. Eğer bu örnek hoşuna gitmedi diye, bir durum var varsayalımgerçektengerekli ileri bir işlev bildirmek için.
İleri-ilan bir fonksiyonu Python: gerekli olacaktır bu durumda düşünün
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
end_condition
end_result
önceden tanımlanmış.
Kodu yeniden düzenlemek için tek çözüm olduğunu ve her zaman çağırmaları önce tanımlarını koymak?
CEVAP
Bir işlev bildirmek sevmiyorumöncekullanım ve işlev bildirmeksonraimkansız, ne başka bir modülde ilan hakkında? Teknik olarak hala daha önce ilan ama temiz.
Aşağıdaki gibi bir özyineleme oluşturabilirsiniz:
def foo():
bar()
def bar():
foo()
(ama işe yarıyor, Evet, sonsuz)
Python fonksiyonları değerler anonim gibi anonim, henüz bir adı ile ilişkili olabilir. Yukarıdaki kod foo()
etmez bir arama fonksiyonu ile adı foo, onu çağıran bir fonksiyon olur bağlı adı foo
noktası çağrı yapılır. Mümkün foo
kod aşağı başka bir yerde redeclare ve bar
Bu nedenle yeni işlevi çağırır.
'Sorun' sadece ilan edilmemiş. tam bir değişkeni almak için sormak gibi bir şey bu, çünkü çözülmesi senin
(aslında, 'anonim', bunun ne olduğunu bilmiyorum ama) . gerçekten değil
Sadece Python herhangi bir değer atama...
İşlevi'Python adı s ile bir dized...
Bir TextView içinde birden çok stil ol...
Bir nesnenin mevcut tüm özelliklerini ...
Nasıl bölüm Python kayan nokta olması ...