2017-09-04 1 views
0

sagen, dass ich eine Funktion mit timeit_wrapper so wickeln will:Wie umschließt eine Funktion aus einem anderen Namespace, während der Funktionsname beibehalten wird?

import timeit_wrapper 

def func1(): 
    pass 

def func2(): 
    func1 = timeit_wrapper(func1) 
    func1() 

Die oben in einem vor der Zuweisung Fehler verwiesen führen seit func1 in einem lokalen Bereich zugeordnet ist.

Wie kann ich dies auf eine pythonische Weise erreichen (ohne das globale Schlüsselwort)?

+0

Wie wäre es 'wrapped_func1 = timeit_wrapper (func1)' und 'wrapped_func1()'? – Alfe

+0

Ich möchte, dass es immer noch func1 heißt (get_batch in der Realität), damit der Code leichter zu verstehen und einfacher zu ändern ist - ist das möglich? – LearnOPhile

+2

Wow. 2 Sekunden um meine Frage zu beantworten ;-) Du bist schnell. Was magst du dann nicht an dem Keyword 'global'? Das würde dein Problem lösen, oder? – Alfe

Antwort

2

Wie wäre es dieses:

import timeit_wrapper 

def func1(): 
    pass 

def func2(func1=func1): 
    func1 = timeit_wrapper(func1) 
    func1() 
Verwandte Themen