'da bir işlevin argüman sırasını çevirme Günümüzde, haskell'i öğrenmeye başlıyorum ve bunu yaparken Python'da öğrendiğim bazı fikirleri uygulamaya çalışıyorum. Ama bunu zorlayıcı buldum. Başka bir işlevi argüman olarak alan Haskell'de bir işlev yazabilir ve argümanların sırası ters çevrilmiş olarak aynı işlevi döndürür. Python'da benzer bir şey yapılabilir mi? Örneğin, Python'da yapabilir misiniz?Python
Q
Python
6
A
cevap
11
Yuvalanmış işlev tanımlarını kullanarak Python'da bir kapatma oluşturabilirsiniz. Saf bir işlevsel tarzında
>>> from functools import wraps
>>> def flip(func):
'Create a new function from the original with the arguments reversed'
@wraps(func)
def newfunc(*args):
return func(*args[::-1])
return newfunc
>>> def divide(a, b):
return a/b
>>> new_divide = flip(divide)
>>> new_divide(30.0, 10.0)
0.3333333333333333
6
:
flip = lambda f: lambda *a: f(*reversed(a))
def divide(a, b):
return a/b
print flip(divide)(3.0, 1.0)
Biraz daha ilginç bir örnek:
unreplace = lambda s: flip(s.replace)
replacements = ['abc', 'XYZ']
a = 'abc123'
b = a.replace(*replacements)
print b
print unreplace(b)(*replacements) # or just flip(b.replace)(*replacements)
Bu özgün işlevini argüman sırasını tersine çevirir ve sonra çağıran yeni bir fonksiyon tanımlayarak
+5
Hayır, bu adil değil! @ Raymond'un cevabı aslında pratik açıdan çok daha iyi, çünkü yığın izlerini okunabilir tutuyor. Bu konuyu okuyan kişi önce cevabını okumalı. Lütfen kabul et. – georg
İlgili konular
- 1. python deyim için python deyim python ifadesi
- 2. Python dosyası Python detay
- 3. gibi Python Python
- 4. python listesi python
- 5. Python
- 6. Python
- 7. Python
- 8. Python,
- 9. Python
- 10. Python
- 11. Python
- 12. Python
- 13. Python
- 14. Python
- 15. Python
- 16. Python
- 17. Python
- 18. Python
- 19. python
- 20. Python
- 21. Python
- 22. Python
- 23. Python
- 24. Python
- 25. Python
- 26. Python
- 27. Python
- 28. Python:
- 29. Python
- 30. Python
Sanırım * args'leri kullanabilir ve sonra argüman listesini tersine çevirebilirsin ... ya da bunun gibi bir şey. –