日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python解釋器簡介(2):代碼對象

這是Python解釋器簡介的第二部分。***部分請點擊這里 。

目前創(chuàng)新互聯(lián)建站已為上1000家的企業(yè)提供了網(wǎng)站建設、域名、虛擬空間、網(wǎng)站改版維護、企業(yè)網(wǎng)站設計、駐馬店網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

完成編譯之前的三個步驟都是在檢查一個簡單的函數(shù)對象。我們現(xiàn)在來談談更深層次的對象——函數(shù)的代碼對象。

 
 
  1. >>> def foo(a): 
  2. ...     x = 3 
  3. ...     return x + a 
  4. ... 
  5. >>> foo 
  6.  
  7. >>> foo.func_code 
  8. ", line 1> 

從上面的代碼,你能發(fā)現(xiàn)所謂的代碼對象就是函數(shù)對象的一個屬性。(這個函數(shù)對象還有許多其它的屬性,但它們大多都很無聊,因為 foo 函數(shù)實在是太簡單了。)

代碼對象是在Python編譯器中生成的,并且在解釋器中完成解釋工作。它向解釋器傳遞“開工了”的信息。我們再來看看代碼對象的屬性。

 
 
  1. >>> dir(foo.func_code) 
  2. ['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', 
  3. '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', 
  4. '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', 
  5. '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 
  6. 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 
  7. 'co_stacksize', 'co_varnames'] 

這個屬性列表雖然很長,但是其中大多數(shù)屬性我們今天并不會涉及。我們只關注3個有趣的 foo 函數(shù)代碼對象的屬性。

 
 
  1. >>> foo.func_code.co_varnames 
  2. ('a', 'x') 
  3. >>> foo.func_code.co_consts 
  4. (None, 3) 
  5. >>> foo.func_code.co_argcount 

通過調用它們,我們能依次得到:變量名、函數(shù)中已知的常量和函數(shù)參數(shù)的數(shù)量。但是目前為止,我們還是不知道生成代碼對象的指令到底是什么。事實上,這個指令叫做字節(jié)碼。字節(jié)碼也是代碼對象的一個屬性:

 
 
  1. >>> foo.func_code.co_code 
  2. 'd\x01\x00}\x01\x00|\x01\x00|\x00\x00\x17S' 

我們得到了許多待分解的信息。這里到底發(fā)生了什么?在下一部分,我們將深入研究字節(jié)碼。

原文鏈接:http://blog.jobbole.com/56300/


網(wǎng)站題目:Python解釋器簡介(2):代碼對象
鏈接分享:http://www.5511xx.com/article/cocedhc.html