2016-03-28 24 views
0

Python'da bir işlevi sınamak için format kullanıyorum. Ben% 0 ve işlev biçimi için biçim ve/veya biçim

Sqrt(4)=2 

olmak

test(Sqrt,4) 

verilen bir fonksiyonu

def test(f,k): 
    print "{0}({1})={2}".format(f,k,f(k)) 

çıktısını istiyorum Fakat biçim türü 'fonksiyonunu' ve açı parantez içinde bir bellek adresi geri veriyor. Çıktıklarımı elde etmek için çıktıyı kısaltmanın düzgün bir yolu var mı? Sen kullanmak isteyen

cevap

4

__name__:

def test(f,k): 
    print("{0}({1})={2}".format(f.__name__,k,f(k))) 

test(sqrt, 2) 

Çıktı: "çağrılabilir türleri" Veri Modeli docs here bölümü itibaren

sqrt(2)=1.4142135623730951 

, __name__ basitçe:

__name__ func_name : The function’s name. 

Aşağıdaki belgeleri dikkatlice okuyun. ve bu tür öznitelikleri kullanmak istediğinizde sizin için kullanılabilir. Tipik olarak, bu callable türlerine (ör. Bir yöntem veya sınıf tanımlarken, __name__ özniteliği sizin için mevcut olacaktır) kullanılabilir olacaktır. sadece benzeri olmayan bir çağrılabilir, bir şeyler tanımlamak Ama eğer:

x = 5 

ve x.__name__ aramaya deneyin, Python en nesneler farklı olarak bir AttributeError

2

ile karşılanacak, fonksiyonlar bir __name__ nitelik olarak ayarlanmış olması tanımlandıkları ad.

print "{0}({1})={2}".format(f.__name__, k, f(k)) 

Sınıflar ayrıca __name__ var, ama diğer birçok callables yok: Bunu kullanabiliriz. f başka bir tür kalkandırsa, bununla ne tür bir kalleşilebileceğine ve uygulanmasını kontrol edip etmediğine bağlı olarak farklı bir şekilde ele almanız gerekir.