Python’da, işlevi çağırmadan işlev adını dize olarak nasıl alabiliriz?
def fonksiyonum():
pass
print fonksiyon_adini_al(fonksiyonum)
çıktı da "fonksiyonum"
olmalı.
__name__ kullanımı
fonksiyonum.__name__
__name__
kullanımı tercih edilen yöntemdir. Çünkü her methoda uygulanabilir. func_name
‘in aksine yerleşik işlevler üzerinde çalışır:
>>> import time
>>> time.time.func_name
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: 'builtin_function_or_method' object has no attribute 'func_name'
>>> time.time.__name__
'time'
Ayrıca çift alt çizgiler okuyucuya bunun özel bir özellik olduğunu gösterir. Bonus olarak, sınıfların ve modüllerin de bir __name__
özelliği vardır.
inspect kullanımı
Geçerli işlevin veya yöntemin adını bu işlev içinden almak için ise aşağıdakileri uygulayabiliriz:
import inspect
bu_fonksiyonun_adi = inspect.currentframe().f_code.co_name
inspect.currentframe
yerine sys._getframe
‘de kullanılabilir. Ancak ilk yöntem özel bir işleve erişmekten kaçınır.
Çağıran işlevin adını almak istiyorsanız f_back
kullanabilirsiniz:
inspect.currentframe().f_back.f_code.co_name