koddla

Yazılımcıları bilgi ile güçlendirir.

Python’da işlevin adını dize olarak nasıl alırız?

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

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top