中文字幕av高清_国产视频一二区_男女羞羞羞视频午夜视频_成人精品一区_欧美色视_在线视频这里只有精品

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Python中動態編譯函數compile參數filename的作用是什么?

Python中動態編譯函數compile參數filename的作用是什么?

來源:千鋒教育
發布人:xqq
時間: 2023-10-12 21:29:43 1697117383

一、Python中動態編譯函數compile參數filename的作用是什么

在Python中,compile()函數用于將普通的Python代碼編譯成代碼對象,以便稍后使用eval()函數或exec()函數來執行這些代碼對象。compile()函數有三個參數:source、filename和mode。其中,source參數是必須的,它指定了要編譯的Python代碼;filename和mode參數是可選的。

filename參數是一個字符串,用于指定用于編譯Python代碼的文件名。當編譯代碼對象時,如果指定了filename參數,那么Python編譯器會把編譯后的代碼對象和這個文件名關聯起來,并把文件名作為代碼對象的一個屬性。這個屬性在使用traceback模塊進行調試時非常有用,因為它可以幫助開發人員快速定位代碼中出現錯誤的位置。如果不指定filename參數,則在編譯代碼時不會創建這個屬性。需要注意的是,如果需要在exec或eval函數中執行編譯后的代碼時,需要傳遞與compile函數中指定的filename參數相同的文件名參數,以便調試器正確地跟蹤錯誤。

二、compile介紹

1、語法

compile內置函數,語法如下:

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

2、參數解釋

source:是一串字符串的源碼,或者是AST(抽像語法樹)對象數組,就是需要執行的代碼對象。filename:參數filename用于在執行代碼報錯的運行時錯誤消息中顯示該參數對應的信息,當source是執行代碼從文件中讀取的代碼字符串時,則可以存放文件名,如果不是從文件里讀取源碼來編譯,那么這里可以放一些用來標識這些代碼的字符串,其值理論上是任何字符串,沒有特殊要求,一般都放‘’,用于表示前面的source是個字符串,如果source放AST,則可以標識為‘’;mode:三個取值,分別是exec、single、eval,如果是exec表示編譯的是一段代碼或模塊,single表示編譯的是一個單獨的語句,eval表示編譯的是一個表達式而不是一個語句。flags和dont_inherit:這兩個參數是組合使用,可選參數 flags 和 dont_inherit 控制在編譯 source 時要用到哪個 future 語句。如果兩者都未提供(或都為零)則會使用調用 compile() 的代碼中有效的 future 語句來編譯代碼。 如果給出了 flags 參數但沒有 dont_inherit(或是為零)則 flags 參數所指定的 以及那些無論如何都有效的 future 語句會被使用。 如果 dont_inherit 為一個非零整數,則只使用 flags 參數 — 在調用外圍有效的 future 語句將被忽略。future 語句使用比特位來指定,多個語句可以通過按位或來指定。具體特性的比特位可以通過 __future__ 模塊中的 _Feature 類的實例的 compiler_flag 屬性來獲得。optimize:optimize到Python的代碼優化機制。Python為了適應不同的執行要求定義了幾種代碼優化的策略,如果缺省值是-1,表示使用命令行參數-O中獲取的優化等級為準;如果設置值為0,是沒有優化,__debug__為true支持debug信息(if __debug__語句下的語句,就是開發者根據需要加入的調試信息)在運行中展示;如果設置值為1,assert語句被刪除,__debug__設置為false確保調試語句不執行;如果設置值為2,除了設置值為1的功能之外,還會把代碼里文檔字符串也刪除掉,達到優異優化結果。

3、compile函數返回結果

如果編譯通過,結果可以生成字節碼(類型code)或者AST(抽像語法樹),字節碼可以使用函數exec()或eval來執行,而AST可以使用eval()來繼續編譯。ATS 對象:Abstract Syntax Tree,抽象語法樹,是源代碼語法結構的一種抽象表示。exec 執行儲存在字符串或文件中的Python語句,相比于 eval,exec可以執行更復雜的 Python 代碼。需要說明的是在 Python2 中exec不是函數,而是一個內置語句。如果編譯的源碼不合法,此函數會觸發 SyntaxError 異常;如果源碼包含空字節(空字符串),則3.5版本以前會觸發 ValueError 異常,3.5版本后則不會觸發可以編譯通過并執行。注意:

在 single 或 eval 模式編譯多行代碼字符串(這些串必須是一個完整語句或表達式而不是多個語句或表達式)時,輸入必須以至少一個換行符結尾如果編譯足夠大或者足夠復雜的字符串成 AST 對象時,Python 解釋器會因為 Python AST 編譯器的棧深度限制而崩潰

三、python介紹

1、簡介

Python由荷蘭數學和計算機科學研究學會的吉多·范羅蘇姆于1990年代初設計,作為一門叫做ABC語言的替代品。Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平臺上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨立的、大型項目的開發。

Python解釋器易于擴展,可以使用C語言或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。?Python也可用于可定制化軟件中的擴展程序語言。Python豐富的標準庫,提供了適用于各個主要系統平臺的源碼或機器碼。

2、優點

簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣。它使你能夠專注于解決問題而不是去搞明白語言本身。易學:Python極其容易上手,因為Python有極其簡單的說明文檔。易讀、易維護:風格清晰劃一、強制縮進速度較快:Python的底層是用C語言寫的,很多標準庫和第三方庫也都是用C寫的,運行速度非常快。免費、開源:Python是FLOSS(自由/開放源碼軟件)之一。使用者可以自由地發布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用于新的自由軟件中。FLOSS是基于一個團體分享知識的概念。高層語言:用Python語言編寫程序的時候無需考慮諸如如何管理你的程序使用的內存一類的底層細節。可移植性:由于它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工作在不同平臺上)。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux開發的android平臺。解釋性:一個用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。運行程序的時候,連接/轉載器軟件把你的程序從硬盤復制到內存中并且運行。而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成稱為字節碼的中間形式,然后再把它翻譯成計算機使用的機器語言并運行。這使得使用Python更加簡單。也使得Python程序更加易于移植。面向對象:Python既支持面向過程的編程也支持面向對象的編程。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在“面向對象”的語言中,程序是由數據和功能組合而成的對象構建起來的。Python是完全面向對象的語言。函數、模塊、數字、字符串都是對象。并且完全支持繼承、重載、派生、多繼承,有益于增強源代碼的復用性。Python支持重載運算符和動態類型。相對于Lisp這種傳統的函數式編程語言,Python對函數式設計只提供了有限的支持。有兩個標準庫(functools,itertools)提供了Haskell和Standard ML中久經考驗的函數式程序設計工具。可嵌入性:可以把Python嵌入C/C++程序,從而向程序用戶提供腳本功能。豐富的庫:Python標準庫確實很龐大。它可以幫助處理各種工作,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。這被稱作Python的“功能齊全”理念。除了標準庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。規范的代碼:Python采用強制縮進的方式使得代碼具有較好可讀性。而Python語言寫的程序不需要編譯成二進制代碼。Python的作者設計限制性很強的語法,使得不好的編程習慣(例如if語句的下一行不向右縮進)都不能通過編譯。其中很重要的一項就是Python的縮進規則。一個和其他大多數語言(如C)的區別就是,一個模塊的界限,完全是由每行的首字符在這一行的位置來決定(而C語言是用一對大括號來明確的定出模塊的邊界,與字符的位置毫無關系)。通過強制程序員們縮進(包括if,for和函數定義等所有需要使用模塊的地方),Python確實使得程序更加清晰和美觀。高級動態編程:雖然Python可能被粗略地分類為“腳本語言”(script language),但實際上一些大規模軟件開發計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支持者較喜歡稱它為一種高級動態編程語言,原因是“腳本語言”泛指僅作簡單程序設計任務的語言,如shellscript、VBScript等只能處理簡單任務的編程語言,并不能與Python相提并論。

3、開發工具

Tkinter:Python默認的圖形界面接口。Tkinter是一個和Tk接口的Python模塊,Tkinter庫提供了對Tk API的接口,它屬于Tcl/Tk的GUI工具組。PyGTK:用于python GUI程序開發的GTK+庫。GTK就是用來實現GIMP和Gnome的庫。PyQt:用于python的Qt開發庫。QT就是實現了KDE環境的那個庫,由一系列的模塊組成,有qt,qtcanvas,qtgl,qtnetwork,qtsql,qttable,qtui and qtxml,包含有300個類和超過5750個的函數和方法。PyQt還支持一個叫qtext的模塊,它包含一個QScintilla庫。該庫是Scintillar編輯器類的Qt接口。wxPython:GUI編程框架,熟悉MFC的人會非常喜歡,簡直是同一架構(對于初學者或者對設計要求不高的用戶來說,使用Boa Constructor可以方便迅速的進行wxPython的開發)屬于外置庫,要先下載。PIL:python提供強大的圖形處理的能力,并提供廣泛的圖形文件格式支持,該庫能進行圖形格式的轉換、打印和顯示。還能進行一些圖形效果的處理,如圖形的放大、縮小和旋轉等。是Python用戶進行圖象處理的強有力工具。Psyco:一個Python代碼加速度器,可使Python代碼的執行速度提高到與編譯語言一樣的水平。xmpppy:Jabber服務器采用開發的XMPP協議,Google Talk也是采用XMPP協議的IM系統。在Python中有一個xmpppy模塊支持該協議。也就是說,我們可以通過該模塊與Jabber服務器通信,是不是很Cool。PyMedia:用于多媒體操作的python模塊。它提供了豐富而簡單的接口用于多媒體處理(wav,mp3,ogg,avi,divx,dvd,cdda etc)。可在Windows和Linux平臺下使用。Pmw:Python megawidgets,Python超級GUI組件集,一個在python中利用Tkinter模塊構建的高級GUI組件,每個Pmw都合并了一個或多個Tkinter組件,以實現更有用和更復雜的功能。PyXML:用Python解析和處理XML文檔的工具包,包中的4DOM是完全相容于W3C DOM規范的。它包含以下內容:xmlproc:一個符合規范的XML解析器。Expat:一個快速的,非驗證的XML解析器。還有其他和他同級別的還有 PyHtml PySGML。PyGame:用于多媒體開發和游戲軟件開發的模塊。可以直接使用pip install pygame下載。

延伸閱讀1:python標準庫

Python擁有一個強大的標準庫。Python語言的核心只包含數字、字符串、列表、字典、文件等常見類型和函數,而由Python標準庫提供了系統管理、網絡通信、文本處理、數據庫接口、圖形系統、XML處理等額外的功能。Python標準庫命名接口清晰、文檔良好,很容易學習和使用。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 在线视频中文字幕 | 超碰首页 | 精品91 | 欧美久久精品 | 日本精品视频在线观看 | 国产视频一二区 | 欧美在线视频一区二区 | 国产伦精品一区二区三区照片91 | 成人欧美一区二区三区黑人孕妇 | 欧美 日韩 在线播放 | 久久精品网址 | 国产极品91| 精品免费国产一区二区三区 | 在线看av的网址 | 久久免费视频一区二区 | 国产v日产∨综合v精品视频 | 最新中文字幕视频 | 欧美一级免费大片 | 国产成人在线网站 | 成人区一区二区三区 | 久久伊人成人 | 成人在线播放 | 成人av电影免费观看 | 久久综合影院 | jizz在线观看| 中文字幕一区二区三区在线视频 | 国产ts余喵喵和直男多体位 | 日本伊人网站 | 久久夜夜| 久久精品久 | 日韩一二区 | 色橹橹欧美在线观看视频高清 | 亚洲欧美一区二区三区在线 | 久久h | 亚洲一区 国产 | 男女在线视频 | 99热国产在线观看 | 国产免费一区二区三区网站免费 | 超碰免费在线观看 | 高清久久| 欧美最猛性xxxxx亚洲精品 |