Kabul edilen cevapların sadece lambda ayrı bir satırda verildiğinde işe yaradığını unutmayın. Bir işleve argüman olarak iletirseniz ve lambda kodunu nesne olarak almak isterseniz, sorun inspect
size biraz hileli olur çünkü size tüm satırı verecektir.
Örneğin, bir dosyayı göz önünde bulundurun test.py
:
import inspect
def main():
x, f = 3, lambda a: a + 1
print(inspect.getsource(f))
if __name__ == "__main__":
main()
Bunu yapmak size (karar verdiğinizi unutmayın) verir:
x, f = 3, lambda a: a + 1
Lambda'nın kaynak kodunu almak için, en iyi bahis, bence, tüm kaynak dosyayı yeniden kullanarak (kullanarak f.__code__.co_filename
) ve lambda AST düğümünü satır numarası ve bağlamıyla eşleştirmektir.
Tasarım-kütüphaneli ikon ikonumuzda , dekoratörlere argüman olarak aktardığımız lambda fonksiyonlarını ayrıştırmamız gerektiğinden tam olarak yapmalıydık . Buraya yapıştırmak için çok fazla kod var, bu yüzden bu işlevin uygulanmasına bir göz atın .