我有一個類。在那個課上我有一個功能。 在函數中,我有一個字符串變量,它保存了幾個python函數的定義。如何從Python的全局範圍運行「exec」
我想從功能創建這樣,他們將在全球範圍創建的變量中定義的功能。
完成此操作後,我希望能夠從全局範圍調用新函數。
例如:
class MyClass:
def create_functions():
functions_to_create = """
def glob1():
return "G1"
def glob2():
return "G2"
"""
# ----> HERE IS THE MISSING PART, LIKE RUNNING exec in the global scope <----
# The following function should work:
def other_function_in_global_scope():
print "glob1: %s, glob2: %s" % (glob1(), glob2())
應該是什麼在缺失的部分?
在此先感謝!
運行EXEC因爲通常有更好的方法來設計代碼,同時也引入了潛在的非常容易的代碼注入。你想用字符串函數名稱做什麼?你爲什麼把它們當作字符串而不僅僅是對象? – Zimm3r
@ Zimm3r:我想給內部客戶一個選項來編寫我想在我的代碼中使用的一些python代碼覆蓋。 – diemacht
這聽起來並不完美,因此讓它們注入任意代碼會帶來安全風險。還有更好的方法,然後使用exec甚至可以注入字符串源代碼。 (更新的方式來做到這一點) – Zimm3r