2016-08-24 69 views
1

如何通過exec和打印在Python中打印代碼對象的傳遞參數?下面是幾個例子來看看事情如何在一般情況下工作。如何通過exec在Python代碼對象打印傳遞參數和打印?

def foo(x, y): 
    return x * y 

exec(foo.func_code {'x': 1, 'y': 5}) # This didn't work 

def bar(): 
    return 3*5 

exec(bar.func_code) # this got executed but I couldn't print it? 
+0

'exec('print(foo(1,5))')' –

+0

你爲什麼要這樣做?爲什麼你需要精確地使用'exec'?我感覺有一種更好的方式可以完成任何你想做的事情。 – spruceb

回答

-1

我不認爲你可以在不使用「黑魔法」的情況下將參數傳遞給代碼對象。爲什麼不使用exec("print foo(1, 5)")

在你的兩個例子中,沒有什麼是打印,因爲exec簡單地執行xxx.func_code,但功能foobar不含打印報表。

+0

我知道它不包含打印語句,但爲什麼我們不能做更像print(exec(code_object))之類的東西,以及如何使用code_object和exec將參數傳遞給任何函數。這更多是我的意圖。 – user1870400

+0

'exec(code_object))'return None,所以'print(exec(code_object))'是沒有意義的。參見[Python:如何將參數傳遞給__code__函數?](http://stackoverflow.com/questions/5874558/python-how-to-pass-arguments-to-the-code-of-a-function )。 –

+0

@EmL但從技術上講,exec(foo.func_code,{'x':1,'y':5})'不是__passing__參數。 –