久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python語法速查: 15. 解釋器與執(zhí)行環(huán)境

 文炳春秋 2020-03-31

本篇索引

(1)Python解釋器

(2)Python交互式會(huì)話

(3)運(yùn)行Python程序

(4)解釋器內(nèi)置類型

  (1)Python解釋器

● 基本用法

Python解釋器可以在命令行模式下運(yùn)行,以下是運(yùn)行語法:

python [options] [-c cmd | filename | - ] [args]

若指定filename,,則Python解釋器將打開指定文件并執(zhí)行其語句,,直到文件結(jié)束標(biāo)志; 若filename未指定,,則進(jìn)入“交互式會(huì)話”,。

-c cmd選項(xiàng)可用于以命令行選項(xiàng)形式執(zhí)行短程序,如:python -c "print('hello')"

args參數(shù)將通過sys.args傳遞給程序,,程序中可讀出這些參數(shù),。

以下是常用 [options] 選項(xiàng)

選項(xiàng)說明
-B阻止在導(dǎo)入時(shí)創(chuàng)建 .pyc 或 .pyo 文件
-E忽略環(huán)境變量
-h打印所有可用命令行選項(xiàng)的列表
-i在程序執(zhí)行后進(jìn)入交互模式(對(duì)調(diào)試很有用)
-m module以腳本的形式運(yùn)行庫模塊 module
-O優(yōu)化模式
-OO優(yōu)化模式,在創(chuàng)建 .pyo 文件時(shí)刪除文檔字符串
-s阻止將用戶站點(diǎn)目錄添加到 sys.path
-S阻止包含 site 初始化模塊
-t報(bào)告關(guān)于不一致的制表符使用警告
-tt由于不一致的制表符使用而導(dǎo)致 TabError 異常
-u未緩沖的二進(jìn)制 stdout 和 stdin
-U在Python2中,,使所有字符串字面量都以 Unicode 形式處理(Python3中無效)
-v詳細(xì)模式,,跟蹤導(dǎo)入語句
-V打印版本號(hào)并退出
-x跳過源程序的第一行
-c cmd以字符串形式執(zhí)行 cmd

● 環(huán)境變量

Python啟動(dòng)時(shí),會(huì)從操作系統(tǒng)中讀取一些環(huán)境變量(如果有),,以下是一些常用的環(huán)境變量:

環(huán)境變量說明
PYTHONPATH以冒號(hào)分隔的模塊搜索路徑,,在Windows上,還可以從 HKEY_LOCAL_MACHINE/Software/Python 的注冊(cè)表項(xiàng)讀取
PYTHONSTARTUP在以交互方式啟動(dòng)時(shí)執(zhí)行的文件
PYTHONHOMEPython的安裝位置
PYTHONINSPECT相當(dāng)于 -i 選項(xiàng)
PYTHONBUFFERED相當(dāng)于 -u 選項(xiàng)
PYTHONIOENCODING針對(duì) stdin, stdout, stderr 的編碼和錯(cuò)誤處理,這是一個(gè) encoding[:errors] 形式的字符串,,如:utf-8:ignore
PYTHONDONTWRITEBYTECODE相當(dāng)于 -B 選項(xiàng)
PYTHONOPTIMIZE相當(dāng)于 -O 選項(xiàng)
PYTHONNOUSERSITE相當(dāng)于 -s 選項(xiàng)
PYTHONVERBOSE相當(dāng)于 -v 選項(xiàng)
PYTHONUSERBASE每個(gè)用戶站點(diǎn)包的根目錄
PYTHONCASEOK指示對(duì)導(dǎo)入所使用的模塊名稱使用不區(qū)分大小寫的匹配方式

  (2)Python交互式會(huì)話

如果沒有給定程序名稱,,并且Python解釋器的標(biāo)準(zhǔn)輸入為一個(gè)交互式終端,Python將在交互模式下啟動(dòng),。 在這種模式下,,解釋器會(huì)執(zhí)行PYTHONSTARTUP環(huán)境變量(如果有)中包含的腳本。 該腳本將作為輸入程序的一部分執(zhí)行(即無需使用 import 語句加載它),。 該腳本的第一項(xiàng)應(yīng)用就是讀取用戶配置文件,,如 .pythonrc。

可以修改sys.ps1sys.ps2的值來更改提示符,。

在交互模式下,,最后一次運(yùn)算的結(jié)果存儲(chǔ)在特殊變量_中??梢栽诮换ツJ街惺褂眠@個(gè)變量,。如:

>>> 1 + 2
5
>>> _ + 3
>>> 6

默認(rèn)情況下,交互模式下運(yùn)行的結(jié)果會(huì)在屏幕上全部打印出來,。通過將變量sys.displayhook設(shè)為自定義函數(shù),, 可以省略顯示運(yùn)行結(jié)果,下面是一個(gè)例子,,對(duì)于要顯示結(jié)果大于40個(gè)字符的結(jié)果,,省略顯示其中的中間部分:

復(fù)制代碼
>>> def my_display(x):
...     r = repr(x)
...     if len(r) > 40: print(r[:40] + '...' + r[-1])
...     else: print(r)
>>> sys.sisplayhook = my_display
>>> list(range(100))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1...]
>>> 
復(fù)制代碼

  (3)運(yùn)行Python程序

● 啟動(dòng)Python應(yīng)用程序

在Linux環(huán)境下,有以下2個(gè)方法可以自動(dòng)啟動(dòng)Python解釋器來執(zhí)行 .py 文件,,

方法一:通過chmod增加x屬性的方法

方法二:可在.py文件頭部指定Python解釋器名稱, 如: #!/usr/bin/python3

在Windows環(huán)境下,,雙擊:.py, .pyw, .wpy, .pyc, .pyo 將自動(dòng)啟動(dòng)Python解釋器,。 通常,程序在控制臺(tái)窗口中運(yùn)行,,若使用了.pyw 后綴對(duì)它們進(jìn)行了重命名,,程序?qū)㈧o默運(yùn)行。 如果要為解釋器提供選項(xiàng),,Python也可以從一個(gè) .bat 文件啟動(dòng),。

● 程序終止

當(dāng)出現(xiàn)以下情況時(shí),程序?qū)?huì)終止:輸入程序中沒有可執(zhí)行的其他語句時(shí),、 出現(xiàn)未捕獲的 SystemExit 異常(由sys.exit()生成),, 解釋器收到SIGTERMSIGHUP信號(hào)時(shí)。

程序退出時(shí),,解釋器減小當(dāng)前已知命名控件中所有對(duì)象的引用計(jì)數(shù)(同時(shí)銷毀每個(gè)命名空間),。 如果一個(gè)對(duì)象的引用計(jì)數(shù)達(dá)到0,將銷毀該對(duì)象并調(diào)用其__del__()方法,。 但是若對(duì)象之間存在循環(huán)引用,,就可能在程序終止時(shí)不會(huì)調(diào)用這個(gè)對(duì)象的__del__(),, 所以這時(shí)需要顯式清除某些對(duì)象(比如已打開的文件或網(wǎng)絡(luò)套接字); 或者利用垃圾回收器來完成這個(gè)工作,。

用戶可以編寫一個(gè)終止函數(shù)并將其注冊(cè)到 atexit 模塊,,用戶可以用法示例如下:

復(fù)制代碼
1
2
3
4
5
6
7
import atexit, gc
def cleanup():
    print('before program exit...')
    gc.collect()    # 調(diào)用垃圾回收器來完成清除工作
     
atexit.register(cleanup)
復(fù)制代碼

有時(shí)候希望不執(zhí)行任何清除操作而終止程序執(zhí)行,這可以同通過調(diào)用os._exit(status)來完成,。 該函數(shù)提供了針對(duì)底層 “exit()系統(tǒng)調(diào)用”的接口,,調(diào)用該函數(shù)時(shí),程序?qū)⒘⒓唇K止,, 而且不會(huì)執(zhí)行任何進(jìn)一步的清除操作,。

● site配置文件

(1)第三方站點(diǎn)目錄

一般Python的第三方模塊和包(比如通過 pip 安裝的包)會(huì)被安裝到 site-package 目錄下, 這個(gè)目錄稱為第三方站點(diǎn)目錄,。在第三方站點(diǎn)目錄中安裝的包,,所有用戶都能使用。 在Linux中,,這個(gè)目錄一般在形如:/usr/local/lib/python3.7/site-package 的地方,; 在Windows中,這個(gè)目錄一般在形如:Python安裝目錄\Lib\site-packages 的地方,。

當(dāng)向第三方站點(diǎn)目錄安裝包時(shí),,如果該包已經(jīng)存在于用戶站點(diǎn)目錄中,pip則會(huì)通知你該包已安裝,。

(2)用戶站點(diǎn)目錄

用戶也可以安裝僅供自己使用的包(其他用戶不能使用),,這可以在 pip 安裝(或setup.py安裝)時(shí), 通過參數(shù) --user 實(shí)現(xiàn),,如:pip3 install --user numpy,。 在Linux中,這個(gè)目錄一般在形如:~/.local/lib/python3.7/site-package 的地方,; 在Windows中,,這個(gè)目錄一般在形如:%APPDATA%\Python\Python37\site-packages 的地方。

(3)site模塊

當(dāng)在程序中使用import語句時(shí),,Python會(huì)使用sys.path中指定的目錄來搜索模塊,, 而這個(gè)sys.path內(nèi)容的初始化,是通過 site 模塊完成的,。

Python解釋器啟動(dòng)時(shí),,首先會(huì)導(dǎo)入 site 模塊,它先導(dǎo)入第三方站點(diǎn)目錄和用戶站點(diǎn)目錄,, 并將這些目錄添加到sys.path中,。然后在這些目錄中搜索路徑配置文件(具有 .pth后綴的文件), 將這些配置中的路徑也一一添加到sys.path中(如果該路徑存在的話)。

路徑配置文件中的每個(gè)目錄都必須在單獨(dú)一行列出,,注釋和空行將被忽略,,重復(fù)的項(xiàng)目?jī)H添加一次。 路徑配置文件中的每行可以是:目錄,、zip文件 或 .egg 文件,。

用戶甚至還可以編輯 site.py 的源碼,用于完成自己一些獨(dú)特的配置需求,。這個(gè)文件一般位于 /usr/lib64/python3.7/ 目錄下,。

  (4)解釋器內(nèi)置類型

用戶一般很少需要直接操作解釋器內(nèi)部使用的對(duì)象,但是Python也將它們暴露給用戶,, 如果是設(shè)計(jì)框架或工具構(gòu)建可能會(huì)用到這些解釋器內(nèi)部對(duì)象,。

解釋器內(nèi)置類型

類型名稱說明
types.CodeType字節(jié)編譯代碼的類型
types.FrameType執(zhí)行幀的類型
types.GeneratorType生成器對(duì)象的類型
types.TracebackType異常的棧跟蹤的類型
slice由擴(kuò)展切片生成的類型
Ellipsis在擴(kuò)展切片中使用

● 代碼對(duì)象

代碼對(duì)象又叫字節(jié)碼(bytecode),代表編譯過的可執(zhí)行代碼,,通常由內(nèi)置的compile()函數(shù)返回,。 一個(gè)代碼對(duì)象可以保存若干個(gè)函數(shù),只是它們不綁定到特定函數(shù)(即不保存命名空間相關(guān)的上下文信息),。

代碼對(duì)象具有以下只讀屬性:

屬性說明
c.co_name函數(shù)名稱
c.co_argcount位置參數(shù)個(gè)數(shù)(包括默認(rèn)值)
c.co_nlocals函數(shù)使用的局部變量個(gè)數(shù)
c.co_varnames包含局部變量名稱的元組
c.co_cellvars包含嵌套函數(shù)所引用的變量名稱的元組
c.co_freevars包含嵌套函數(shù)所引用的自由變量名稱的元組
c.co_code表示原始字節(jié)碼的字符串
c.co_consts包含字節(jié)碼所用字面量的元組
c.co_names包含字節(jié)碼所用名稱的元組
c.co_filename被編譯代碼所在文件的名稱
c.co_firstlineno函數(shù)的首行行號(hào)
c.co_lnotab字符串編碼字節(jié)碼相對(duì)于行號(hào)的偏移
c.co_stacksize所需棧的大?。òň植孔兞浚?/td>
c.co_flags包含解釋器標(biāo)志的整數(shù)

● 幀對(duì)象

幀對(duì)象用于表示執(zhí)行幀,多出現(xiàn)在跟蹤對(duì)象中,。

幀對(duì)象具有以下屬性:

屬性說明
以下為只讀屬性
f.f_back上一個(gè)棧幀(對(duì)當(dāng)前調(diào)用者而言)
f.f_code正在執(zhí)行的代碼對(duì)象
f.f_locals局部變量的字典
f.f_globals全局變量的字典
f.f_builtins內(nèi)置名稱的字典
f.f_lineno行號(hào)
f.f_lasti當(dāng)前指令,。這是f_code字節(jié)碼字符串的索引
以下為可修改屬性
f.f_trace在每行源代碼起始處調(diào)用的函數(shù)

● 跟蹤對(duì)象

出現(xiàn)異常時(shí)就會(huì)創(chuàng)建跟蹤對(duì)象,它包含棧跟蹤信息,。進(jìn)入異常處理程序后,,可以使用sys.exc_info()函數(shù)來獲取棧跟蹤信息。

跟蹤對(duì)象具有以下只讀屬性:

屬性說明
t.tb_next棧跟蹤的下一級(jí)(朝發(fā)生異常的執(zhí)行幀方向深入)
t.tb_frame當(dāng)前級(jí)別的執(zhí)行幀對(duì)象
t.tb_lineno出現(xiàn)異常的行號(hào)
t.tb_lasti當(dāng)前級(jí)別中正在執(zhí)行的指令

● 生成器對(duì)象

生成器對(duì)象即通過調(diào)用含有yield語句的函數(shù)創(chuàng)建的對(duì)象,。生成器對(duì)象有2個(gè)用途,,一是迭代器、二是容器,。

生成器對(duì)象具有以下屬性:

屬性說明
g.gi_code生成器函數(shù)的代碼對(duì)象
g.gi_frame生成器函數(shù)的執(zhí)行幀
g.gi_running顯示生成器函數(shù)目前是否正在運(yùn)行的整數(shù)

●切片對(duì)象

切片對(duì)象用于表示在擴(kuò)展切莫語法中指定的切片,,如a[i:j:stride], a[i:j, n:m]等,。 使用內(nèi)置的slice()函數(shù)也可以創(chuàng)建切片對(duì)象,。

切片對(duì)象具有以下只讀屬性和方法:

屬性或方法說明
s.start切片的下邊界,如果省略則為None
s.stop切片的上邊界,,如果省略則為None
s.step切片的步長,,如果省略則為None
s.indices(length)接收一個(gè)長度參數(shù),返回一個(gè)元組 (start, stop, stride),,用于表明如何將切片應(yīng)用到指定長度的一個(gè)序列

●Ellipsis對(duì)象

用于索引查找[]中省略號(hào)是否存在,,通過內(nèi)置名稱Ellipsis可以訪問這種類型的對(duì)象。它沒有任何屬性,但并不是空(若對(duì)其應(yīng)用判斷表達(dá)式,,其值為True),。 Python中沒有任何內(nèi)置類型使用了Ellipsis,但如果要在自己創(chuàng)建的對(duì)象上的索引運(yùn)算符[]中構(gòu)造高級(jí)功能,,就可以用到它,。

下面的代碼說明了如何使用Ellipsis對(duì)象:

復(fù)制代碼
1
2
3
4
5
6
class Example(object):
    def __gettiem__(self, index):
        print(index)
         
e = Example()
e[3,...4]     # 內(nèi)部調(diào)用形式為:e.__gettiem__((3,Ellipsis,4))
復(fù)制代碼

https://www.cnblogs.com/initcircuit/p/12216558.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多