compile函式允許程式設計師在執行時刻迅速生成**物件,然後就可以用exec語句或者內建函式eval 來執行這些物件或者對它們進行求值。乙個很重要的觀點是:exec和eval者可以執行字串格式的python**。
這也是與c++等靜態語言最重要的區別。
compile的三個引數都是必須的,第一引數代表了要編譯的python**。第二個字串,雖然是必須的,但通常被置為空串。最後的引數是個字串,它用來表明**物件的型別。有三種可能值:
『eval』 可求值的表示式,和eval一起使用
『single』 單一可執行語句,和exec一起使用
『exec』 可執行語句組,和exec一起使用。
1、可求值表示式
eval_code = compile('100 + 200', '', 'eval')
print eval(eval_code)
2、單一可執行語句:
single_code = compile('print "hello world!"', '', 'single')
exec single_code
hello world!
3、可執行語句組:
exec_code = compile("""
req = input('count how many numbers? ')
for eachnum in range(req):
print eachnum
""", '', 'exec')
exec exec_code
count how many numbers? 0
1 2
3 4
5
python 可呼叫物件
compile函式允許程式設計師在執行時刻迅速生成 物件,然後就可以用exec語句或者內建函式eval 來執行這些物件或者對它們進行求值。乙個很重要的觀點是 exec和eval者可以執行字串格式的python 這也是與c 等靜態語言最重要的區別。compile的三個引數都是必須的,第一引數代表了要編...
python的可呼叫物件
這篇文章 定義 call 使乙個類成為可呼叫,相當於過載了 class g dpm object def init self,g self.g g def call self,t return self.g t 2 2 甚至可以這樣使用 print g dpm 9.8 2 g dpm 9.8 相當於...
python的可呼叫物件
這篇文章 定義 call 使乙個類成為可呼叫,相當於過載了 class g dpm object def init self,g self.g g def call self,t return self.g t 2 2 甚至可以這樣使用 print g dpm 9.8 2 g dpm 9.8 相當於...