Python-01基礎(chǔ)-00菜鳥(niǎo)教程

Python-菜鳥(niǎo)驛站

tags: Python 菜鳥(niǎo)驛站 2018年 12月

簡(jiǎn)介說(shuō)明

以下全文來(lái)自于菜鳥(niǎo)驛站官網(wǎng),如需跳轉(zhuǎn)請(qǐng)點(diǎn)擊。

各類(lèi)程序員學(xué)習(xí)路線(xiàn)圖

學(xué)習(xí)資料站點(diǎn)地圖:學(xué)習(xí)資料站點(diǎn)地圖

Python簡(jiǎn)介

Python是一種解釋型、面向?qū)ο蟆?dòng)態(tài)數(shù)據(jù)類(lèi)型的高級(jí)程序設(shè)計(jì)語(yǔ)言。
Python由Guido van Rossum于1989年底發(fā)明,第一個(gè)公開(kāi)發(fā)行版發(fā)行于1991年。
像Perl語(yǔ)言一樣, Python 源代碼同樣遵循 GPL(GNU General Public License)協(xié)議。

Python 是一個(gè)高層次的結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο?/strong>的腳本語(yǔ)言。
Python 的設(shè)計(jì)具有很強(qiáng)的可讀性,相比其他語(yǔ)言經(jīng)常使用英文關(guān)鍵字,其他語(yǔ)言的一些標(biāo)點(diǎn)符號(hào),它具有比其他語(yǔ)言更有特色語(yǔ)法結(jié)構(gòu)。

Python 是一種解釋型語(yǔ)言: 這意味著開(kāi)發(fā)過(guò)程中沒(méi)有了編譯這個(gè)環(huán)節(jié)。類(lèi)似于PHP和Perl語(yǔ)言。

Python 是交互式語(yǔ)言: 這意味著,您可以在一個(gè)Python提示符,直接互動(dòng)執(zhí)行寫(xiě)你的程序。

Python 是面向?qū)ο笳Z(yǔ)言: 這意味著Python支持面向?qū)ο蟮娘L(fēng)格或代碼封裝在對(duì)象的編程技術(shù)。

Python 是初學(xué)者的語(yǔ)言:Python 對(duì)初級(jí)程序員而言,是一種偉大的語(yǔ)言,它支持廣泛的應(yīng)用程序開(kāi)發(fā),從簡(jiǎn)單的文字處理到 WWW 瀏覽器再到游戲。

Python 發(fā)展歷史

Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷蘭國(guó)家數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究所設(shè)計(jì)出來(lái)的。
Python 本身也是由諸多其他語(yǔ)言發(fā)展而來(lái)的,這包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的腳本語(yǔ)言等等。
像 Perl 語(yǔ)言一樣,Python 源代碼同樣遵循 GPL(GNU General Public License)協(xié)議。
現(xiàn)在 Python 是由一個(gè)核心開(kāi)發(fā)團(tuán)隊(duì)在維護(hù),Guido van Rossum 仍然占據(jù)著至關(guān)重要的作用,指導(dǎo)其進(jìn)展。

Python 特點(diǎn)

  1. 易于學(xué)習(xí):Python有相對(duì)較少的關(guān)鍵字,結(jié)構(gòu)簡(jiǎn)單,和一個(gè)明確定義的語(yǔ)法,學(xué)習(xí)起來(lái)更加簡(jiǎn)單。
  2. 易于閱讀:Python代碼定義的更清晰。
  3. 易于維護(hù):Python的成功在于它的源代碼是相當(dāng)容易維護(hù)的。
  4. 一個(gè)廣泛的標(biāo)準(zhǔn)庫(kù):Python的最大的優(yōu)勢(shì)之一是豐富的庫(kù),跨平臺(tái)的,在UNIX,Windows和Macintosh兼容很好。
  5. 互動(dòng)模式:互動(dòng)模式的支持,您可以從終端輸入執(zhí)行代碼并獲得結(jié)果的語(yǔ)言,互動(dòng)的測(cè)試和調(diào)試代碼片斷。
  6. 可移植:基于其開(kāi)放源代碼的特性,Python已經(jīng)被移植(也就是使其工作)到許多平臺(tái)。
  7. 可擴(kuò)展:如果你需要一段運(yùn)行很快的關(guān)鍵代碼,或者是想要編寫(xiě)一些不愿開(kāi)放的算法,你可以使用C或C++完成那部分程序,然后從你的Python程序中調(diào)用。
  8. 數(shù)據(jù)庫(kù):Python提供所有主要的商業(yè)數(shù)據(jù)庫(kù)的接口。
  9. GUI編程:Python支持GUI可以創(chuàng)建和移植到許多系統(tǒng)調(diào)用。
  10. 可嵌入: 你可以將Python嵌入到C/C++程序,讓你的程序的用戶(hù)獲得"腳本化"的能力。

Python環(huán)境變量

PYTHONPATH
是Python搜索路徑,默認(rèn)我們import的模塊都會(huì)從PYTHONPATH里面尋找。

PYTHONSTARTUP
Python啟動(dòng)后,先尋找PYTHONSTARTUP環(huán)境變量,然后執(zhí)行此變量指定的文件中的代碼。

PYTHONCASEOK
加入PYTHONCASEOK的環(huán)境變量, 就會(huì)使python導(dǎo)入模塊的時(shí)候不區(qū)分大小寫(xiě).

PYTHONHOME
另一種模塊搜索路徑。它通常內(nèi)嵌于的PYTHONSTARTUP或PYTHONPATH目錄中,使得兩個(gè)模塊庫(kù)更容易切換。

**#!/usr/bin/python **:
是告訴操作系統(tǒng)執(zhí)行這個(gè)腳本的時(shí)候,調(diào)用 /usr/bin 下的 python 解釋器;

#!/usr/bin/env python(推薦):
這種用法是為了防止操作系統(tǒng)用戶(hù)沒(méi)有將 python 裝在默認(rèn)的 /usr/bin 路徑里。
當(dāng)系統(tǒng)看到這一行的時(shí)候,首先會(huì)到 env 設(shè)置里查找 python 的安裝路徑,再調(diào)用對(duì)應(yīng)路徑下的解釋器程序完成操作。

!/usr/bin/python 相當(dāng)于寫(xiě)死了python路徑;

!/usr/bin/env python 會(huì)去環(huán)境設(shè)置尋找 python 目錄,推薦這種寫(xiě)法

Python運(yùn)行參數(shù)

Python啟動(dòng)交互式界面參數(shù)。

$ python # Unix/Linux
  • -d 在解析時(shí)顯示調(diào)試信息
  • -O 生成優(yōu)化代碼 ( .pyo 文件 )
  • -S 啟動(dòng)時(shí)不引入查找Python路徑的位置
  • -V 輸出Python版本號(hào)
  • -X 從 1.6版本之后基于內(nèi)建的異常(僅僅用于字符串)已過(guò)時(shí)。
  • -c cmd 執(zhí)行 Python 腳本,并將運(yùn)行結(jié)果作為 cmd 字符串。
  • file 在給定的python文件執(zhí)行python腳本。

Python保留字符

Python 保留字符下面的列表顯示了在Python中的保留字。這些保留字不能用作常數(shù)或變數(shù),或任何其他標(biāo)識(shí)符名稱(chēng)。
所有 Python 的關(guān)鍵字只包含小寫(xiě)字母。

and exec not assert finally or

break for pass class from print

continue global raise def if

return del import try elif in

while else is with except lambda yield

Python函數(shù)

Python數(shù)學(xué)函數(shù)

數(shù)學(xué)函數(shù)需要導(dǎo)入 math或cmath包

improt math
函數(shù) 返回值 ( 描述 )
abs(x) 返回?cái)?shù)字的絕對(duì)值,如abs(-10) 返回 10
ceil(x) 返回?cái)?shù)字的上入整數(shù),如math.ceil(4.1) 返回 5
cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
exp(x) 返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回?cái)?shù)字的絕對(duì)值,如math.fabs(-10) 返回10.0
floor(x) 返回?cái)?shù)字的下舍整數(shù),如math.floor(4.9)返回 4
log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x) 返回以10為基數(shù)的x的對(duì)數(shù),如math.log10(100)返回 2.0
max(x1, x2,...) 返回給定參數(shù)的最大值,參數(shù)可以為序列。
min(x1, x2,...) 返回給定參數(shù)的最小值,參數(shù)可以為序列。
modf(x) 返回x的整數(shù)部分與小數(shù)部分,兩部分的數(shù)值符號(hào)與x相同,整數(shù)部分以浮點(diǎn)型表示。
pow(x, y) x**y 運(yùn)算后的值。
round(x [,n]) 返回浮點(diǎn)數(shù)x的四舍五入值,如給出n值,則代表舍入到小數(shù)點(diǎn)后的位數(shù)。
sqrt(x) 返回?cái)?shù)字x的平方根

Python隨機(jī)數(shù)函數(shù)

隨機(jī)數(shù)可以用于數(shù)學(xué),游戲,安全等領(lǐng)域中,還經(jīng)常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。

Python包含以下常用隨機(jī)數(shù)函數(shù):

函數(shù) 返回值 ( 描述 )
choice(seq) 從序列的元素中隨機(jī)挑選一個(gè)元素,比如random.choice(range(10)),從0到9中隨機(jī)挑選一個(gè)整數(shù)
randrange ([start,] stop [,step]) 從指定范圍內(nèi),按指定基數(shù)遞增的集合中獲取一個(gè)隨機(jī)數(shù),基數(shù)缺省值為1
random() 隨機(jī)生成下一個(gè)實(shí)數(shù),它在[0,1)范圍內(nèi)。
seed([x]) 改變隨機(jī)數(shù)生成器的種子seed。如果你不了解其原理,你不必特別去設(shè)定seed,Python會(huì)幫你選擇seed。
shuffle(lst) 將序列的所有元素隨機(jī)排序
uniform(x, y) 隨機(jī)生成下一個(gè)實(shí)數(shù),它在[x,y]范圍內(nèi)。

Python三角函數(shù)

常量 返回值 ( 描述 )
cos(x) 返回x的反余弦弧度值。
asin(x) 返回x的反正弦弧度值。
atan(x) 返回x的反正切弧度值。
atan2(y, x) 返回給定的X及Y坐標(biāo)值的反正切值。
cos(x) 返回x的弧度的余弦值。
hypot(x, y) 返回歐幾里德范數(shù)sqrt(x*x + y*y)。
sin(x) 返回的x弧度的正弦值。
tan(x) 返回x弧度的正切值。
degrees(x) 將弧度轉(zhuǎn)換為角度,如degrees(math.pi/2),返回90.0
radians(x) 將角度轉(zhuǎn)換為弧度

Python數(shù)學(xué)常量

常量 返回值 ( 描述 )
pi 數(shù)學(xué)常量 pi(圓周率,一般以π來(lái)表示)
e 數(shù)學(xué)常量 e,e即自然常數(shù)(自然常數(shù))。

匿名函數(shù)

python 使用 lambda 來(lái)創(chuàng)建匿名函數(shù)。
lambda只是一個(gè)表達(dá)式,函數(shù)體比def簡(jiǎn)單很多。
lambda的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。
lambda函數(shù)擁有自己的命名空間,且不能訪(fǎng)問(wèn)自有參數(shù)列表之外或全局命名空間里的參數(shù)。
雖然lambda函數(shù)看起來(lái)只能寫(xiě)一行,卻不等同于C或C++的內(nèi)聯(lián)函數(shù),后者的目的是調(diào)用小函數(shù)時(shí)不占用棧內(nèi)存從而增加運(yùn)行效率。

語(yǔ)法lambda函數(shù)的語(yǔ)法只包含一個(gè)語(yǔ)句,如下:
lambda [arg1 [,arg2,.....argn]]:expression

sum = lambda arg1, arg2: arg1 + arg2;
# 調(diào)用sum函數(shù)
print "相加后的值為 : ", sum( 10, 20 )

Python 異常

異常說(shuō)明

異常即是一個(gè)事件,該事件會(huì)在程序執(zhí)行過(guò)程中發(fā)生,影響了程序的正常執(zhí)行。
一般情況下,在Python無(wú)法正常處理程序時(shí)就會(huì)發(fā)生一個(gè)異常。
異常是Python對(duì)象,表示一個(gè)錯(cuò)誤。
當(dāng)Python腳本發(fā)生異常時(shí)我們需要捕獲處理它,否則程序會(huì)終止執(zhí)行。

捕捉異??梢允褂胻ry/except語(yǔ)句。
try/except語(yǔ)句用來(lái)檢測(cè)try語(yǔ)句塊中的錯(cuò)誤,從而讓except語(yǔ)句捕獲異常信息并處理。
如果你不想在異常發(fā)生時(shí)結(jié)束你的程序,只需在try里捕獲它。
語(yǔ)法:
以下為簡(jiǎn)單的try....except...else的語(yǔ)法:

try:
<語(yǔ)句> #運(yùn)行別的代碼
except <名字>:
<語(yǔ)句> #如果在try部份引發(fā)了'name'異常
except <名字>,<數(shù)據(jù)>:
<語(yǔ)句> #如果引發(fā)了'name'異常,獲得附加的數(shù)據(jù)
else:
<語(yǔ)句> #如果沒(méi)有異常發(fā)生

異常處理

指定標(biāo)準(zhǔn)異

對(duì)指定標(biāo)準(zhǔn)異常進(jìn)行解釋。只能識(shí)別之地指定標(biāo)準(zhǔn)異常。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
try:
    fh = open("testfile", "w")
    fh.write("這是一個(gè)測(cè)試文件,用于測(cè)試異常!!")
except IOError:
    print "Error: 沒(méi)有找到文件或讀取文件失敗"
else:
    print "內(nèi)容寫(xiě)入文件成功"
    fh.close()

使用except不帶異常類(lèi)型

可以捕獲所有異常,但是無(wú)法識(shí)別出具體異常信息。

使用except帶多種異常類(lèi)型

捕獲多個(gè)標(biāo)準(zhǔn)異常

try:
    正常的操作
except(Exception1[, Exception2[,...ExceptionN]]]):
    發(fā)生以上多個(gè)異常中的一個(gè),執(zhí)行這塊代碼
else:
    如果沒(méi)有異常執(zhí)行這塊代碼

Try-finally語(yǔ)句

try-finally 語(yǔ)句無(wú)論是否發(fā)生異常都將執(zhí)行最后的代碼。
退出try時(shí)總會(huì)執(zhí)行finally中語(yǔ)句。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
try:
    fh = open("testfile", "w")
    fh.write("這是一個(gè)測(cè)試文件,用于測(cè)試異常!!")
finally:
    print "Error: 沒(méi)有找到文件或讀取文件失敗"

異常的參數(shù)

一個(gè)異??梢詭蠀?shù),可作為輸出的異常信息參數(shù)。
你可以通過(guò)except語(yǔ)句來(lái)捕獲異常的參數(shù),如下所示

try:
    正常的操作
except ExceptionType, Argument:
    你可以在這輸出 Argument 的值...
    變量接收的異常值通常包含在異常的語(yǔ)句中。在元組的表單中變量可以接收一個(gè)或者多個(gè)值。
    元組通常包含錯(cuò)誤字符串,錯(cuò)誤數(shù)字,錯(cuò)誤位置。實(shí)例
    以下為單個(gè)異常的實(shí)例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 定義函數(shù)
def temp_convert(var):
    try:
        return int(var)
    except ValueError, Argument:
        print "參數(shù)沒(méi)有包含數(shù)字\n", Argument

# 調(diào)用函數(shù)
temp_convert("xyz");
以上程序執(zhí)行結(jié)果如下:
$ python test.py
參數(shù)沒(méi)有包含數(shù)字
invalid literal for int() with base 10: 'xyz'觸發(fā)異常

raise觸發(fā)異常

我們可以使用raise語(yǔ)句自己觸發(fā)異常
raise語(yǔ)法格式如下:
raise [Exception [, args [, traceback]]]
語(yǔ)句中 Exception 是異常的類(lèi)型(例如,NameError)參數(shù)標(biāo)準(zhǔn)異常中任一種,args 是自已提供的異常參數(shù)。
最后一個(gè)參數(shù)是可選的(在實(shí)踐中很少使用),如果存在,是跟蹤異常對(duì)象。實(shí)例
一個(gè)異??梢允且粋€(gè)字符串,類(lèi)或?qū)ο蟆?Python的內(nèi)核提供的異常,大多數(shù)都是實(shí)例化的類(lèi),這是一個(gè)類(lèi)的實(shí)例的參數(shù)。
定義一個(gè)異常非常簡(jiǎn)單,如下所示:

def functionName( level ):
if level < 1:
raise Exception("Invalid level!", level)
# 觸發(fā)異常后,后面的代碼就不會(huì)再執(zhí)行
注意:為了能夠捕獲異常,"except"語(yǔ)句必須有用相同的異常來(lái)拋出類(lèi)對(duì)象或者字符串。
例如我們捕獲以上異常,"except"語(yǔ)句如下所示:

try:
正常邏輯
except Exception,err:
觸發(fā)自定義異常
else:
其余代碼實(shí)例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 定義函數(shù)
def mye( level ):
if level < 1:
raise Exception,"Invalid level!"
# 觸發(fā)異常后,后面的代碼就不會(huì)再執(zhí)行
try:
mye(0) # 觸發(fā)異常
except Exception,err:
print 1,err
else:
print 2
執(zhí)行以上代碼,輸出結(jié)果為:

$ python test.py
1 Invalid level!

用戶(hù)自定義異常

通過(guò)創(chuàng)建一個(gè)新的異常類(lèi),程序可以命名它們自己的異常。異常應(yīng)該是典型的繼承自Exception類(lèi),通過(guò)直接或間接的方式。
以下為與RuntimeError相關(guān)的實(shí)例,實(shí)例中創(chuàng)建了一個(gè)類(lèi),基類(lèi)為RuntimeError,用于在異常觸發(fā)時(shí)輸出更多的信息。
在try語(yǔ)句塊中,用戶(hù)自定義的異常后執(zhí)行except塊語(yǔ)句,變量 e 是用于創(chuàng)建Networkerror類(lèi)的實(shí)例。

class Networkerror(RuntimeError):
def __init__(self, arg):
self.args = arg
在你定義以上類(lèi)后,你可以觸發(fā)該異常,如下所示:

try:
raise Networkerror("Bad hostname")
except Networkerror,e:
print e.args

標(biāo)準(zhǔn)異常說(shuō)明

菜鳥(niǎo)驛站異常處理: http://www.runoob.com/python/python-exceptions.html

Python常見(jiàn)標(biāo)準(zhǔn)異常說(shuō)明

異常代碼 異常說(shuō)明
BaseException 所有異常的基類(lèi)
SystemExit 解釋器請(qǐng)求退出
KeyboardInterrupt 用戶(hù)中斷執(zhí)行(通常是輸入^C)
Exception 常規(guī)錯(cuò)誤的基類(lèi)
StopIteration 迭代器沒(méi)有更多的值
GeneratorExit 生成器(generator)發(fā)生異常來(lái)通知退出
StandardError 所有的內(nèi)建標(biāo)準(zhǔn)異常的基類(lèi)
ArithmeticError 所有數(shù)值計(jì)算錯(cuò)誤的基類(lèi)
FloatingPointError 浮點(diǎn)計(jì)算錯(cuò)誤
OverflowError 數(shù)值運(yùn)算超出最大限制
ZeroDivisionError 除(或取模)零 (所有數(shù)據(jù)類(lèi)型)
AssertionError 斷言語(yǔ)句失敗
AttributeError 對(duì)象沒(méi)有這個(gè)屬性
EOFError 沒(méi)有內(nèi)建輸入,到達(dá)
EOF 標(biāo)記
EnvironmentError 操作系統(tǒng)錯(cuò)誤的基類(lèi)
IOError 輸入/輸出操作失敗
OSError 操作系統(tǒng)錯(cuò)誤
WindowsError 系統(tǒng)調(diào)用失敗
ImportError 導(dǎo)入模塊/對(duì)象失敗
LookupError 無(wú)效數(shù)據(jù)查詢(xún)的基類(lèi)
IndexError 序列中沒(méi)有此索引(index)
KeyError 映射中沒(méi)有這個(gè)鍵
MemoryError 內(nèi)存溢出錯(cuò)誤(對(duì)于 Python解釋器不是致命的)
NameError 未聲明/初始化對(duì)象 (沒(méi)有屬性)
UnboundLocalError 訪(fǎng)問(wèn)未初始化的本地變量
ReferenceError 弱引用( Weak reference)試圖訪(fǎng)問(wèn)已經(jīng)垃圾回收了的對(duì)象
RuntimeError 一般的運(yùn)行時(shí)錯(cuò)誤
NotImplementedError 尚未實(shí)現(xiàn)的方法
SyntaxErrorPython 語(yǔ)法錯(cuò)誤
IndentationError 縮進(jìn)錯(cuò)誤
TabErrorTab 和空格混用
SystemError 一般的解釋器系統(tǒng)錯(cuò)誤
TypeError 對(duì)類(lèi)型無(wú)效的操作
ValueError 傳入無(wú)效的參數(shù)
UnicodeErrorUnicode 相關(guān)的錯(cuò)誤
UnicodeDecodeErrorUnicode 解碼時(shí)的錯(cuò)誤
UnicodeEncodeErrorUnicode 編碼時(shí)錯(cuò)誤
UnicodeTranslateErrorUnicode 轉(zhuǎn)換時(shí)錯(cuò)誤
Warning 警告的基類(lèi)
DeprecationWarning 關(guān)于被棄用的特征的警告
FutureWarning 關(guān)于構(gòu)造將來(lái)語(yǔ)義會(huì)有>改變的警告
OverflowWarning 舊的關(guān)于自動(dòng)提升為長(zhǎng)整型(long)的警告
PendingDeprecationWarning 關(guān)于特性將會(huì)被廢棄的警告
RuntimeWarning 可疑的運(yùn)行時(shí)行為(runtime behavior)的警告
SyntaxWarning 可疑的語(yǔ)法的警告
UserWarning 用戶(hù)代碼生成的警告

Python內(nèi)置函數(shù)

菜鳥(niǎo)驛站參考鏈接: http://www.runoob.com/python/python-built-in-functions.html

重要內(nèi)置函數(shù)

open()或file()
打開(kāi)文件,創(chuàng)建file對(duì)象。 注意點(diǎn): file對(duì)象的方法 + 打開(kāi)模式

staticmethod
返回函數(shù)的靜態(tài)方法

In [16]: class C():
    ...:     @staticmethod
    ...:     def a():
    ...:         pass
    ...:     def b():
    ...:         pass
In [18]: C.a()
In [20]: # 以上實(shí)例聲明了靜態(tài)方法 f,類(lèi)可以不用實(shí)例化就可以調(diào)用該方法 C.f(),當(dāng)然也可以實(shí)例化后調(diào)用 C().f()。vvvvv

classmethod
修飾符對(duì)應(yīng)的函數(shù)不需要實(shí)例化,不需要 self 參數(shù),但第一個(gè)參數(shù)需要是表示自身類(lèi)的 cls 參數(shù),可以來(lái)調(diào)用類(lèi)的屬性,類(lèi)的方法,實(shí)例化對(duì)象等

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class A(object):
    bar = 1
    def func1(self):  
        print ('foo') 
    @classmethod
    def func2(cls):
        print ('func2')
        print (cls.bar)
        cls().func1()   # 調(diào)用 foo 方法
 
A.func2()               # 不需要實(shí)例化

getattr()
用于返回一個(gè)對(duì)象屬性值。

>>>class A(object):
...     bar = 1
... 
>>> a = A()
>>> getattr(a, 'bar')        # 獲取屬性 bar 值
1

eval()
函數(shù)用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值

isinstance()
函數(shù)來(lái)判斷一個(gè)對(duì)象是否是一個(gè)已知的類(lèi)型,類(lèi)似 type()

In [42]: a=2;print isinstance (a,int); print isinstance (a,(str,int,list))    # 是元組中的一個(gè)返回 True
True
True
In [43]: # 推薦使用 isinstance ,isinstance和type()區(qū)別,type()不會(huì)考慮繼承問(wèn)題
In [44]: # int,float,bool,complex,str(字符串),list,dict(字典),set,tuple

# basestring() 方法是 str 和 unicode 的超類(lèi)(父類(lèi)),也是抽象類(lèi)basestring() 函數(shù)。
# basestring() 可以被用來(lái)判斷一個(gè)對(duì)象是否為 str 或者 unicode 的實(shí)例
>>>isinstance("Hello world", str)
True
>>> isinstance("Hello world", basestring)
True
>>> isinstance(u"Hello world", basestring)
True

issubclass()
用于判斷參數(shù) class 是否是類(lèi)型參數(shù) classinfo 的子類(lèi)。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class A:
    pass
class B(A):
    pass
    
print(issubclass(B,A))    # 返回 True

super() TODO
super() 函數(shù)是用于調(diào)用父類(lèi)(超類(lèi))的一個(gè)方法。

super 是用來(lái)解決多重繼承問(wèn)題的,直接用類(lèi)名調(diào)用父類(lèi)方法在使用單繼承的時(shí)候沒(méi)問(wèn)題,但是如果使用多繼承,會(huì)涉及到查找順序(MRO)、重復(fù)調(diào)用(鉆石繼承)等種種問(wèn)題。

MRO 就是類(lèi)的方法解析順序表, 其實(shí)也就是繼承父類(lèi)方法時(shí)的順序表。

基礎(chǔ)內(nèi)置函數(shù)

abs
返回函數(shù)絕對(duì)值。

divmod(a,b)
取余。

>>> divmod(7,2)
(3,1)

input()
接收一個(gè)合法的python表達(dá)式

raw_input()
接收任何字符,輸出為 字符串

all()
判斷 列表或元組中是否都為 True

In [22]: all(['a', 'b', 'c', 'd'])  # 列表list,元素都不為空或0
Out[22]: True
In [23]: all(['a', '', 0, 'c', 'd'])  # 列表list,存在為空或0的元素
Out[23]: False
# 注意點(diǎn) 空列表或空元組 返回True
In [24]: all([])
Out[24]: True

enumerate()
函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串)組合為一個(gè)索引序列,
同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中

In [29]:  list(enumerate(seasons, start=1))       # 下標(biāo)從 1 開(kāi)始
Out[29]: [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

int()
函數(shù)用于將一個(gè)字符串或數(shù)字轉(zhuǎn)換為整型

ord()
返回對(duì)應(yīng)十進(jìn)制

str()
函數(shù)將對(duì)象轉(zhuǎn)化為適于人閱讀的形式。

any()
判斷 元組或列表 是否全部為False. 與all()相反

pow()
方法返回 xy(x的y次方) 的值。

improt math
math.power(2,4): 16.0

sum()
對(duì)系列進(jìn)行求和計(jì)算。

**bin() **
返回一個(gè)整數(shù) int 或者長(zhǎng)整數(shù) long int 的二進(jìn)制表示。

In [47]: bin(10)
Out[47]: '0b1010'

iter()
生成迭代器

property()
函數(shù)的作用是在新式類(lèi)中返回屬性值。

filter()
函數(shù)用于過(guò)濾序列,過(guò)濾掉不符合條件的元素,返回由符合條件元素組成的新列表。

range()
函數(shù)可創(chuàng)建一個(gè)整數(shù)列表,一般用在 for 循環(huán)中。

函數(shù)語(yǔ)法
range(start, stop[, step])
參數(shù)說(shuō)明:

start: 計(jì)數(shù)從 start 開(kāi)始。默認(rèn)是從 0 開(kāi)始。例如range(5)等價(jià)于range(0, 5);
stop: 計(jì)數(shù)到 stop 結(jié)束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒(méi)有5
step:步長(zhǎng),默認(rèn)為1。例如:range(0, 5) 等價(jià)于 range(0, 5, 1)

bytearray()
方法返回一個(gè)新字節(jié)數(shù)組。這個(gè)數(shù)組里的元素是可變的,并且每個(gè)元素的值范圍: 0 <= x < 256。

float()
函數(shù)用于將整數(shù)和字符串轉(zhuǎn)換成浮點(diǎn)數(shù)。

list()
方法用于將元組轉(zhuǎn)換為列表。

unichr()
函數(shù) 和 chr()函數(shù)功能基本一樣, 只不過(guò)是返回 unicode 的字符。

callable()
函數(shù)用于檢查一個(gè)對(duì)象是否是可調(diào)用的。如果返回True,object仍然可能調(diào)用失??;但如果返回False,調(diào)用對(duì)象ojbect絕對(duì)不會(huì)成功。

對(duì)于函數(shù), 方法, lambda 函式, 類(lèi), 以及實(shí)現(xiàn)了 call 方法的類(lèi)實(shí)例, 它都返回 True。

str.format()
它增強(qiáng)了字符串格式化的功能。 TODO

locals()
函數(shù)會(huì)以字典類(lèi)型返回當(dāng)前位置的全部局部變量

reduce()
函數(shù)會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積。
函數(shù)將一個(gè)數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給 reduce 中的函數(shù) function(有兩個(gè)參數(shù))先對(duì)集合中的第 1、2 個(gè)元素進(jìn)行操作,得到的結(jié)果再與第三個(gè)數(shù)據(jù)用 function 函數(shù)運(yùn)算,最后得到一個(gè)結(jié)果。
reduce(function, iterable[, initializer])
參數(shù)
function -- 函數(shù),有兩個(gè)參數(shù)
iterable -- 可迭代對(duì)象
initializer -- 可選,初始參數(shù)

chr()
用一個(gè)范圍在 range(256)內(nèi)的(就是0~255)整數(shù)作參數(shù),返回一個(gè)對(duì)應(yīng)的字符。

frozenset()
返回一個(gè)凍結(jié)的集合,凍結(jié)后集合不能再添加或刪除任何元素。

long()
函數(shù)將數(shù)字或字符串轉(zhuǎn)換為一個(gè)長(zhǎng)整型。

reload()
用于重新載入之前載入的模塊。

vars()
函數(shù)返回對(duì)象object的屬性和屬性值的字典對(duì)象。

map()
會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射。
第一個(gè)參數(shù) function 以參數(shù)序列中的每一個(gè)元素調(diào)用 function 函數(shù),返回包含每次 function 函數(shù)返回值的新列表。

>>>def square(x) :            # 計(jì)算平方數(shù)
...     return x ** 2
... 
>>> map(square, [1,2,3,4,5])   # 計(jì)算列表各個(gè)元素的平方
[1, 4, 9, 16, 25]

repr()
函數(shù)將對(duì)象轉(zhuǎn)化為供解釋器讀取的形式。

xrange()
函數(shù)用法與 range 完全相同,所不同的是生成的不是一個(gè)數(shù)組,而是一個(gè)生成器。

cmp(x,y)
函數(shù)用于比較2個(gè)對(duì)象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

globals()
函數(shù)會(huì)以字典類(lèi)型返回當(dāng)前位置的全部全局變量。

max()
方法返回給定參數(shù)的最大值,參數(shù)可以為序列。

reverse()
函數(shù)用于反向列表中元素。

zip()
函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表。
如果各個(gè)迭代器的元素個(gè)數(shù)不一致,則返回列表長(zhǎng)度與最短的對(duì)象相同,利用 * 號(hào)操作符,可以將元組解壓為列表。

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包為元組的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素個(gè)數(shù)與最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 與 zip 相反,*zipped 可理解為解壓,返回二維矩陣式
[(1, 2, 3), (4, 5, 6)]

compile()
函數(shù)將一個(gè)字符串編譯為字節(jié)代碼。

hasattr()
函數(shù)用于判斷對(duì)象是否包含對(duì)應(yīng)的屬性。

memoryview()
函數(shù)返回給定參數(shù)的內(nèi)存查看對(duì)象(Momory view)。
所謂內(nèi)存查看對(duì)象,是指對(duì)支持緩沖區(qū)協(xié)議的數(shù)據(jù)進(jìn)行包裝,在不需要復(fù)制對(duì)象基礎(chǔ)上允許Python代碼訪(fǎng)問(wèn)。

round()
方法返回浮點(diǎn)數(shù)x的四舍五入值。

import()
函數(shù)用于動(dòng)態(tài)加載類(lèi)和函數(shù) 。
如果一個(gè)模塊經(jīng)常變化就可以使用 import() 來(lái)動(dòng)態(tài)載入。

complex()
函數(shù)用于創(chuàng)建一個(gè)值為 real + imag * j 的復(fù)數(shù)或者轉(zhuǎn)化一個(gè)字符串或數(shù)為復(fù)數(shù)。如果第一個(gè)參數(shù)為字符串,則不需要指定第二個(gè)參數(shù)。。

hash()
用于獲取取一個(gè)對(duì)象(字符串或者數(shù)值等)的哈希值。

min()
方法返回給定參數(shù)的最小值,參數(shù)可以為序列。

set()
函數(shù)創(chuàng)建一個(gè)無(wú)序不重復(fù)元素集,可進(jìn)行關(guān)系測(cè)試,刪除重復(fù)數(shù)據(jù),還可以計(jì)算交集、差集、并集等。

delattr
函數(shù)用于刪除屬性。 delattr(x,'foobar')相等于del x.foobar。

help()
函數(shù)用于查看函數(shù)或模塊用途的詳細(xì)說(shuō)明。

next()
返回迭代器的下一個(gè)項(xiàng)目.

setattr()
函數(shù)對(duì)應(yīng)函數(shù) getattr(),用于設(shè)置屬性值,該屬性必須存在。

dict()
函數(shù)用于創(chuàng)建一個(gè)字典

hex()
函數(shù)用于將10進(jìn)制整數(shù)轉(zhuǎn)換成16進(jìn)制,以字符串形式表示

slice()
函數(shù)實(shí)現(xiàn)切片對(duì)象,主要用在切片操作函數(shù)里的參數(shù)傳遞。

dir()
函數(shù)不帶參數(shù)時(shí),返回當(dāng)前范圍內(nèi)的變量、方法和定義的類(lèi)型列表;帶參數(shù)時(shí),返回參數(shù)的屬性、方法列表。如果參數(shù)包含方法dir(),該方法將被調(diào)用。如果參數(shù)不包含dir(),該方法將最大限度地收集參數(shù)信息。

id()
函數(shù)用于獲取對(duì)象的內(nèi)存地址。

oct()
函數(shù)將一個(gè)整數(shù)轉(zhuǎn)換成8進(jìn)制字符串。

sorted(list) 有返回值
list.sort() 無(wú)返回值,直接修改原list
函數(shù)對(duì)所有可迭代的對(duì)象進(jìn)行排序操作

exec()
執(zhí)行儲(chǔ)存在字符串或文件中的Python語(yǔ)句,相比于 eval,exec可以執(zhí)行更復(fù)雜的 Python 代碼

Python模塊

模塊搜索順序

搜索路徑當(dāng)你導(dǎo)入一個(gè)模塊,Python 解析器對(duì)模塊位置的搜索順序是:

  1. 當(dāng)前目錄
  2. 如果不在當(dāng)前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每個(gè)目錄。
  3. 如果都找不到,Python會(huì)察看默認(rèn)路徑。UNIX下,默認(rèn)路徑一般為/usr/local/lib/python/。
    模塊搜索路徑存儲(chǔ)在 system 模塊的 sys.path 變量中。變量里包含當(dāng)前目錄,PYTHONPATH和由安裝過(guò)程決定的默認(rèn)目錄。命名空間和作用域
    變量是擁有匹配對(duì)象的名字(標(biāo)識(shí)符)。命名空間是一個(gè)包含了變量名稱(chēng)們(鍵)和它們各自相應(yīng)的對(duì)象們(值)的字典。
    一個(gè) Python 表達(dá)式可以訪(fǎng)問(wèn)局部命名空間和全局命名空間里的變量。如果一個(gè)局部變量和一個(gè)全局變量重名,則局部變量會(huì)覆蓋全局變量。

dir()
函數(shù)一個(gè)排好序的字符串列表,內(nèi)容是一個(gè)模塊里定義過(guò)的名字。
返回的列表容納了在一個(gè)模塊里定義的所有模塊,變量和函數(shù)。

globals() 和 locals() 函數(shù)
根據(jù)調(diào)用地方的不同,globals() 和 locals() 函數(shù)可被用來(lái)返回全局和局部命名空間里的名字。
如果在函數(shù)內(nèi)部調(diào)用 locals(),返回的是所有能在該函數(shù)里訪(fǎng)問(wèn)的命名。
如果在函數(shù)內(nèi)部調(diào)用 globals(),返回的是所有在該函數(shù)里能訪(fǎng)問(wèn)的全局名字。
兩個(gè)函數(shù)的返回類(lèi)型都是字典。所以名字們能用 keys() 函數(shù)摘取。

reload() 函數(shù)
當(dāng)一個(gè)模塊被導(dǎo)入到一個(gè)腳本,模塊頂層部分的代碼只會(huì)被執(zhí)行一次。
因此,如果你想重新執(zhí)行模塊里頂層部分的代碼,可以用 reload() 函數(shù)。該函數(shù)會(huì)重新導(dǎo)入之前導(dǎo)入過(guò)的模塊。

sys模塊

系統(tǒng)相關(guān)的信息模塊: import sys

  • sys.argv 是一個(gè) list,包含所有的命令行參數(shù).
  • sys.stdout sys.stdin sys.stderr 分別表示標(biāo)準(zhǔn)輸入輸出,錯(cuò)誤輸出的文件對(duì)象.
  • sys.stdin.readline() 從標(biāo)準(zhǔn)輸入讀一行 sys.stdout.write("a") 屏幕輸出a
  • sys.exit(exit_code) 退出程序
  • sys.modules 是一個(gè)dictionary,表示系統(tǒng)中所有可用的module
  • sys.platform 得到運(yùn)行的操作系統(tǒng)環(huán)境
  • sys.path 是一個(gè)list,指明所有查找module,package的路徑.

os模塊

操作系統(tǒng)相關(guān)的調(diào)用和操作: import os

  • os.environ 一個(gè)dictionary 包含環(huán)境變量的映射關(guān)系
  • os.environ["HOME"] 可以得到環(huán)境變量HOME的值
  • os.chdir(dir) 改變當(dāng)前目錄 os.chdir('d:\outlook')
    注意windows下用到轉(zhuǎn)義
  • os.getcwd() 得到當(dāng)前目錄
  • os.getegid() 得到有效組id os.getgid() 得到組id
  • os.getuid() 得到用戶(hù)id os.geteuid() 得到有效用戶(hù)id
  • os.setegid os.setegid() os.seteuid() os.setuid()
  • os.getgruops() 得到用戶(hù)組名稱(chēng)列表
  • os.getlogin() 得到用戶(hù)登錄名稱(chēng)
  • os.getenv 得到環(huán)境變量
  • os.putenv 設(shè)置環(huán)境變量
  • os.umask 設(shè)置umask
  • os.system(cmd) 利用系統(tǒng)調(diào)用,運(yùn)行cmd命令
    內(nèi)置模塊(不用import就可以直接使用)常用內(nèi)置函數(shù):
  • help(obj) 在線(xiàn)幫助, obj可是任何類(lèi)型
  • callable(obj) 查看一個(gè)obj是不是可以像函數(shù)一樣調(diào)用
  • repr(obj) 得到obj的表示字符串,可以利用這個(gè)字符串eval重建該對(duì)象的一個(gè)拷貝
  • eval_r(str) 表示合法的python表達(dá)式,返回這個(gè)表達(dá)式
  • dir(obj) 查看obj的name space中可見(jiàn)的name
  • hasattr(obj,name) 查看一個(gè)obj的name space中是否有name
  • getattr(obj,name) 得到一個(gè)obj的name space中的一個(gè)name
  • setattr(obj,name,value) 為一個(gè)obj的name
    space中的一個(gè)name指向vale這個(gè)object
  • delattr(obj,name) 從obj的name space中刪除一個(gè)name
  • vars(obj) 返回一個(gè)object的name space。用dictionary表示
  • locals() 返回一個(gè)局部name space,用dictionary表示
  • globals() 返回一個(gè)全局name space,用dictionary表示
  • type(obj) 查看一個(gè)obj的類(lèi)型
  • isinstance(obj,cls) 查看obj是不是cls的instance
  • issubclass(subcls,supcls) 查看subcls是不是supcls的子類(lèi)

OS模塊-文件目錄

os 模塊提供了非常豐富的方法用來(lái)處理文件和目錄。常用的方法如下表所示:

  • os.access(path, mode):檢驗(yàn)權(quán)限模式2
  • os.chdir(path):改變當(dāng)前工作目錄3
  • os.chflags(path, flags):設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記。4
  • os.chmod(path, mode):更改權(quán)限5
  • os.chown(path, uid, gid):更改文件所有者6
  • os.chroot(path):改變當(dāng)前進(jìn)程的根目錄7
  • os.close(fd):關(guān)閉文件描述符 fd8
  • os.closerange(fd_low, fd_high):關(guān)閉所有文件描述符,從 fd_low (包含) 到 fd_high (不包含), 錯(cuò)誤會(huì)忽略9
  • os.dup(fd):復(fù)制文件描述符 fd10
  • os.dup2(fd, fd2):將一個(gè)文件描述符 fd 復(fù)制到另一個(gè) fd211
  • os.fchdir(fd):通過(guò)文件描述符改變當(dāng)前工作目錄12
  • os.fchmod(fd, mode):改變一個(gè)文件的訪(fǎng)問(wèn)權(quán)限,該文件由參數(shù)fd指定,參數(shù)mode是Unix下的文件訪(fǎng)問(wèn)權(quán)限。13
  • os.fchown(fd, uid, gid):修改一個(gè)文件的所有權(quán),這個(gè)函數(shù)修改一個(gè)文件的用戶(hù)ID和用戶(hù)組ID,該文件由文件描述符fd指定。14
  • os.fdatasync(fd):強(qiáng)制將文件寫(xiě)入磁盤(pán),該文件由文件描述符fd指定,但是不強(qiáng)制更新文件的狀態(tài)信息。15
  • os.fdopen(fd[, mode[, bufsize]]):通過(guò)文件描述符 fd 創(chuàng)建一個(gè)文件對(duì)象,并返回這個(gè)文件對(duì)象16
  • os.fpathconf(fd, name):返回一個(gè)打開(kāi)的文件的系統(tǒng)配置信息。name為檢索的系統(tǒng)配置的值,
    它也許是一個(gè)定義系統(tǒng)值的字符串,這些名字在很多標(biāo)準(zhǔn)中指定(POSIX.1, Unix 95, Unix 98, 和其它)。17
  • os.fstat(fd):返回文件描述符fd的狀態(tài),像stat()。18
  • os.fstatvfs(fd):返回包含文件描述符fd的文件的文件系統(tǒng)的信息,像 statvfs()19
  • os.fsync(fd):強(qiáng)制將文件描述符為fd的文件寫(xiě)入硬盤(pán)。20
  • os.ftruncate(fd, length):裁剪文件描述符fd對(duì)應(yīng)的文件, 所以它最大不能超過(guò)文件大小。21
  • os.getcwd():返回當(dāng)前工作目錄22
  • os.getcwdu():返回一個(gè)當(dāng)前工作目錄的Unicode對(duì)象23
  • os.isatty(fd):如果文件描述符fd是打開(kāi)的,同時(shí)與tty(-like)設(shè)備相連,則返回true, 否則False。24
  • os.lchflags(path, flags):設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記,類(lèi)似 chflags(),但是沒(méi)有軟鏈接25
  • os.lchmod(path, mode):修改連接文件權(quán)限26
  • os.lchown(path, uid, gid):更改文件所有者,類(lèi)似 chown,但是不追蹤鏈接。27
  • os.link(src, dst):創(chuàng)建硬鏈接,名為參數(shù) dst,指向參數(shù) src28
  • os.listdir(path):返回path指定的文件夾包含的文件或文件夾的名字的列表。29
  • os.lseek(fd, pos, how):設(shè)置文件描述符 fd當(dāng)前位置為pos, how方式修改: SEEK_SET 或者 0 設(shè)置從文件開(kāi)始的計(jì)算的pos;
    SEEK_CUR或者 1 則從當(dāng)前位置計(jì)算; os.SEEK_END或者2則從文件尾部開(kāi)始. 在unix,Windows中有效30
  • os.lstat(path):像stat(),但是沒(méi)有軟鏈接31
  • os.major(device):從原始的設(shè)備號(hào)中提取設(shè)備major號(hào)碼 (使用stat中的st_dev或者st_rdev field)。32
  • os.makedev(major, minor):以major和minor設(shè)備號(hào)組成一個(gè)原始設(shè)備號(hào)33
  • os.makedirs(path[, mode]):遞歸文件夾創(chuàng)建函數(shù)。像mkdir(), 但創(chuàng)建的所有intermediate-level文件夾需要包含子文件夾。34
  • os.minor(device):從原始的設(shè)備號(hào)中提取設(shè)備minor號(hào)碼 (使用stat中的st_dev或者st_rdev field )。35
  • os.mkdir(path[, mode]):以數(shù)字mode的mode創(chuàng)建一個(gè)名為path的文件夾.默認(rèn)的 mode 是 0777 (八進(jìn)制)。36
  • os.mkfifo(path[, mode]):創(chuàng)建命名管道,mode 為數(shù)字,默認(rèn)為 0666 (八進(jìn)制)37
  • os.mknod(filename[, mode=0600, device]):創(chuàng)建一個(gè)名為filename文件系統(tǒng)節(jié)點(diǎn)(文件,設(shè)備特別文件或者命名pipe)。38
  • os.open(file, flags[, mode]):打開(kāi)一個(gè)文件,并且設(shè)置需要的打開(kāi)選項(xiàng),mode參數(shù)是可選的39
  • os.openpty():打開(kāi)一個(gè)新的偽終端對(duì)。返回 pty 和 tty的文件描述符。40
  • os.pathconf(path, name):返回相關(guān)文件的系統(tǒng)配置信息。41
  • os.pipe():創(chuàng)建一個(gè)管道. 返回一對(duì)文件描述符(r, w) 分別為讀和寫(xiě)42
  • os.popen(command[, mode[, bufsize]]):從一個(gè) command 打開(kāi)一個(gè)管道43
  • os.read(fd, n):從文件描述符 fd 中讀取最多 n 個(gè)字節(jié),返回包含讀取字節(jié)的字符串,文件描述符 fd對(duì)應(yīng)文件已達(dá)到結(jié)尾, 返回一個(gè)空字符串。44
  • os.readlink(path):返回軟鏈接所指向的文件45
  • os.remove(path):刪除路徑為path的文件。如果path 是一個(gè)文件夾,將拋出OSError; 查看下面的rmdir()刪除一個(gè) directory。46
  • os.removedirs(path):遞歸刪除目錄。47
  • os.rename(src, dst):重命名文件或目錄,從 src 到 dst48
  • os.renames(old, new):遞歸地對(duì)目錄進(jìn)行更名,也可以對(duì)文件進(jìn)行更名。49
  • os.rmdir(path):刪除path指定的空目錄,如果目錄非空,則拋出一個(gè)OSError異常。50
  • os.stat(path):獲取path指定的路徑的信息,功能等同于C API中的stat()系統(tǒng)調(diào)用。51
  • os.stat_float_times([newvalue]):決定stat_result是否以float對(duì)象顯示時(shí)間戳52
  • os.statvfs(path):獲取指定路徑的文件系統(tǒng)統(tǒng)計(jì)信息53
  • os.symlink(src, dst):創(chuàng)建一個(gè)軟鏈接54
  • os.tcgetpgrp(fd):返回與終端fd(一個(gè)由os.open()返回的打開(kāi)的文件描述符)關(guān)聯(lián)的進(jìn)程組55
  • os.tcsetpgrp(fd, pg):設(shè)置與終端fd(一個(gè)由os.open()返回的打開(kāi)的文件描述符)關(guān)聯(lián)的進(jìn)程組為pg。56
  • os.tempnam([dir[, prefix]]):返回唯一的路徑名用于創(chuàng)建臨時(shí)文件。57
  • os.tmpfile():返回一個(gè)打開(kāi)的模式為(w+b)的文件對(duì)象 .這文件對(duì)象沒(méi)有文件夾入口,沒(méi)有文件描述符,將會(huì)自動(dòng)刪除。58
  • os.tmpnam():為創(chuàng)建一個(gè)臨時(shí)文件返回一個(gè)唯一的路徑59
  • os.ttyname(fd):返回一個(gè)字符串,它表示與文件描述符fd 關(guān)聯(lián)的終端設(shè)備。如果fd 沒(méi)有與終端設(shè)備關(guān)聯(lián),則引發(fā)一個(gè)異常。60
  • os.unlink(path):刪除文件路徑61
  • os.utime(path, times):返回指定的path文件的訪(fǎng)問(wèn)和修改的時(shí)間。62
  • os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]):輸出在文件夾中的文件名通過(guò)在樹(shù)中游走,向上或者向下。63
  • os.write(fd, str):寫(xiě)入字符串到文件描述符 fd中. 返回實(shí)際寫(xiě)入的字符串長(zhǎng)度

類(lèi)型轉(zhuǎn)換

類(lèi)型轉(zhuǎn)換

  • int(x) 將字符轉(zhuǎn)為整型
  • chr(i) 把一個(gè)ASCII數(shù)值,變成字符
  • ord(i) 把一個(gè)字符或者unicode字符,變成ASCII數(shù)值
  • oct(x) 把整數(shù)x變成八進(jìn)制表示的字符串
  • hex(x) 把整數(shù)x變成十六進(jìn)制表示的字符串
  • str(obj) 得到obj的字符串描述
  • list(seq) 把一個(gè)sequence轉(zhuǎn)換成一個(gè)list
  • tuple(seq) 把一個(gè)sequence轉(zhuǎn)換成一個(gè)tuple
  • dict(),dict(list) 轉(zhuǎn)換成一個(gè)dictionary
  • int(x) 轉(zhuǎn)換成一個(gè)integer
  • long(x) 轉(zhuǎn)換成一個(gè)long interger
  • float(x) 轉(zhuǎn)換成一個(gè)浮點(diǎn)數(shù)
  • complex(x) 轉(zhuǎn)換成復(fù)數(shù)
  • max(...) 求最大值
  • min(...) 求最小值
  • repr(x) 將對(duì)象 x 轉(zhuǎn)換為表達(dá)式字符串
  • eval(str) 用來(lái)計(jì)算在字符串中的有效Python表達(dá)式,并返回一個(gè)對(duì)象
  • tuple(s) 序列 s 轉(zhuǎn)換為一個(gè)元組
  • set(s) 轉(zhuǎn)換為可變集合。
  • frozenset(s) 轉(zhuǎn)換為不可變集合
  • unichr(x) 將一個(gè)整數(shù)轉(zhuǎn)換為Unicode字符
  • ord(x) 將一個(gè)字符轉(zhuǎn)換為它的整數(shù)值
  • hex(x) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)十六進(jìn)制字符串

Python轉(zhuǎn)義符

在需要在字符中使用特殊字符時(shí),python用反斜杠()轉(zhuǎn)義字符。如下表:

  • (在行尾時(shí))續(xù)行符
  • \反斜杠符號(hào)
  • '單引號(hào)
  • "雙引號(hào)
  • \a響鈴
  • \b退格(Backspace)
  • \e轉(zhuǎn)義
  • \000空
  • \n換行
  • \v縱向制表符
  • \t橫向制表符
  • \r回車(chē)
  • \f換頁(yè)
  • \oyy八進(jìn)制數(shù),yy代表的字符,例如:
  • \o12代表?yè)Q行
  • \xyy十六進(jìn)制數(shù),yy代表的字符,例如:
  • \x0a代表?yè)Q行
  • \other其它的字符以普通格式輸出

Python字符串格式化符號(hào)

  • %c 格式化字符及其ASCII碼 - %s 格式化字符串
  • %d 格式化整數(shù)
  • %u 格式化無(wú)符號(hào)整型
  • %o 格式化無(wú)符號(hào)八進(jìn)制數(shù)
  • %x 格式化無(wú)符號(hào)十六進(jìn)制數(shù)
  • %X 格式化無(wú)符號(hào)十六進(jìn)制數(shù)(大寫(xiě))
  • %f 格式化浮點(diǎn)數(shù)字,可指定小數(shù)點(diǎn)后的精度
  • %e 用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
  • %E 作用同%e,用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
  • %g %f和%e的簡(jiǎn)寫(xiě)
  • %G %f 和 %E 的簡(jiǎn)寫(xiě)
  • %p 用十六進(jìn)制數(shù)格式化變量的地址

格式化操作符輔助指令:

  • * 定義寬度或者小數(shù)點(diǎn)精度
  • - 用做左對(duì)齊
  • + 在正數(shù)前面顯示加號(hào)( + )- <sp> 在正數(shù)前面顯示空格- # 在八進(jìn)制數(shù)前面顯示零('0'),在十六進(jìn)制前面顯示'0x'或者'0X'(取決于用的是'x'還是'X')
  • 0 顯示的數(shù)字前面填充'0'而不是默認(rèn)的空格
  • % '%%'輸出一個(gè)單一的'%'
  • (var) 映射變量(字典參數(shù))
  • m.n.m 是顯示的最小總寬度,n 是小數(shù)點(diǎn)后的位數(shù)(如果可用的話(huà))

字符串內(nèi)建函數(shù)

方法 描述
string.capitalize(): 把字符串的第一個(gè)字符大寫(xiě)
string.center(width): 返回一個(gè)原字符串居中,并使用空格填充至長(zhǎng)度 width 的新字符串
string.count(str, beg=0, end=len(string)): 返回 str 在 string 里面出現(xiàn)的次數(shù),如果 beg 或者 end 指定則返回指定范圍內(nèi) str 出現(xiàn)的次數(shù)
string.decode(encoding='UTF-8', errors='strict'): 以 encoding 指定的編碼格式解碼 string, 如果出錯(cuò)默認(rèn)報(bào)一個(gè) ValueError 的 異 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'
string.encode(encoding='UTF-8', errors='strict'): 以 encoding 指定的編碼格式編碼 string,如果出錯(cuò)默認(rèn)報(bào)一個(gè)ValueError 的異常,除非 errors 指定的是'ignore'或者'replace'
string.endswith(obj, beg=0, end=len(string)): 檢查字符串是否以 obj 結(jié)束,如果beg 或者 end 指定則檢查指定的范圍內(nèi)是否以 obj 結(jié)束,如果是,返回 True,否則返回 False.
string.expandtabs(tabsize=8): 把字符串 string 中的 tab 符號(hào)轉(zhuǎn)為空格,tab 符號(hào)默認(rèn)的空格數(shù)是 8。
string.find(str, beg=0, end=len(string)): 檢測(cè) str 是否包含在 string 中,如果 beg 和 end 指定范圍,則檢查是否包含在指定范圍內(nèi),如果是返回開(kāi)始的索引值,否則返回-1
string.format(): 格式化字符串
string.index(str, beg=0, end=len(string)): 跟find()方法一樣,只不過(guò)如果str不在 string中會(huì)報(bào)一個(gè)異常.
string.isalnum(): 如果 string 至少有一個(gè)字符并且所有字符都是字母或數(shù)字則返回 True,否則返回 False
string.isalpha(): 如果 string 至少有一個(gè)字符并且所有字符都是字母則返回 True,否則返回 False
string.isdecimal(): 如果 string 只包含十進(jìn)制數(shù)字則返回 True 否則返回 False.
string.isdigit(): 如果 string 只包含數(shù)字則返回 True 否則返回 False.
string.islower(): 如果 string 中包含至少一個(gè)區(qū)分大小寫(xiě)的字符,并且所有這些(區(qū)分大小寫(xiě)的)字符都是小寫(xiě),則返回 True,否則返回 False
string.isnumeric(): 如果 string 中只包含數(shù)字字符,則返回 True,否則返回 False
string.isspace(): 如果 string 中只包含空格,則返回 True,否則返回 False.
string.istitle(): 如果 string 是標(biāo)題化的(見(jiàn) title())則返回 True,否則返回 False
string.isupper(): 如果 string 中包含至少一個(gè)區(qū)分大小寫(xiě)的字符,并且所有這些(區(qū)分大小寫(xiě)的)字符都是大寫(xiě),則返回 True,否則返回 False
string.join(seq): 以 string 作為分隔符,將 seq 中所有的元素(的字符串表示)合并為一個(gè)新的字符串
string.ljust(width): 返回一個(gè)原字符串左對(duì)齊,并使用空格填充至長(zhǎng)度 width 的新字符串
string.lower(): 轉(zhuǎn)換 string 中所有大寫(xiě)字符為小寫(xiě).
string.lstrip(): 截掉 string 左邊的空格
string.maketrans(intab, outtab]): maketrans() 方法用于創(chuàng)建字符映射的轉(zhuǎn)換表,對(duì)于接受兩個(gè)參數(shù)的最簡(jiǎn)單的調(diào)用方式,第一個(gè)參數(shù)是字符串,表示需要轉(zhuǎn)換的字符,第二個(gè)參數(shù)也是字符串表示轉(zhuǎn)換的目標(biāo)。
max(str): 返回字符串 str 中最大的字母。
min(str): 返回字符串 str 中最小的字母。
string.partition(str): 有點(diǎn)像 find()和 split()的結(jié)合體,從 str 出現(xiàn)的第一個(gè)位置起,把 字 符 串 string 分 成 一 個(gè) 3 元 素 的 元 組 (string_pre_str,str,string_post_str),如果 string 中不包含str 則 string_pre_str == string.
string.replace(str1, str2, num=string.count(str1)): 把 string 中的 str1 替換成 str2,如果 num 指定,則替換不超過(guò) num 次.
string.rfind(str, beg=0,end=len(string) ): 類(lèi)似于 find()函數(shù),不過(guò)是從右邊開(kāi)始查找.
string.rindex( str, beg=0,end=len(string)): 類(lèi)似于 index(),不過(guò)是從右邊開(kāi)始.
string.rjust(width): 返回一個(gè)原字符串右對(duì)齊,并使用空格填充至長(zhǎng)度 width 的新字符串
string.rpartition(str): 類(lèi)似于 partition()函數(shù),不過(guò)是從右邊開(kāi)始查找.
string.rstrip(): 刪除 string 字符串末尾的空格.
string.split(str="", num=string.count(str)): 以 str 為分隔符切片 string,如果 num有指定值,則僅分隔 num 個(gè)子字符串
string.splitlines([keepends]): 按照行('\r', '\r\n', \n')分隔,返回一個(gè)包含各行作為元素的列表,如果參數(shù) keepends 為 False,不包含換行符,如果為 True,則保留換行符。
string.startswith(obj, beg=0,end=len(string)): 檢查字符串是否是以 obj 開(kāi)頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定范圍內(nèi)檢查.
string.strip([obj]): 在 string 上執(zhí)行 lstrip()和 rstrip()
string.swapcase(): 翻轉(zhuǎn) string 中的大小寫(xiě)
string.title(): 返回"標(biāo)題化"的 string,就是說(shuō)所有單詞都是以大寫(xiě)開(kāi)始,其余字母均為小寫(xiě)(見(jiàn) istitle())
string.translate(str, del=""): 根據(jù) str 給出的表(包含 256 個(gè)字符)轉(zhuǎn)換 string 的字符, 要過(guò)濾掉的字符放到 del 參數(shù)中
string.upper(): 轉(zhuǎn)換 string 中的小寫(xiě)字母為大寫(xiě)
string.zfill(width): 返回長(zhǎng)度為 width 的字符串,原字符串 string 右對(duì)齊,前面填充0
string.isdecimal(): isdecimal()方法檢查字符串是否只包含十進(jìn)制字符。這種方法只存在于unicode對(duì)象。

日期和時(shí)間

時(shí)間間隔是以秒為單位的浮點(diǎn)小數(shù)。
每個(gè)時(shí)間戳都以自從1970年1月1日午夜(歷元)經(jīng)過(guò)了多長(zhǎng)時(shí)間來(lái)表示。

# 獲取當(dāng)前時(shí)間戳
In [3]: print time.time()
1542250660.2

時(shí)間戳單位最適于做日期運(yùn)算。但是1970年之前的日期就無(wú)法以此表示了。太遙遠(yuǎn)的日期也不行,UNIX和Windows只支持到2038年。

struct_time元組

struct_time元組

屬性
tm_year 2008
tm_mon 1-12
tm_mday 1-31
tm_hour 0-23
tm_min 0-59
tm_sec 0-61(60/61閏秒)
tm_wday 0-6周一到周日
tm_yday 0-366(儒略歷)
tm_isdst -1, 0, 1, -1是決定是否為夏令時(shí)的旗幟

獲取當(dāng)前時(shí)間

獲取當(dāng)前時(shí)間 struct_time格式

In [7]: print time.localtime(time.time())
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=17, tm_min=52, tm_sec=23, tm_wday=3, tm_yday=319, tm_isdst=0)

獲取當(dāng)前時(shí)間 asctime格式

In [8]: print  time.asctime( time.localtime(time.time()) )
Thu Nov 15 17:53:21 2018

格式化日期

使用 time.strftime() 方法來(lái)格式化日期

time.strftime(format[, t])

實(shí)例演示

# 格式化成2016-03-20 11:45:39形式
In [9]: print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 
2018-11-15 17:55:43
# 格式化成Sat Mar 28 22:24:24 2016形式
In [10]: print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) 
Thu Nov 15 17:55:54 2018
# 將格式字符串轉(zhuǎn)換為時(shí)間戳
In [11]: a = "Sat Mar 28 22:24:24 2016"
In [12]: print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
1459175064.0

python中時(shí)間日期格式化符號(hào):

  • %y 兩位數(shù)的年份表示(00-99)
  • %Y 四位數(shù)的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月內(nèi)中的一天(0-31)
  • %H 24小時(shí)制小時(shí)數(shù)(0-23)
  • %I 12小時(shí)制小時(shí)數(shù)(01-12)
  • %M 分鐘數(shù)(00=59)
  • %S 秒(00-59)
  • %a 本地簡(jiǎn)化星期名稱(chēng)
  • %A 本地完整星期名稱(chēng)
  • %b 本地簡(jiǎn)化的月份名稱(chēng)
  • %B 本地完整的月份名稱(chēng)
  • %c 本地相應(yīng)的日期表示和時(shí)間表示
  • %j 年內(nèi)的一天(001-366)
  • %p 本地A.M.或P.M.的等價(jià)符
  • %U 一年中的星期數(shù)(00-53)星期天為星期的開(kāi)始
  • %w 星期(0-6),星期天為星期的開(kāi)始
  • %W 一年中的星期數(shù)(00-53)星期一為星期的開(kāi)始
  • %x 本地相應(yīng)的日期表示
  • %X 本地相應(yīng)的時(shí)間表示
  • %Z 當(dāng)前時(shí)區(qū)的名稱(chēng)
  • %% %號(hào)本身

日歷模塊 Calendar

Calendar模塊有很廣泛的方法用來(lái)處理年歷和月歷,例如打印某月的月歷:

cal = calendar.month(2016, 1)
print "以下輸出2016年1月份的日歷:"
print cal;

January 2016
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Time模塊函數(shù)

Time 模塊包含了以下內(nèi)置函數(shù),既有時(shí)間處理的,也有轉(zhuǎn)換時(shí)間格式的:

模塊函數(shù) 描述
time.altzone 返回格林威治西部的夏令時(shí)地區(qū)的偏移秒數(shù)。如果該地區(qū)在格林威治東部會(huì)返回負(fù)值(如西歐,包括英國(guó))。對(duì)夏令時(shí)啟用地區(qū)才能使用。
time.asctime([tupletime]) 接受時(shí)間元組并返回一個(gè)可讀的形式為"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18時(shí)07分14秒)的24個(gè)字符的字符串。
time.clock( ) 用以浮點(diǎn)數(shù)計(jì)算的秒數(shù)返回當(dāng)前的CPU時(shí)間。用來(lái)衡量不同程序的耗時(shí),比time.time()更有用。
time.ctime([secs]) 作用相當(dāng)于asctime(localtime(secs)),未給參數(shù)相當(dāng)于asctime()
time.gmtime([secs]) 接收時(shí)間戳(1970紀(jì)元后經(jīng)過(guò)的浮點(diǎn)秒數(shù))并返回格林威治天文時(shí)間下的時(shí)間元組t。注:t.tm_isdst始終為0
time.localtime([secs]) 接收時(shí)間戳(1970紀(jì)元后經(jīng)過(guò)的浮點(diǎn)秒數(shù))并返回當(dāng)?shù)貢r(shí)間下的時(shí)間元組t(t.tm_isdst可取0或1,取決于當(dāng)?shù)禺?dāng)時(shí)是不是夏令時(shí))。
time.mktime(tupletime) 接受時(shí)間元組并返回時(shí)間戳(1970紀(jì)元后經(jīng)過(guò)的浮點(diǎn)秒數(shù))。
time.sleep(secs) 推遲調(diào)用線(xiàn)程的運(yùn)行,secs指秒數(shù)。
time.strftime(fmt[,tupletime]) 接收以時(shí)間元組,并返回以可讀字符串表示的當(dāng)?shù)貢r(shí)間,格式由fmt決定。
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') 根據(jù)fmt的格式把一個(gè)時(shí)間字符串解析為時(shí)間元組。
time.time( ) 返回當(dāng)前時(shí)間的時(shí)間戳(1970紀(jì)元后經(jīng)過(guò)的浮點(diǎn)秒數(shù))。
time.tzset() 根據(jù)環(huán)境變量TZ重新初始化時(shí)間相關(guān)設(shè)置。

Time模塊包含了以下2個(gè)非常重要的屬性:
time.timezone
屬性time.timezone是當(dāng)?shù)貢r(shí)區(qū)(未啟動(dòng)夏令時(shí))距離格林威治的偏移秒數(shù)(>0,美洲;<=0大部分歐洲,亞洲,非洲)

time.tzname
屬性time.tzname包含一對(duì)根據(jù)情況的不同而不同的字符串,分別是帶夏令時(shí)的本地時(shí)區(qū)名稱(chēng),和不帶的。

Calendar函數(shù)

星期一是默認(rèn)的每周第一天,星期天是默認(rèn)的最后一天。更改設(shè)置需調(diào)用calendar.setfirstweekday()函數(shù)。模塊包含了以下內(nèi)置函數(shù):

calendar.calendar(year,w=2,l=1,c=6)
返回一個(gè)多行字符串格式的year年年歷,3個(gè)月一行,間隔距離為c。 每日寬度間隔為w字符。每行長(zhǎng)度為21* W+18+2* C。l是每星期行數(shù)。

calendar.firstweekday( )
返回當(dāng)前每周起始日期的設(shè)置。默認(rèn)情況下,首次載入caendar模塊時(shí)返回0,即星期一。

calendar.isleap(year)
是閏年返回 True,否則為 False。

calendar.leapdays(y1,y2)
返回在Y1,Y2兩年之間的閏年總數(shù)。

calendar.month(year,month,w=2,l=1)
返回一個(gè)多行字符串格式的year年month月日歷,兩行標(biāo)題,一周一行。每日寬度間隔為w字符。每行的長(zhǎng)度為7* w+6。l是每星期的行數(shù)。

calendar.monthcalendar(year,month)
返回一個(gè)整數(shù)的單層嵌套列表。每個(gè)子列表裝載代表一個(gè)星期的整數(shù)。Year年month月外的日期都設(shè)為0;范圍內(nèi)的日子都由該月第幾日表示,從1開(kāi)始。

calendar.monthrange(year,month)
返回兩個(gè)整數(shù)。第一個(gè)是該月的星期幾的日期碼,第二個(gè)是該月的日期碼。日從0(星期一)到6(星期日);月從1到12。

calendar.prcal(year,w=2,l=1,c=6)
相當(dāng)于 print calendar.calendar(year,w,l,c).

calendar.prmonth(year,month,w=2,l=1)
相當(dāng)于 print calendar.calendar(year,w,l,c)。

calendar.setfirstweekday(weekday)
設(shè)置每周的起始日期碼。0(星期一)到6(星期日)。

calendar.timegm(tupletime)
和time.gmtime相反:接受一個(gè)時(shí)間元組形式,返回該時(shí)刻的時(shí)間戳(1970紀(jì)元后經(jīng)過(guò)的浮點(diǎn)秒數(shù))。

calendar.weekday(year,month,day)
返回給定日期的日期碼。0(星期一)到6(星期日)。月份為 1(一月) 到 12(12月)

datetime函數(shù)

pass

Some Tips

循環(huán)控制語(yǔ)句

break語(yǔ)句: 語(yǔ)句塊中終止循環(huán),并跳出。
continue語(yǔ)句: 語(yǔ)句塊中終止循環(huán),繼續(xù)下次循環(huán)。
pass語(yǔ)句: 空語(yǔ)句,用于保持程序完整性。

使用內(nèi)置 enumerate 函數(shù)進(jìn)行遍歷

In [24]: sequence = [1,2,3]
In [26]: for index, item in enumerate(sequence):
    ...:         print(index, item) 
(0, 1)
(1, 2)
(2, 3)

In [27]: sequence = {'a':1,'b':2,'c':3}
In [28]: for index, item in enumerate(sequence):
    ...:         print(index, item)
(0, 'a')
(1, 'c')
(2, 'b')

return func和return func()區(qū)別

  • return func : 返回函數(shù)func
  • return func(): 返回函數(shù)func()的返回值。
In [27]: def funx(x):
    ...:     def funy(y=1):
    ...:         return x*y
    ...:     return funy

In [28]: funx(12)(2)
Out[28]: 24

函數(shù)參數(shù)類(lèi)型

函數(shù)參數(shù)的類(lèi)型:

  • 必備參數(shù): 必備參數(shù)須以正確的順序傳入函數(shù)。調(diào)用時(shí)的數(shù)量必須和聲明時(shí)的一樣。
  • 關(guān)鍵字參數(shù): 使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時(shí)參數(shù)的順序與聲明時(shí)不一致,因?yàn)?Python 解釋器能夠用參數(shù)名匹配參數(shù)值。
  • 默認(rèn)參數(shù): 調(diào)用函數(shù)時(shí),缺省參數(shù)的值如果沒(méi)有傳入,則被認(rèn)為是默認(rèn)值。下
  • 不定長(zhǎng)參數(shù):"* **" 你可能需要一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù)。這些參數(shù)叫做不定長(zhǎng)參數(shù),和上述2種參數(shù)不同,聲明時(shí)不會(huì)命名

列表與字典函數(shù)

Python列表 內(nèi)置方法

序號(hào) 方法
list.append(obj) 在列表末尾添加新的對(duì)象
list.count(obj) 統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)
list.extend(seq) 在列表末尾一次性追加另一個(gè)序列中的多個(gè)值(用新列表擴(kuò)展原來(lái)的列表)
list.index(obj) 從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置
list.insert(index, obj) 將對(duì)象插入列表
list.pop(obj=list[-1]) 移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值
list.remove(obj) 移除列表中某個(gè)值的第一個(gè)匹配項(xiàng)
list.reverse() 反向列表中元素
list.sort([func]) 對(duì)原列表進(jìn)行排序

Python字典 內(nèi)置方法

序號(hào) 函數(shù)及描述
dict.clear() 刪除字典內(nèi)所有元素
dict.copy() 返回一個(gè)字典的淺復(fù)制
dict.fromkeys(seq[, val]) 創(chuàng)建一個(gè)新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對(duì)應(yīng)的初始值
dict.get(key, default=None) 返回指定鍵的值,如果值不在字典中返回default值
dict.has_key(key) 如果鍵在字典dict里返回true,否則返回false
dict.items() 以列表返回可遍歷的(鍵, 值) 元組數(shù)組
dict.keys() 以列表返回一個(gè)字典所有的鍵
dict.setdefault(key, default=None) 和get()類(lèi)似, 但如果鍵不存在于字典中,將會(huì)添加鍵并將值設(shè)為default
dict.update(dict2) 把字典dict2的鍵/值對(duì)更新到dict里
dict.values() 以列表返回字典中的所有值
pop(key[,default]) 刪除字典給定鍵 key 所對(duì)應(yīng)的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。
popitem() 隨機(jī)返回并刪除字典中的一對(duì)鍵和值。

讀取鍵盤(pán)輸入

  • raw_input: 讀取行,并返回字符串。
  • input: 讀取行,可以讀取表達(dá)式,并將運(yùn)算結(jié)果返回。
In [33]: input('輸入內(nèi)容為:')
輸入內(nèi)容為:test
NameError: name 'test' is not defined
In [32]: raw_input('輸入內(nèi)容為:')
輸入內(nèi)容為:test
Out[32]: 'test'

In [35]: input('輸入內(nèi)容為:')
輸入內(nèi)容為:[i for i in range(1,3)]
Out[35]: [1, 2]
In [36]: raw_input('輸入內(nèi)容為:')
輸入內(nèi)容為:[i for i in range(1,3)]
Out[36]: '[i for i in range(1,3)]'
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容