虛擬機工作前:
python 在運行.py 文件的時候,先進行編譯字節碼的形式來進行存在,字節碼的存在是為了優化速度。
字節碼的更改是通過時間戳來進行。字節碼發送的python 虛擬機之中,虛擬機是python解釋器的最后一部分
什么是字節碼?
字節碼就是為了提高速度,比如減少模塊加載的時間。
java python?虛擬機的具體工作:
虛擬機的工作就是翻譯的工作,字節碼就是為了優化速度!那字節碼是不是就是機能識別的代碼?答案是不是的,解釋器還是需要再次經過程序來翻譯的,這也是解釋語言的性能差的原因之一。
那我們學python有什么用?
python解釋器起到了中間"翻譯官"的功能,我們不需要了解機器底層是如何識別的,只需要關心如何讓解釋器來識別?是不是有點繞?簡而言之,我們可以隨意去寫我們的代碼,不需要關心底層就可以了。
那么解釋器如何理解我們的代碼呢?也就是類與對象呢?
實際上在python 之中類也是對象,甚至連函數都是對象!都是演繹好的,都他媽的是假的!!!!什么靜態方法,什么動態方法,都是python的語法糖,都是解釋器提前搭好的“臺子”。一種模擬面向對象(不過這點你不用擔心,我們還是可以使用,畢竟封裝多態繼承還是有的!!)
爬蟲python,實際上在python好了現在總結一下吧!!首先我們創建一個類,解釋器也就會創建一個對象(類對象)。按照類對象的功能取劃分命名空間!然后我們創建實例對象(實際上是類創建的)。最后運行我們的程序,編譯成字節碼,最后按照行來執行。
python 編譯過程!
1,python 在初始化環境的時候會預先加載一批內建模塊到內存,當我們導入模塊的時候解釋器會在其中搜索是否有模塊,如果存在就會導入到當前的命名空間,并且加載。
2,如果找不到就會為模塊創建一個字典對對象,將信息放置內存之中,加載前確認是否對文件編譯,如果需要那么就會先編譯。
3,執行動態加載,加載的是編譯后的字節碼。將所有的對象模塊放置相應的字典之中。
4,導入模塊時候放置命名空間的沖突。先編譯,會將自己文件的函數,或者變量覆蓋掉
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态