次のコードは例外をスローします。
import inspect
def work():
my_function_code = """def print_hello():
print('Hi!')
"""
exec(my_function_code, globals())
inspect.getsource(print_hello)
上記のコードは例外 IOError をスローします。exec を使用せずに関数を宣言すると (以下のように)、そのソース コードを問題なく取得できます。
import inspect
def work():
def print_hello():
print('Hi!')
inspect.getsource(print_hello)
私がこのようなことをするのには十分な理由があります。
これに対する回避策はありますか? このようなことは可能ですか?そうでない場合、なぜですか?