Call a function defined in another function

前端 未结 4 1999
梦谈多话
梦谈多话 2020-11-28 14:44

Can I call a function nested inside another function from the global scope in python3.2?

def func1():
    def func2():
        print(\"Hello\")
        retur         


        
4条回答
  •  暗喜
    暗喜 (楼主)
    2020-11-28 15:27

    You want to use @larsmans' solution, but theoretically you can cut yourself into the code object of the locally accessible func1 and slice out the code object of func2 and execute that:

    #!/usr/bin/env python
    
    def func1():
        def func2():
            print("Hello")
    
    # => co_consts is a tuple containing the literals used by the bytecode
    print(func1.__code__.co_consts)
    # => (None, )
    
    exec(func1.__code__.co_consts[1])
    # => prints 'Hello'
    

    But again, this is nothing for production code.

    Note: For a Python 2 version replace __code__ with func_code (and import the print_function from the __future__).

    Some further reading:

    • http://web.archive.org/web/20081122090534/http://pyref.infogami.com/type-code
    • http://docs.python.org/reference/simple_stmts.html#exec
    • http://lucumr.pocoo.org/2011/2/1/exec-in-python/

提交回复
热议问题