亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Python > 正文

Python compile()方法

2023-04-24 19:21:35
字體:
來源:轉載
供稿:網友

Python中可以使用compile()方法把源程序編譯成代碼對象或AST(Abstract Syntax Tree)模塊對象。使用compile()方法生成的代碼對象可以使用exec()函數或eval()函數執行。

compile()語法格式

官方文檔給出的語法格式如下:

compile(source, filename, mode, flags = 0, dont_inherit = False, optimize = -1)

參數

source:必要參數,生成代碼對象的源,其可以是一個字符串、字節字符串或AST對象。

filename:必要參數,該參數給出可以讀取源代碼的文件,如果不是從文件中讀取源代碼,則可以給一個可識別值,通常是一個字符串。

mode:必要參數,該參數用于指定代碼編譯的模式,主要有以下三種:

① exec:如果源代碼包含多條Python語句時,選用此模式;

②eval:如果源代碼僅包含一個表達式時,選用此模式;

③single:如果源代碼包含一個交互語句時,選用此模式;

flags和dont_inherit是兩個可選參數,控制編譯器的選項是否在將來的Python版本中進行使用。flags默認為0,dont_inherit默認為False。如果這兩個值都未指定或都為0,則代碼使用compile()函數相同的標志影響代碼。如果指定了flags參數,而未指定dont_inherit參數(或為0),那么由編譯器指定的選項和由flags參數指定的將來語句將被用于將來進行編譯。如果dont_inherit參數是非0的整數,那么flags參數就是代碼中的將來特征和編譯器選項,這些標記值將被忽略。

optimize:用于指定編譯器的優化水平。默認值為-1,指使用Python解釋器的優化級別(移除斷言語句以及任何以__debug__值為條件的語句)。0表示不進行優化(__debug__值為True);1移除代碼中的斷言語句,同時模塊中的__debug__值為false。2在1的基礎上,同時移除文檔字符串。

返回值

該函數返回一個代碼對象,可供exec或eval執行。

compile()函數示例

下面是把一個字符串代碼變異成代碼對象的例子。

#定義源代碼串,多行代碼使用/n換行
str1 = "x=3/ny=5/nprint('x+y=',x+y)"
#編譯成代碼對象
code_obj = compile(str1,'sum.py','exec')
#code_obj的類型
print(type(code_obj))
#執行代碼對象
exec(code_obj)

輸出結果:

<class 'code'>
x+y= 8

從這個例子中,我們首先定義了一個源碼字符串str1,并且讓其作為compile()函數的第一個參數,第二個參數是一個必需的參數,所以我們這里使用sum.py作為其參數,其實這個參數必須有,但是什么樣的字符串無所謂。因為有多行代碼,我們這里使用exec編譯模式。編譯完后,使用exec調用代碼對象,并輸出其結果。同時,在這個例子中,我們注意到compile()函數生成的對象類型為<class 'code'>類型的。

下面這個例子是從文件中讀取源代碼的例子。

我們首先定義一個Python源程序文件:temp.py,在該文件中輸入以下內容:

str1 = "I Love China"
str2 = "I Love Harbin."
print(str1 + "," + str2)

然后與temp.py文件同目錄下建立一個新的文件cmp.py,代碼如下:

#以只讀格式打開文件
f = open('temp.py','r')
#讀取文件的內容到變量str_code中
str_code = f.read()
#關閉文件
f.close()
#編譯代碼
code_obj = compile(str_code, 'temp.py', 'exec')
#執行代碼對象
exec(code_obj)

輸出結果如下:

I Love China,I Love Harbin.

這里雖然是從文件中讀取的源代碼,但第2個參數仍然隨意寫一個字符串。

下面再舉一個eval模式的例子。

dic ={"lang1":"R","lang2":"Python"}
code_obj1 = compile('dic["lang1"]','value','eval')
res1 = eval(code_obj1)
print(res1)

code_obj2 = compile("print(dic)","","eval")
res2 = eval(code_obj2)

輸出結果如下:

R
{'lang1': 'R', 'lang2': 'Python'}

下面再舉一個source為字節字符串的例子。

s = "str1='我愛中國.'/nstr2='我愛北京'/nprint(str1+str2)"
bytes_s = bytes(s,'utf-8')
code_obj = compile(bytes_s,"","exec")
exec(code_obj)

輸出結果如下:

我愛中國.我愛北京

上面代碼中,bytes()函數的作用是把字符串轉換為字節字符串,關于bytes()函數的使用,請見本站:Python bytes()函數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品a久久久久久| 久久九九有精品国产23| 亚洲最大av网站| 亚洲国产精品视频在线观看| 欧美香蕉大胸在线视频观看| 国产精品扒开腿做爽爽爽的视频| 国产一区二区黑人欧美xxxx| 动漫精品一区二区| 国产成人avxxxxx在线看| 亚洲大胆美女视频| 久久免费观看视频| 精品成人乱色一区二区| 91免费看片在线| 欧美又大粗又爽又黄大片视频| 久久久999精品| 国产精品久久久久久久久免费| 久久精品99久久久香蕉| 亚洲视频精品在线| 黄色91在线观看| 欧美高清在线视频观看不卡| 国产精品嫩草影院久久久| 欧美在线影院在线视频| 一个人www欧美| 欧美激情亚洲综合一区| 日韩不卡中文字幕| 亚洲人成人99网站| 最近中文字幕2019免费| 26uuu国产精品视频| 97色在线观看免费视频| 欧美视频免费在线| 日本a级片电影一区二区| 伊人亚洲福利一区二区三区| 97视频在线看| 高清视频欧美一级| 91黑丝在线观看| 国产精品免费电影| 久久久成人av| 中文字幕亚洲欧美日韩2019| 亚洲老司机av| 日韩精品免费综合视频在线播放| 亚洲视频日韩精品| 成人精品久久一区二区三区| 2019精品视频| 久久视频在线视频| 国产成人极品视频| 日韩av在线免播放器| 国产精品日韩在线一区| 庆余年2免费日韩剧观看大牛| 日韩国产高清污视频在线观看| 亚洲欧美日韩精品久久| 日韩精品视频中文在线观看| 久久久久久网址| 亚洲国产婷婷香蕉久久久久久| 欧美国产日韩免费| 亚洲国产精品女人久久久| 国产成人精品综合久久久| 欧美激情视频在线观看| 亚洲视频国产视频| 亚洲成人动漫在线播放| 国语自产在线不卡| 韩国视频理论视频久久| 国内免费精品永久在线视频| 欧美日韩免费在线| 精品视频在线观看日韩| 亚洲老板91色精品久久| 欧美日韩黄色大片| 欧美有码在线观看视频| 日本一区二区三区四区视频| 久久久99免费视频| 亚洲精品国精品久久99热| 中文字幕日韩精品在线| 亚洲中国色老太| 久久伊人精品视频| 狠狠操狠狠色综合网| 中文字幕综合一区| 国产精品久久久久久久久久久新郎| 国产一区二区动漫| 欧美黄色成人网| 欧美性猛xxx| 亚洲精品久久久一区二区三区| 亚洲美女av网站| 欧美激情一区二区久久久| 91精品久久久久久久久久另类| 欧美一区二区三区图| 亚洲精品一区中文字幕乱码| 欧美激情videoshd| 日韩精品在线免费| 欧美第一黄色网| 在线视频免费一区二区| 欧美大片第1页| 国产精品久久999| 亚洲精品一区av在线播放| 欧美大尺度激情区在线播放| 亚洲一区av在线播放| 国产精品第一区| 欧美中文字幕在线视频| 国产精品久久久av| 欧美日韩日本国产| 2021国产精品视频| 欧美大片免费看| 国产精品影院在线观看| 色综合男人天堂| 欧美精品制服第一页| 久久久久久97| 国产精品av电影| 国产免费久久av| 欧美国产第二页| 亚洲欧美日韩中文视频| 国产日韩在线免费| 91av在线不卡| 国色天香2019中文字幕在线观看| 欧美午夜精品久久久久久人妖| 欧美高跟鞋交xxxxxhd| 91高清免费在线观看| 亚洲v日韩v综合v精品v| 亚洲电影免费观看高清完整版在线观看| 日韩中文字幕第一页| 成人国产精品一区| 91精品国产综合久久久久久蜜臀| 亚洲视频日韩精品| 欧美不卡视频一区发布| 成人黄色激情网| 欧美午夜激情小视频| 一区二区三区视频观看| 国产精品普通话| 欧美亚洲一区在线| 日韩高清电影免费观看完整版| 日韩高清电影免费观看完整| 国产精品免费一区二区三区都可以| 亚洲天堂男人天堂女人天堂| 亚洲午夜未满十八勿入免费观看全集| 色综合伊人色综合网| 亚洲自拍偷拍一区| 日本精品视频在线观看| 久久91亚洲精品中文字幕奶水| 国产日韩精品综合网站| 欧美www在线| 国产免费一区二区三区在线观看| 欧美亚洲另类视频| 色久欧美在线视频观看| 一区二区三区高清国产| 国产精品美女av| 日韩精品视频在线免费观看| 午夜精品久久久久久久男人的天堂| 国产精品久久久久久久久久久久| 中文字幕免费精品一区高清| 久久久久久九九九| 91精品国产高清自在线看超| 久久激情视频免费观看| 亚洲成年人在线| 欧美大荫蒂xxx| 欧美一级在线播放| 欧美精品久久久久久久免费观看| 伊人av综合网| 欧美在线激情视频| 国产精品jvid在线观看蜜臀| 久久在线视频在线| 欧美精品激情在线观看| 免费99精品国产自在在线| 国产日韩欧美成人| 国产精品视频26uuu| 亚洲欧美国产另类| 成人中文字幕+乱码+中文字幕| 伊人伊成久久人综合网站|