av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

創(chuàng)新互聯(lián)Python教程:symtable——訪問編譯器的符號表

symtable ——訪問編譯器的符號表

Source code: Lib/symtable.py

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的魚峰網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!


符號表由編譯器在生成字節(jié)碼之前根據(jù) AST 生成。符號表負責(zé)計算代碼中每個標(biāo)識符的作用域。 symtable 提供了一個查看這些表的接口。

符號表的生成

symtable.symtable(code, filename, compile_type)

返回 python 源 代碼 頂層的 SymbolTable。filename 是代碼文件名。 compile_type 的含義類似 compile() 的 mode 參數(shù)。

符號表的查看

class symtable.SymbolTable

某個代碼塊的命名空間表。構(gòu)造函數(shù)不公開。

  • get_type()

    返回符號表的類型。可能是 'class' 、'module''function'。

  • get_id()

    返回符號表的標(biāo)識符

  • get_name()

    返回符號表的名稱。 若為類的符號表則返回類名;若為函數(shù)的符號表則為函數(shù)名;若是全局符號表則為 'top' (get_type() 返回 'module')。

  • get_lineno()

    返回符號表所代表代碼塊的第一行編號。

  • is_optimized()

    如果符號表中的局部變量可能被優(yōu)化過,則返回 True

  • is_nested()

    如果代碼塊是嵌套類或函數(shù),則返回 True。

  • has_children()

    如果代碼塊中有嵌套的命名空間,則返回 True??赏ㄟ^ get_children() 讀取。

  • get_identifiers()

    返回一個包含表中符號名稱的視圖對象。 參見 視圖對象文檔。

  • lookup(name)

    在符號表中查找 name 并返回一個 Symbol 實例。

  • get_symbols()

    返回符號表中所有符號的 Symbol 實例的列表。

  • get_children()

    返回嵌套符號表的列表。

class symtable.Function

函數(shù)或方法的命名空間。該類繼承自 SymbolTable。

  • get_parameters()

    返回由函數(shù)的參數(shù)名組成的元組。

  • get_locals()

    返回函數(shù)中局部變量名組成的元組。

  • get_globals()

    返回函數(shù)中全局變量名組成的元組。

  • get_nonlocals()

    返回函數(shù)中非局部變量名組成的元組。

  • get_frees()

    返回函數(shù)中自由變量名組成的元組。

class symtable.Class

類的命名空間。繼承自 SymbolTable。

  • get_methods()

    返回類中聲明的方法名組成的元組。

class symtable.Symbol

SymbolTable 中的數(shù)據(jù)項,對應(yīng)于源碼中的某個標(biāo)識符。構(gòu)造函數(shù)不公開。

  • get_name()

    返回符號名

  • is_referenced()

    如果符號在代碼塊中被引用了,則返回 True。

  • is_imported()

    如果符號是由導(dǎo)入語句創(chuàng)建的,則返回 True

  • is_parameter()

    如果符號是參數(shù),返回 True。

  • is_global()

    如果符號是全局變量,則返回 True。

  • is_nonlocal()

    如果符號為非局部變量,則返回 True。

  • is_declared_global()

    如果符號用 global 聲明為全局變量,則返回 True。

  • is_local()

    如果符號是代碼塊內(nèi)的局部變量,則返回 True

  • is_annotated()

    如果符號帶有注解,則返回 True

    3.6 新版功能.

  • is_free()

    如果符號在代碼塊中被引用,但未賦值,則返回 True。

  • is_assigned()

    如果符號在代碼塊中賦值,則返回 True。

  • is_namespace()

    如果符號名綁定引入了新的命名空間,則返回 True

    如果符號名用于函數(shù)或類定義語句,則為 True。

    例如:

       
       
       
       
    1. >>> table = symtable.symtable("def some_func(): pass", "string", "exec")
    2. >>> table.lookup("some_func").is_namespace()
    3. True

    注意,一個符號名可以與多個對象綁定。如果結(jié)果為 True,則該符號名還可以綁定到其他對象上,比如 int 或 list ,且不會引入新的命名空間。

  • get_namespaces()

    返回與符號名綁定的命名空間的列表。

  • get_namespace()

    Return the namespace bound to this name. If more than one or no namespace is bound to this name, a ValueError is raised.


當(dāng)前題目:創(chuàng)新互聯(lián)Python教程:symtable——訪問編譯器的符號表
文章源于:http://uogjgqi.cn/article/dhpojgo.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流