国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

            手機(jī)站
            千鋒教育

            千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

            千鋒教育

            掃一掃進(jìn)入千鋒手機(jī)站

            領(lǐng)取全套視頻
            千鋒教育

            關(guān)注千鋒學(xué)習(xí)站小程序
            隨時隨地免費(fèi)學(xué)習(xí)課程

            當(dāng)前位置:首頁  >  技術(shù)干貨  > Python中動態(tài)編譯函數(shù)compile參數(shù)filename的作用是什么?

            Python中動態(tài)編譯函數(shù)compile參數(shù)filename的作用是什么?

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

            一、Python中動態(tài)編譯函數(shù)compile參數(shù)filename的作用是什么

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

            filename參數(shù)是一個字符串,用于指定用于編譯Python代碼的文件名。當(dāng)編譯代碼對象時,如果指定了filename參數(shù),那么Python編譯器會把編譯后的代碼對象和這個文件名關(guān)聯(lián)起來,并把文件名作為代碼對象的一個屬性。這個屬性在使用traceback模塊進(jìn)行調(diào)試時非常有用,因?yàn)樗梢詭椭_發(fā)人員快速定位代碼中出現(xiàn)錯誤的位置。如果不指定filename參數(shù),則在編譯代碼時不會創(chuàng)建這個屬性。需要注意的是,如果需要在exec或eval函數(shù)中執(zhí)行編譯后的代碼時,需要傳遞與compile函數(shù)中指定的filename參數(shù)相同的文件名參數(shù),以便調(diào)試器正確地跟蹤錯誤。

            二、compile介紹

            1、語法

            compile內(nèi)置函數(shù),語法如下:

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

            2、參數(shù)解釋

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

            3、compile函數(shù)返回結(jié)果

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

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

            三、python介紹

            1、簡介

            Python由荷蘭數(shù)學(xué)和計算機(jī)科學(xué)研究學(xué)會的吉多·范羅蘇姆于1990年代初設(shè)計,作為一門叫做ABC語言的替代品。Python提供了高效的高級數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊?。Python語法和動態(tài)類型,以及解釋型語言的本質(zhì),使它成為多數(shù)平臺上寫腳本和快速開發(fā)應(yīng)用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨(dú)立的、大型項(xiàng)目的開發(fā)。

            Python解釋器易于擴(kuò)展,可以使用C語言或C++(或者其他可以通過C調(diào)用的語言)擴(kuò)展新的功能和數(shù)據(jù)類型。?Python也可用于可定制化軟件中的擴(kuò)展程序語言。Python豐富的標(biāo)準(zhǔn)庫,提供了適用于各個主要系統(tǒng)平臺的源碼或機(jī)器碼。

            2、優(yōu)點(diǎn)

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

            3、開發(fā)工具

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

            延伸閱讀1:python標(biāo)準(zhǔn)庫

            Python擁有一個強(qiáng)大的標(biāo)準(zhǔn)庫。Python語言的核心只包含數(shù)字、字符串、列表、字典、文件等常見類型和函數(shù),而由Python標(biāo)準(zhǔn)庫提供了系統(tǒng)管理、網(wǎng)絡(luò)通信、文本處理、數(shù)據(jù)庫接口、圖形系統(tǒng)、XML處理等額外的功能。Python標(biāo)準(zhǔn)庫命名接口清晰、文檔良好,很容易學(xué)習(xí)和使用。

            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
            請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
            免費(fèi)領(lǐng)取
            今日已有369人領(lǐng)取成功
            劉同學(xué) 138****2860 剛剛成功領(lǐng)取
            王同學(xué) 131****2015 剛剛成功領(lǐng)取
            張同學(xué) 133****4652 剛剛成功領(lǐng)取
            李同學(xué) 135****8607 剛剛成功領(lǐng)取
            楊同學(xué) 132****5667 剛剛成功領(lǐng)取
            岳同學(xué) 134****6652 剛剛成功領(lǐng)取
            梁同學(xué) 157****2950 剛剛成功領(lǐng)取
            劉同學(xué) 189****1015 剛剛成功領(lǐng)取
            張同學(xué) 155****4678 剛剛成功領(lǐng)取
            鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
            董同學(xué) 138****2867 剛剛成功領(lǐng)取
            周同學(xué) 136****3602 剛剛成功領(lǐng)取
            相關(guān)推薦HOT
            linux有什么優(yōu)點(diǎn)?

            1、開源Linux的主要優(yōu)點(diǎn)之一是它是一個開放源代碼的操作系統(tǒng),即每個人都可以輕松獲得其源代碼。任何有編程能力的人都可以出于任何目的貢獻(xiàn),修...詳情>>

            2023-10-12 23:08:52
            Python特點(diǎn)及應(yīng)用?

            一、Python的特點(diǎn)Python是一種高級編程語言,由Guido van Rossum于上世紀(jì)90年代初開發(fā),它具有以下特點(diǎn):1、語法簡潔易讀Python使用縮進(jìn)來表示...詳情>>

            2023-10-12 23:00:52
            為什么Oracle收購MySQL后仍保證其開源免費(fèi)?

            一、為什么Oracle收購MySQL后仍保證其開源免費(fèi)MySQL在收購前一直使用GPL許可分發(fā),而GPL許可是不可撤銷的,這意味著至少被收購之前的最后一個Re...詳情>>

            2023-10-12 22:52:49
            為什么MySQL對SQL標(biāo)準(zhǔn)中很多基本用法都不支持?

            一、為什么MySQL對SQL標(biāo)準(zhǔn)中很多基本用法都不支持因?yàn)楫?dāng)年,在微軟.net技術(shù)棧下開發(fā)應(yīng)用,用的就是sql server數(shù)據(jù)庫。在特性方面,不僅緊跟sql...詳情>>

            2023-10-12 22:49:20
            數(shù)據(jù)庫與Microsoft Excel有什么區(qū)別?

            一、數(shù)據(jù)庫與Microsoft Excel的區(qū)別1、結(jié)構(gòu)不同excel即是電子數(shù)據(jù)表,顯示由一系列行與列構(gòu)成的網(wǎng)格。。其中的單元格可以用于存放數(shù)值、計算式...詳情>>

            2023-10-12 22:47:09