我有一個簡單的函數,我想在兩個單獨的程序執行中調用。我第一次運行該程序可以節省函數指針到一個文件:使用指針地址在Python中調用函數
import cPickle
def test():
pass
def main():
a = test
pFile = open('test.txt', 'wb')
cPickle.dump(a, pFile)
pFile.close()
第二次,我要加載的文件並執行保存在對象的函數:
import cPickle
def test():
pass
def main():
pFile = open('test.txt', 'rb')
a = cPickle.load(pFile)
pFile.close()
a()
注意與cPickle,這是有效的,這有點奇怪,因爲我想這基本上是一個指向函數的指針,並且這會在運行時改變?當我打印'a'時,它給了我一些東西:功能測試在0x0351C170 :.
所以我想我的第一個問題是,爲什麼這個工作,即使參考地址應該在運行時改變?
而我的第二個問題是,如果它沒有改變/或者它在某種程度上是不相關的,那我該如何執行該函數,只需要在0x0351C170處使用字符串:: function test。例如是這樣的:
def test():
print 'test'
a = test
a() #outputs: 'test'
b = str(a) #<function test at 0x03509170>
eval(b)() #error
謝謝!這是很好的解釋 – Muppet 2011-12-28 04:58:39