python編輯器哪個好用 既然Python是用C實現(xiàn)的,那為什么Python不能直接生成exe呢?
既然Python是用C實現(xiàn)的,那為什么Python不能直接生成exe呢?C語言實際上是一種“舊”和“底層”語言。其執(zhí)行效率僅次于匯編語言。它之所以古老是因為C語言出現(xiàn)得很早。盡管FORTRAN和COB
既然Python是用C實現(xiàn)的,那為什么Python不能直接生成exe呢?
C語言實際上是一種“舊”和“底層”語言。其執(zhí)行效率僅次于匯編語言。
它之所以古老是因為C語言出現(xiàn)得很早。
盡管FORTRAN和COBOL比C語言出現(xiàn)得早,但現(xiàn)代主流操作系統(tǒng)(windows、Mac OS、Linux、IOS、Android、Unix)都是從C語言中誕生的。
最根本的原因是C語言被設計用來同時編寫匯編語言。從理論上講,它可以用外匯來表示。匯編語言是最有效的語言。
所以Python是用C語言編寫的也就不足為奇了。它與能否生成exe無關。
Exe文件是Windows平臺的專用格式。最簡單的exe是com可執(zhí)行文件。EXE文件實際上由引導加載程序和解釋器組成。
由Python語言生成的代碼只能通過引導加載程序和解釋器作為EXE文件執(zhí)行。
因此Python生成EXE文件并不困難。只是它是否愿意提供的問題。
python中使用from import語句和import語句的程序打包后前者exe體積會比后者小嗎?
客戶端可以執(zhí)行import或from語句。
如果模塊尚未加載,這兩條語句將搜索、編譯和執(zhí)行模塊文件程序。主要區(qū)別在于import將讀取整個模塊,因此必須先定義它,然后才能讀取其變量名;from將獲取(或復制)模塊特定的變量名。Import使變量名引用整個module對象,因此module屬性(例如module1)。打印機)必須通過模塊名稱獲取。from會將變量名復制到另一個作用域,因此它可以直接在腳本中使用復制的變量名,而不必使用模塊(例如,printer)。from語句可能會破壞命名空間。如果使用from來導入變量,并且這些變量恰好與作用域中現(xiàn)有的變量同名,那么這些變量將被悄悄地重寫。使用import語句時不存在此問題,因為必須使用模塊名才能獲取其內容。但是,在使用from時,只要您知道并預期會發(fā)生這種情況,在實踐中這并不是一個大問題,特別是當您顯式列出導入變量名時(例如,from module import x,y,z)。另一方面,當與reload調用一起使用時,from語句有一個嚴重的問題,因為導入的變量名可能引用以前版本的對象。此外,module import*中的表單確實會破壞名稱空間,使變量名難以理解,尤其是在導入多個文件時。一個更實用的建議是簡單的模塊傾向于使用import而不是from。大多數(shù)from語句用于顯式列出所需的變量,并且在每個文件中僅限于一個from*形式。這樣,任何未定義的變量名都可以認為存在于from*引用的模塊中。當必須使用在兩個不同模塊中定義的相同變量名變量時,實際上必須使用import。在這種情況下,不能使用from。