成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python解釋器簡介(1):函數(shù)對象

開發(fā) 后端
近三個(gè)月,我和Ned Batchelder用了很多時(shí)間在做byterun。 它是用Python寫的Python字節(jié)碼解釋器。做 byterun 的過程十分有趣,也讓我收獲了很多知識。

在最近三個(gè)月,我和Ned Batchelder用了很多時(shí)間在做byterun。 它是用Python寫的Python字節(jié)碼解釋器。做 byterun 的過程十分有趣,也讓我收獲了很多知識。在這個(gè)系列文章的結(jié)尾,我將試著讓你相信:你也能輕松愉快地“玩” byterun。但在那之前,我們需要做一些準(zhǔn)備工作:大概了解python內(nèi)部是如何工作的。這樣我們才能理什么是解釋器,它能做什么以及它不能做什 么。

這個(gè)系列文章是面向水平和三個(gè)月前的我相似的讀者。也就是你了解python,但對它的內(nèi)部工作一無所知。

提示:本文將基于 Python 2.7 , Python 3 中的解釋器也非常相似。雖然我會忽略兩個(gè)版本之間的語法和命名差異,但我這個(gè)系列同樣可以試用于 Python3。

Python是如何工作的?

我們將從高層開始了解python的內(nèi)部工作。你在你的python REPL里執(zhí)行一行代碼之后,它是如何工作的呢?

  1. ~ $ python 
  2. Python 2.7.2 (default, Jun 20 201216:23:33
  3. [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin 
  4. Type "help""copyright""credits" or "license" for more information. 
  5. >>> a = "hello" 

當(dāng)你敲下return鍵的時(shí)候,python完成了以下四步:詞法分析、句法分析、編譯、解釋。詞法分析的工作就是將你剛才輸入的那行代碼分解為一些符號token(譯者注:包括標(biāo)示符,關(guān)鍵字,數(shù)字, 操作符等)。句法分析程序再接收這些符號,并用一種結(jié)構(gòu)來展現(xiàn)它們之間的關(guān)系(在這種情況下使用的抽象語法樹)。然后編譯器接收這棵抽象語法樹,并將它轉(zhuǎn)化為一個(gè)(或多個(gè))代碼對象。***,解釋器逐個(gè)接收這些代碼對象,并執(zhí)行它們所代表的代碼。

主要是因?yàn)槲椰F(xiàn)在對這些步驟一竅不通,所以我并不打算詳解詞法分析、句法分析和編譯。但是,我們假設(shè)這些步驟都正常運(yùn)行,并且能夠提供給解釋器一個(gè)合適的python代碼對象來完成解釋工作。

在我們談?wù)摯a對象之前,我想先解答一些常見的疑惑。我們將在這個(gè)系列文章中講解函數(shù)對象、代碼對象以及字節(jié)碼。它們是 完全不同的概念。我們就從函數(shù)對象談起吧。雖然我們不需要了解函數(shù)對象到達(dá)解釋器的過程,但是我想強(qiáng)調(diào)函數(shù)對象和代碼對象是截然不同的(另外,函數(shù)對象超 棒!)。

函數(shù)對象

你也許對“函數(shù)對象”早有耳聞。當(dāng)談到“函數(shù)是***的對象”或者“Python有著最棒的函數(shù)”時(shí),人們總會提起它。那我們就來看一個(gè)函數(shù)對象吧。

  1. >>> def foo(a): 
  2. ...     x = 3 
  3. ...     return x + a 
  4. ... 
  5. >>> foo 
  6. <function foo at 0x107ef7aa0

“函數(shù)是***的對象”說明函數(shù)是一種對象。它就如同一個(gè)列表或者舉個(gè)例子來說 :MyObject 就是一個(gè)對象。既然 foo 是一個(gè)對象,那么我們就能在不調(diào)用它的情況下使用它(也就是說,foo 和 foo() 是大相徑庭的)。我們能夠?qū)?nbsp;foo 當(dāng)作一個(gè)參數(shù)傳遞 給另一個(gè)函數(shù)或者賦值給一個(gè)新函數(shù)名( other_function = foo )。有了如此棒的函數(shù),一切皆為可能!

在第二部分,我們將著眼于下一層次——代碼對象。

原文鏈接:http://akaptur.github.io/blog/2013/11/15/introduction-to-the-python-interpreter/

譯文鏈接:http://blog.jobbole.com/55327/

責(zé)任編輯:陳四芳 來源: 伯樂在線
相關(guān)推薦

2014-01-21 09:42:32

Python代碼對象

2010-03-04 11:07:21

Python解釋器

2021-07-07 10:31:19

對象池模式解釋器模式設(shè)計(jì)模式

2010-02-01 10:04:25

Python模板函數(shù)

2016-09-12 14:05:27

PythonPython解釋器Web

2019-07-24 13:42:34

Python編程語言代碼

2023-10-18 10:48:44

Python解釋器

2010-02-01 17:11:45

Python 解釋器

2010-02-03 15:01:33

Python 解釋器

2009-07-08 16:52:29

ScalaScala教程

2009-07-08 16:10:24

Scala簡介面向?qū)ο?/a>函數(shù)式

2010-10-28 10:54:46

oracle對象權(quán)限

2010-02-01 13:55:12

Python 解釋器

2010-02-01 17:41:54

Python 解釋器

2010-02-22 16:40:22

Python解釋器

2022-01-05 08:58:08

Python解釋器編程語言

2009-11-11 13:51:23

VS DisplayI

2010-10-11 16:19:30

Mysql聚合函數(shù)

2010-10-25 15:12:42

Oracle日期函數(shù)

2010-10-25 17:28:05

Oracle bita
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 午夜影视 | 国产成人一区在线 | 亚洲精品福利视频 | 久久久久久av | 在线午夜| 久久国内 | 二区精品| 91香蕉| 在线免费观看黄色 | 亚洲成人av一区二区 | 亚洲国产伊人 | 国产精品久久久久久久免费大片 | 一区二区精品电影 | av先锋资源| 亚洲一区二区在线 | 99热热99| 欧美精品一区二区三区蜜桃视频 | 亚洲国产精品久久久久秋霞不卡 | 久久精品影视 | 国产精品久久毛片av大全日韩 | 免费一二区 | 国产高清美女一级a毛片久久w | 欧产日产国产精品99 | 亚洲在线一区 | 日本一区二区三区在线观看 | 亚洲国产精品久久 | 免费一二区 | 欧美淫| 国产精久久久久久 | 色精品视频 | 成人免费观看男女羞羞视频 | www亚洲免费国内精品 | 亚洲精品乱码久久久久久按摩观 | 成人欧美一区二区三区白人 | 亚洲国产精品一区二区久久 | 日韩欧美一二三区 | 精品一区二区三区在线播放 | 成人免费在线小视频 | 四虎精品在线 | 中文字幕精品一区二区三区精品 | 久久国产成人精品国产成人亚洲 |