成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Python-標(biāo)準(zhǔn)庫(kù)

abson / 2789人閱讀

摘要:標(biāo)準(zhǔn)庫(kù)一譯廖雪峰內(nèi)建函數(shù)內(nèi)建函數(shù)內(nèi)建函數(shù)內(nèi)置類(lèi)型真值的測(cè)試下面的值被視為假任何數(shù)值類(lèi)型的零,例如,。該對(duì)象必須支持如下所述的迭代器協(xié)議。該協(xié)議的意圖是一旦迭代器的方法引發(fā),后續(xù)調(diào)用將繼續(xù)這樣的行為。

Python-標(biāo)準(zhǔn)庫(kù) 一譯
http://python.usyiyi.cn
廖雪峰
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820066616a77f826d876b46b9ac34cb5f34374f7a000

[TOC]


1 內(nèi)建函數(shù)

The Python interpreter has a number of functions built into it that are always available.

內(nèi)建函數(shù) http://python.usyiyi.cn/trans...
內(nèi) 數(shù) ..
abs() divmod() input() open() staticmethod()
all() enumerate() int() ord() str()
any() eval() isinstance() pow() sum()
basestring() execfile() issubclass() print() super()
bin() file() iter() property() tuple()
bool() filter() len() range() type()
bytearray() float() list() raw_input() unichr()
callable() format() locals() reduce() unicode()
chr() frozenset() long() reload() vars()
classmethod() getattr() map() repr() xrange()
cmp() globals() max() reversed() zip()
compile() hasattr() memoryview() round() __import__()
complex() hash() min() set() apply()
delattr() help() next() setattr() buffer()
dict() hex() object() slice() coerce()
dir() id() oct() sorted() intern()
2 內(nèi)置類(lèi)型 2.1. 真值的測(cè)試

下面的值被視為假:

None
False
任何數(shù)值類(lèi)型的零,例如,0、 0L、0.0、 0j。
任何空的序列,例如, ""、 ()、 []。
任何空的映射,例如,{}。
用戶(hù)定義的類(lèi)的實(shí)例,如果該類(lèi)定義一個(gè)__nonzero__()或__len__()的方法,在該方法返回整數(shù)零或布爾值False時(shí)。[1]
2.2. 布爾操作 — and, or, not

and or not

2.3. 比較操作
操作 含義
< 嚴(yán)格地小于
<= 小于或等于
|嚴(yán)格地大于| 
=|大于或等于|
==|等于|
!= or <>|不等于|
is|對(duì)象的ID|
is not|不同的對(duì)象ID|

類(lèi)的非同一個(gè)實(shí)例比較時(shí)通常不相等,除非該類(lèi)定義__eq__()或__cmp__()方法。

一個(gè)類(lèi)的實(shí)例通常不能與同一個(gè)類(lèi)的其它實(shí)例或者其他類(lèi)型的對(duì)象排序,除非該類(lèi)定義足夠豐富的比較方法(__ge__()、__le__()、__gt__()、__lt__())或__cmp__()方法。

2.4. 數(shù)值類(lèi)型 — int, float, long, complex

有四種不同的數(shù)值類(lèi)型:普通整數(shù)、長(zhǎng)整數(shù)、浮點(diǎn)數(shù)和復(fù)數(shù)。此外,布爾值是普通整數(shù)的一個(gè)子類(lèi)型。普通整數(shù)(或者簡(jiǎn)稱(chēng)整數(shù))使用C中的long實(shí)現(xiàn),其精度至少為32位(sys.maxint始終設(shè)置為當(dāng)前平臺(tái)最大的普通整數(shù)值,最小值是-sys.maxint - 1)。長(zhǎng)整數(shù)具有無(wú)限的精度。浮點(diǎn)數(shù)字通常使用C中的double實(shí)現(xiàn);有關(guān)你的程序所運(yùn)行的機(jī)器上的浮點(diǎn)數(shù)精度及其內(nèi)部表示形式的信息在sys.float_info中可以獲得。復(fù)數(shù)有實(shí)部和虛部,各是一個(gè)浮點(diǎn)數(shù)。若要從復(fù)數(shù)z中提取這些部分,請(qǐng)使用z.real和z.imag。(標(biāo)準(zhǔn)庫(kù)包括額外的數(shù)值類(lèi)型,fractions支持有理數(shù),decimal支持用戶(hù)自定義精度的浮點(diǎn)數(shù)。)

數(shù)值通過(guò)數(shù)字字面值或內(nèi)建的函數(shù)和操作的結(jié)果創(chuàng)建。普通的整數(shù)字面值(包括二進(jìn)制、十六進(jìn)制和八進(jìn)制數(shù)字)產(chǎn)生普通整數(shù),除非它們指定的值太大以致不能用一個(gè)普通的整數(shù)表示,在這種情況下它們產(chǎn)生一個(gè)長(zhǎng)整型。帶有"L"或"l"后綴的整數(shù)字面值產(chǎn)生長(zhǎng)整數(shù)(偏向使用"L",因?yàn)?l看起來(lái)太像十一)。包含小數(shù)點(diǎn)或指數(shù)符號(hào)的數(shù)字字面值產(chǎn)生浮點(diǎn)數(shù)。將"j"或"J"附加到數(shù)字字面值的尾部產(chǎn)生實(shí)部為零的復(fù)數(shù)。復(fù)數(shù)字面值是實(shí)部和虛部的和。

Python完全支持混合的算法:當(dāng)二元算術(shù)運(yùn)算符的操作數(shù)是不同的數(shù)值類(lèi)型時(shí),“較窄”類(lèi)型的操作數(shù)會(huì)拓寬成另外一個(gè)操作數(shù)的類(lèi)型,其中整數(shù)窄于長(zhǎng)整數(shù)窄于浮點(diǎn)數(shù)窄于復(fù)數(shù)。比較混合型數(shù)字之間使用相同的規(guī)則。[2]構(gòu)造函數(shù)int()、long()、float()和complex()可用于產(chǎn)生的一種特定類(lèi)型的數(shù)值。

操作 含義
x + y x與y和
x - y x與y的差
x * y x與y的積
x / y x與y的商 (1)
x // y x與y的(整除)商 (4)(5)
x % y x / y的余數(shù) (4)
-x 負(fù)x
+x x保持不變
abs(x) x的絕對(duì)值或大小 (3)
int(x) x轉(zhuǎn)換成整數(shù) (2)
long(x) x轉(zhuǎn)換成長(zhǎng)整數(shù) (2)
float(x) x轉(zhuǎn)換成浮點(diǎn)數(shù) (6)
complex(re,im) 實(shí)部為re,虛部為im的一個(gè)復(fù)數(shù)。im默認(rèn)為零。
c.conjugate() 復(fù)數(shù)c的共軛。(用實(shí)數(shù)表示)
divmod(x, y) 元組(x // y, x % y) (3)(4)
pow(x, y) x的y次方 (3)(7)
x ** y x的y次方 (7)
注:

1 對(duì)于(普通或長(zhǎng))整數(shù)除法,結(jié)果是一個(gè)整數(shù)。結(jié)果總是向負(fù)無(wú)窮舍入:1/2是0,(-1)/2是-1,1/(-2)是-1,(-1)/(-2)是0。請(qǐng)注意如果任何一個(gè)操作數(shù)是長(zhǎng)整數(shù),結(jié)果都會(huì)是一個(gè)長(zhǎng)整數(shù),與值大小無(wú)關(guān)。

2 使用int()或long()函數(shù)轉(zhuǎn)換浮點(diǎn)數(shù)會(huì)向零截?cái)?,?lèi)似相關(guān)的函數(shù)math.trunc()函數(shù)。使用函數(shù)math.floor()以向下取整和math.ceil()以向上取整。

3 完整的說(shuō)明請(qǐng)參閱內(nèi)置函數(shù)。

4 從2.3版開(kāi)始棄用:整除運(yùn)算符、取模運(yùn)算符和divmod()函數(shù)不再為復(fù)數(shù)定義。相反,如果合適,可以使用abs()函數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)。

5 也被稱(chēng)為整數(shù)除法。結(jié)果是一個(gè)整數(shù),但其類(lèi)型不一定是int型。

6 浮點(diǎn)數(shù)還接受可帶有可選前綴 "+"或"-"的字符串"nan"和"inf"來(lái)表示非數(shù)字(NaN))和正/負(fù)無(wú)窮。

7 在2.6版中新增。

8 Python定義pow(0,0)和0 ** 0為1,這對(duì)于編程語(yǔ)言很常見(jiàn)。
2.4.1 整數(shù)類(lèi)型的位操作

按位運(yùn)算只有對(duì)整數(shù)才有意義。負(fù)數(shù)被視為它們2的補(bǔ)值(這假定操作過(guò)程中有足夠多的位數(shù)而沒(méi)有發(fā)生溢出)。

二元位運(yùn)算的優(yōu)先級(jí)都低于數(shù)值操作,但高于比較操作;一元操作~具有和其它的一元數(shù)值操作(+和-)相同的優(yōu)先級(jí)。

下表按優(yōu)先級(jí)升序排列列出位運(yùn)算(在同一格中的操作具有相同的優(yōu)先級(jí)):

操作 含義
x y x和y的按位或
x ^ y x和y的按位異或
x & y x和y的按位與
x << n x左移n位 (1)(2)
x >> n x右移n位 (1)(3)
~x 反轉(zhuǎn)x的各個(gè)位
注
負(fù)的移位數(shù)目是非法的并導(dǎo)致引發(fā)一個(gè)ValueError。
左移n等同于乘以pow(2, n)。如果結(jié)果超過(guò)普通整數(shù)的范圍則返回一個(gè)長(zhǎng)整數(shù)。
右移n位等同于除以pow(2, n)。
2.4.2 整數(shù)類(lèi)型其他方法

long.bit_length()
返回以二進(jìn)制表示一個(gè)整數(shù)必須的位數(shù),不包括符號(hào)和前導(dǎo)零:

>>> n = -37
>>> bin(n)
"-0b100101"
>>> n.bit_length()
6
2.4.3 浮點(diǎn)數(shù)的其它方法


float.is_integer() : 如果浮點(diǎn)數(shù)實(shí)例僅有整數(shù),則返回True,否則返回False

float.hex()

float.fromhex(s)

2.5. 迭代器類(lèi)型

Python支持容器上迭代的概念。這種實(shí)現(xiàn)使用兩種截然不同的方法;它們都用于允許用戶(hù)定義的類(lèi)支持迭代。下面有更多細(xì)節(jié)描述的序列始終支持迭代方法。

容器對(duì)象需要定義一種方法以支持迭代:

container.__iter__()
返回迭代器對(duì)象。該對(duì)象必須支持如下所述的迭代器協(xié)議。如果一個(gè)容器支持不同類(lèi)型的迭代,可以提供額外的方法來(lái)為這些迭代類(lèi)型要求特定的迭代器。(對(duì)象支持多種迭代形式的一個(gè)示例是支持廣度和深度優(yōu)先遍歷的樹(shù)結(jié)構(gòu))。此方法對(duì)應(yīng)于Python/C API中Python對(duì)象的類(lèi)型結(jié)構(gòu)的tp_iter 部分。

迭代器對(duì)象本身需要支持以下兩種方法,它們組合在一起形成迭代器協(xié)議:

iterator.__iter__()
返回迭代器對(duì)象本身。這允許容器和迭代器都可以在for和in語(yǔ)句中使用。此方法對(duì)應(yīng)于Python/C API中Python對(duì)象的類(lèi)型結(jié)構(gòu)的tp_iter slot。

iterator.next()
從容器中返回下一個(gè)元素。如果沒(méi)有元素,引發(fā)StopIteration異常。此方法對(duì)應(yīng)于Python/C API中Python對(duì)象的類(lèi)型結(jié)構(gòu)的tp_iternext slot。

Python定義了幾個(gè)迭代器對(duì)象以支持在通用和特定的序列類(lèi)型、字典以及其他更多特殊形式上的迭代。相比迭代器協(xié)議的實(shí)現(xiàn),具體的類(lèi)型并不重要。

該協(xié)議的意圖是一旦迭代器的next()方法引發(fā)StopIteration,后續(xù)調(diào)用將繼續(xù)這樣的行為。不遵守此性質(zhì)的實(shí)現(xiàn)被認(rèn)為是有問(wèn)題的。(此約束在Python 2.3中添加;在Python 2.2中,有多個(gè)迭代器違背了此規(guī)則)。

2.5.1 生成器類(lèi)型

Python的生成器提供一種方便的方法來(lái)實(shí)現(xiàn)迭代器協(xié)議。如果容器對(duì)象的__iter__()方法實(shí)現(xiàn)為一個(gè)生成器,它將自動(dòng)返回一個(gè)提供__iter__()和next()方法的迭代器對(duì)象(從技術(shù)上講,是生成器對(duì)象)。生成器的更多信息可以在yield表達(dá)式的文檔中找到。

2.6. 序列類(lèi)型 — str, unicode, list, tuple, bytearray, buffer, xrange

其他容器請(qǐng)參閱內(nèi)建的dict和set類(lèi),以及collections模塊。

字符串常量寫(xiě)在單引號(hào)或雙引號(hào)中:"xyzzy","frobozz"。字符串字面值的更多信息請(qǐng)參閱字符串字面值。Unicode字符串與字符串非常相似,但是使用特殊的語(yǔ)法即一個(gè)前導(dǎo)的字符"u"指定:u"abc",u"def"。除了這里描述的功能之外,字符串還有特定的方法在字符串方法一節(jié)中描述。列表使用方括號(hào)構(gòu)造,元素以逗號(hào)分隔:[a, b, c]。元組通過(guò)逗號(hào)操作符構(gòu)造(不在方括號(hào)中), 帶或者不帶圓括號(hào),但是空元組必須具有圓括號(hào),例如a, b, c或()。單個(gè)元素的元組必須含有一個(gè)尾部的逗號(hào),例如(d,)。

字節(jié)數(shù)組對(duì)象使用內(nèi)置函數(shù)bytearray()來(lái)創(chuàng)建。

Python語(yǔ)法不直接支持緩沖區(qū)對(duì)象,但可以通過(guò)調(diào)用內(nèi)置函數(shù)buffer()創(chuàng)建。它們不支持連接或重復(fù)。

xrange類(lèi)型的對(duì)象類(lèi)似于緩沖區(qū),沒(méi)有特定的語(yǔ)法來(lái)創(chuàng)建它們,而是使用xrange()函數(shù)創(chuàng)建它們。它們不支持切片、 連接或重復(fù),在它們上使用in,not in、 min()或max()效率較低。

大多數(shù)的序列類(lèi)型支持以下操作。in和not in操作具有與比較操作相同的優(yōu)先級(jí)。+和*的操作具有與相應(yīng)的數(shù)值操作相同的優(yōu)先級(jí)。[3]可變序列類(lèi)型還提供其他的方法。

下標(biāo)按優(yōu)先級(jí)升序排列序列的操作(在相同格子中的操作具有相同的優(yōu)先級(jí))。在表中,s和t是類(lèi)型相同的序列;n、i和j是整數(shù):

操作 含義
x in s True if an item of s is equal to x, else False (1)
x not in s False if an item of s is equal to x, else True (1)
s + t the concatenation of s and t (6)
s n, n s n shallow copies of s concatenated (2)
s[i] ith item of s, origin 0 (3)
s[i:j] slice of s from i to j (3)(4)
s[i:j:k] slice of s from i to j with step k (3)(5)
len(s) length of s
min(s) smallest item of s
max(s) largest item of s
s.index(x) index of the first occurrence of x in s
s.count(x) total number of occurrences of x in s
2.6.1. 字符串的方法
#!C:/Python27/python
# -*- coding: utf8 -*-
import os
import sys

# str function

str1="test_string_str"
str11="胡畔"
## 返回字符串的副本,該副本第一個(gè)字符大寫(xiě),其余字符小寫(xiě)
print(str1.capitalize())
##返回長(zhǎng)度為width的字符串,并使得自身居中。使用指定的fillchar(默認(rèn)為一個(gè)空格)做填充。
str2=str1.center(10,"-")
print(str2)
##返回在[start, end]范圍內(nèi)的子串sub非重疊出現(xiàn)的次數(shù)??蛇x參數(shù)start和end都以切片表示法解釋。
str2=str1.count("str")
print(str2)
##使用 encoding 中注冊(cè)的編解碼器,對(duì)字符串進(jìn)行解碼。
str2=str11.decode("gbk")
print(str2)
## 返回該字符串編碼后的版本
str2=str2.encode("gbk")
print(str2)
## 如果字符串以指定的suffix結(jié)尾則返回True,否則返回False
str2=str1.endswith("str")
print(str2)

## 返回在字符串中找到的子字符串sub的最低索引,使得sub包含在切片s[start:end]中
str2=str1.find("str")
print(str2)

## 執(zhí)行字符串格式化操作。調(diào)用此方法的字符串可以包含文本字面值或由花括號(hào){}分隔的替換字段
print("The sum of 1 + 2 is {0}".format(1+2))

## 類(lèi)似find(),但未找到子字符串時(shí)引發(fā)ValueError
str2=str1.index("str")
print(str2)

## 如果字符串中的所有字符都是數(shù)字或者字母,并且至少有一個(gè)字符,則返回true,否則返回false。
str2=str1.isalnum()
print(str2)

## 字符串至少有一個(gè)字符并且都是字母,則返回true,否則返回false
str2=str1.isalpha()
print(str2)

## 如果在字符串中的所有字符都是數(shù)字并且至少一個(gè)字符,則返回 true。否則返回false。
str1.isdigit()

## 如果在字符串中的所有套管井的字符[4]都小寫(xiě),還有套管井的至少一個(gè)字符虛假否則返回 true。
str1.islower()

## 返回一個(gè)字符串,為iterable可迭代對(duì)象中字符串的連接。元素之間的分隔符是提供該方法的字符串。
path1="/home/ap"
file1="log.log"
print("/".join([path1,file1]))

## 返回刪除前導(dǎo)字符的字符串的副本。Chars參數(shù)是一個(gè)字符串,指定要移除的字符集。如果省略或沒(méi)有 chars參數(shù)默認(rèn)為刪除空格
print("/home/ap/".lstrip("/"))
print("www.example.com".lstrip("cmowz."))

## 在分隔符首次出現(xiàn)位置拆分字符串,并返回包含分隔符之前部分、分隔符本身和分隔符之后部分的3元組
print("/home/ap/cos/log.log".partition("/"))

## 返回字符串的一個(gè)拷貝,其中所有的子串old通過(guò)new替換。如果指定了可選參數(shù)count,則只有前面的count個(gè)出現(xiàn)被替換。
print("str_str_123".replace("str","haha"))

##如果給出maxsplit,則至多拆分maxsplit次(因此,列表中將最多有maxsplit+1個(gè)元素)。如果沒(méi)有指定maxsplit或?yàn)?1,那么分割的數(shù)量沒(méi)有限制(進(jìn)行所有可能的分割)
print("/home/ap/cos/log.log".rsplit("/",1))
2.6.2. 字符串的格式化操作

多帶帶掌握

2.6.3. XRange Type

xrange類(lèi)型是不可變的序列,通常用于循環(huán)。xrange類(lèi)型的好處是xrange對(duì)象始終占用相同數(shù)量的內(nèi)存,無(wú)論它表示的范圍的大小。但它沒(méi)有始終一致的性能優(yōu)勢(shì)

2.6.4. 列表
操作 含義
s[i] = x item i of s is replaced by x
s[i:j] = t slice of s from i to j is replaced by the contents of the iterable t
del s[i:j] same as s[i:j] = []
s[i:j:k] = t the elements of s[i:j:k] are replaced by those of t (1)
del s[i:j:k] removes the elements of s[i:j:k] from the list
s.append(x) same as s[len(s):len(s)] = [x] (2)
s.extend(x) same as s[len(s):len(s)] = x (3)
s.count(x) return number of i‘s for which s[i] == x
s.index(x[, i[, j]]) return smallest k such that s[k] == x and i <= k < j (4)
s.insert(i, x) same as s[i:i] = [x] (5)
s.pop([i]) same as x = s[i]; del s[i]; return x (6)
s.remove(x) same as del s[s.index(x)] (4)
s.reverse() reverses the items of s in place (7)
s.sort([cmp[, key[, reverse]]]) sort the items of s in place (7)(8)(9)(10)
2.7. 集合類(lèi)型 — set, frozenset

集合對(duì)象是一個(gè)不同可哈希對(duì)象組成的無(wú)序集合。常見(jiàn)的使用包括成員測(cè)試、從序列中刪除重復(fù)項(xiàng)和計(jì)算數(shù)學(xué)運(yùn)算(如交、并、差和對(duì)稱(chēng)差)。(其它容器請(qǐng)參閱內(nèi)建的字典、列表和元組類(lèi)和collections模塊。)

類(lèi)似其它容器,集合支持x in set、 len(set)以及for x in set。作為一個(gè)無(wú)序的集合,集合不記錄元素位置和插入順序。因此,集合不支持索引、 切片、 或其它類(lèi)似于序列的行為。

目前有兩個(gè)內(nèi)置的集合類(lèi)型,set和frozenset。

2.8. 映射類(lèi)型 — dict 2.9. 文件對(duì)象

文件對(duì)象使用C的stdio包實(shí)現(xiàn)并可以用內(nèi)置的open()函數(shù)創(chuàng)建。文件對(duì)象也會(huì)由一些其它內(nèi)置的函數(shù)和方法返回,如os.popen()os.fdopen()以及套接字對(duì)象的makefile()方法。臨時(shí)文件可以通過(guò)tempfile模塊創(chuàng)建,高級(jí)的文件操作如復(fù)制、移動(dòng)和刪除文件和目錄可以通過(guò)shutil模塊完成。

2.9.1 簡(jiǎn)單文件打開(kāi)
f=open(r"C:UserslynnDesktop123 .txt")
try:
    for line in f:
        print(line.decode("utf-8"))
finally:
    f.close()

當(dāng)with代碼塊退出時(shí),下面的代碼將自動(dòng)關(guān)閉f

from __future__ import with_statement # This isn"t required in Python 2.6

with open("hello.txt") as f:
    for line in f:
        print line,
注 Python中不是所有的"類(lèi)文件式"類(lèi)型支持用作with語(yǔ)句的上下文管理器。如果你的代碼是用于處理任何類(lèi)似文件的對(duì)象,你可以使用函數(shù)contextlib.closing()而不是直接使用對(duì)象。

如果每次都這么手動(dòng)轉(zhuǎn)換編碼嫌麻煩(寫(xiě)程序怕麻煩是好事,不怕麻煩就會(huì)寫(xiě)出又長(zhǎng)又難懂又沒(méi)法維護(hù)的代碼),Python還提供了一個(gè)codecs模塊幫我們?cè)谧x文件時(shí)自動(dòng)轉(zhuǎn)換編碼,直接讀出unicode:

import codecs
with codecs.open("/Users/michael/gbk.txt", "r", "gbk") as f:
    f.read() # u"u6d4bu8bd5"
2.10. memoryview 類(lèi)型 2.11. 上下文管理器類(lèi)型 2.12. 其他的內(nèi)建類(lèi)型 2.13. 特殊的屬性 3 函數(shù)式編程

既然變量可以指向函數(shù),函數(shù)的參數(shù)能接收變量,那么一個(gè)函數(shù)就可以接收另一個(gè)函數(shù)作為參數(shù),這種函數(shù)就稱(chēng)之為高階函數(shù)。

3.1 函數(shù)及變量
>>> abs = 10
>>> abs(-10)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: "int" object is not callable
3.2 傳入函數(shù)
def add(x, y, f):
    return f(x) + f(y)
map() reduce() filter()

map()函數(shù)接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是序列,map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的list返回。

>>> def f(x):
...     return x * x
...
>>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce把一個(gè)函數(shù)作用在一個(gè)序列[x1, x2, x3...]上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算,其效果就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

>>> def add(x, y):
...     return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25

>>> def fn(x, y):
...     return x * 10 + y
...
>>> reduce(fn, [1, 3, 5, 7, 9])
13579

>>> def fn(x, y):
...     return x * 10 + y
...
>>> def char2num(s):
...     return {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9}[s]
...
>>> reduce(fn, map(char2num, "13579"))
13579

filter()把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素。

def is_odd(n):
    return n % 2 == 1

filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])
# 結(jié)果: [1, 5, 9, 15]

def not_empty(s):
    return s and s.strip()

filter(not_empty, ["A", "", "B", None, "C", "  "])
# 結(jié)果: ["A", "B", "C"]

sorted:Python內(nèi)置的sorted()函數(shù)就可以對(duì)list進(jìn)行排序,此外,sorted()函數(shù)也是一個(gè)高階函數(shù),它還可以接收一個(gè)比較函數(shù)來(lái)實(shí)現(xiàn)自定義的排序。比如,如果要倒序排序,我們就可以自定義一個(gè)reversed_cmp函數(shù):

def reversed_cmp(x, y):
    if x > y:
        return -1
    if x < y:
        return 1
    return 0

>>> sorted([36, 5, 12, 9, 21], reversed_cmp)
[36, 21, 12, 9, 5]
3.3 返回函數(shù)
def lazy_sum(*args):
    def sum():
        ax = 0
        for n in args:
            ax = ax + n
        return ax
    return sum
---------------------------
>>> f = lazy_sum(1, 3, 5, 7, 9)
>>> f

當(dāng)我們調(diào)用lazy_sum()時(shí),返回的并不是求和結(jié)果,而是求和函數(shù):

注意到返回的函數(shù)在其定義內(nèi)部引用了局部變量args,所以,當(dāng)一個(gè)函數(shù)返回了一個(gè)函數(shù)后,其內(nèi)部的局部變量還被新函數(shù)引用,所以,閉包用起來(lái)簡(jiǎn)單,實(shí)現(xiàn)起來(lái)可不容易。
另一個(gè)需要注意的問(wèn)題是,返回的函數(shù)并沒(méi)有立刻執(zhí)行,而是直到調(diào)用了f()才執(zhí)行
3.4 匿名函數(shù)
map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]

----------------------
def f(x):
    return x * x
    
3.5 裝飾器
def log(func):
    @functools.wraps(func)
    def warpper(*args,**kw):
        print "call %s()" % func.__name__
        return func(*args,**kw)
    return warpper

@log
def now():
    print "2013-12-25"

now()
print(now.__name__)
3.6 偏函數(shù)

functools.partial就是幫助我們創(chuàng)建一個(gè)偏函數(shù)的,不需要我們自己定義int2(),可以直接使用下面的代碼創(chuàng)建一個(gè)新的函數(shù)int2:

>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2("1000000")
64
>>> int2("1010101")
85
4 模塊 4.1 別名

導(dǎo)入模塊時(shí),還可以使用別名,這樣,可以在運(yùn)行時(shí)根據(jù)當(dāng)前環(huán)境選擇最合適的模塊。比如Python標(biāo)準(zhǔn)庫(kù)一般會(huì)提供StringIO和cStringIO兩個(gè)庫(kù),這兩個(gè)庫(kù)的接口和功能是一樣的,但是cStringIO是C寫(xiě)的,速度更快,所以,你會(huì)經(jīng)??吹竭@樣的寫(xiě)法:

try:
    import cStringIO as StringIO
except ImportError: # 導(dǎo)入失敗會(huì)捕獲到ImportError
    import StringIO
4.2 作用域

類(lèi)似__xxx__這樣的變量是特殊變量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊變量,hello模塊定義的文檔注釋也可以用特殊變量__doc__訪問(wèn),我們自己的變量一般不要用這種變量名;

類(lèi)似_xxx和__xxx這樣的函數(shù)或變量就是非公開(kāi)的(private),不應(yīng)該被直接引用,比如_abc,__abc等;

之所以我們說(shuō),private函數(shù)和變量“不應(yīng)該”被直接引用,而不是“不能”被直接引用,是因?yàn)镻ython并沒(méi)有一種方法可以完全限制訪問(wèn)private函數(shù)或變量,但是,從編程習(xí)慣上不應(yīng)該引用private函數(shù)或變量。

def _private_1(name):
    return "Hello, %s" % name

def _private_2(name):
    return "Hi, %s" % name

def greeting(name):
    if len(name) > 3:
        return _private_1(name)
    else:
        return _private_2(name)
4.3 第三方模塊使用(安裝)

pip install module_name (在線安裝)

pip search module_name

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  search                      Search PyPI for packages.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode, ignoring environment variables and user configuration.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output. Option is additive, and can be used up to 3 times (corresponding to WARNING, ERROR, and CRITICAL logging levels).
  --log                 Path to a verbose appending log.
  --proxy              Specify a proxy in the form [user:passwd@]proxy.server:port.
  --retries          Maximum number of retries each connection should attempt (default 5 times).
  --timeout              Set the socket timeout (default 15 seconds).
  --exists-action     Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
  --trusted-host    Mark this host as trusted, even though it does not have valid or any HTTPS.
  --cert                Path to alternate CA bundle.
  --client-cert         Path to SSL client certificate, a single file containing the private key and the certificate in PEM format.
  --cache-dir            Store the cache data in .
  --no-cache-dir              Disable the cache.
  --disable-pip-version-check
                              Don"t periodically check PyPI to determine whether a new version of pip is available for download. Implied with --no-index.

pip download module_name (離線安裝)

https://segmentfault.com/a/11...

1.在可以聯(lián)網(wǎng)的開(kāi)發(fā)機(jī)器上安裝好需要的包

1.下載指定的包到指定文件夾

pip install --download d:python27packages -r requirements.txt

2 安裝指定的離線包

pip install --no-index --find-index=d:python27packages -r requirements.txt

pip install --no-index --find-links=/home/ap/hupan Pillow

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41366.html

相關(guān)文章

  • Python標(biāo)準(zhǔn)庫(kù)---0、簡(jiǎn)介

    摘要:下一篇文章標(biāo)準(zhǔn)庫(kù)內(nèi)置函數(shù)標(biāo)準(zhǔn)庫(kù)語(yǔ)言參考描述了語(yǔ)言的具體語(yǔ)法和語(yǔ)義,這份庫(kù)參考則介紹了與一同發(fā)行的標(biāo)準(zhǔn)庫(kù)。這個(gè)庫(kù)也包含了內(nèi)置函數(shù)和異常不需要語(yǔ)句就可以在所有代碼中使用的對(duì)象。下一篇文章標(biāo)準(zhǔn)庫(kù)內(nèi)置函數(shù) 下一篇文章:Python標(biāo)準(zhǔn)庫(kù)---1、內(nèi)置函數(shù) Python 標(biāo)準(zhǔn)庫(kù) Python 語(yǔ)言參考 描述了 Python 語(yǔ)言的具體語(yǔ)法和語(yǔ)義,這份庫(kù)參考則介紹了與 Python 一同發(fā)行的標(biāo)...

    mo0n1andin 評(píng)論0 收藏0
  • 聊聊 Python 的內(nèi)置電池

    摘要:二這些內(nèi)容都很有意思,本文唯獨(dú)想聊聊它內(nèi)置電池。這樣做的預(yù)期效果是內(nèi)置電池會(huì)變得輕量小型化高質(zhì)量,同時(shí)三方庫(kù)的生態(tài)系統(tǒng)也能得到進(jìn)化。目前,該仍處于草案狀態(tài),但已基本成為社區(qū)共識(shí)。 showImg(https://segmentfault.com/img/remote/1460000019489233?w=1880&h=1253); 本文原創(chuàng)并首發(fā)于公眾號(hào)【Python貓】,未經(jīng)授權(quán),請(qǐng)...

    FreeZinG 評(píng)論0 收藏0
  • 聊聊 Python 的內(nèi)置電池

    摘要:二這些內(nèi)容都很有意思,本文唯獨(dú)想聊聊它內(nèi)置電池。這樣做的預(yù)期效果是內(nèi)置電池會(huì)變得輕量小型化高質(zhì)量,同時(shí)三方庫(kù)的生態(tài)系統(tǒng)也能得到進(jìn)化。目前,該仍處于草案狀態(tài),但已基本成為社區(qū)共識(shí)。 showImg(https://segmentfault.com/img/remote/1460000019489233?w=1880&h=1253); 本文原創(chuàng)并首發(fā)于公眾號(hào)【Python貓】,未經(jīng)授權(quán),請(qǐng)...

    wapeyang 評(píng)論0 收藏0
  • Python標(biāo)準(zhǔn)庫(kù)---8、內(nèi)置常量

    摘要:上一篇文章標(biāo)準(zhǔn)庫(kù)內(nèi)置函數(shù)下一篇文章標(biāo)準(zhǔn)庫(kù)內(nèi)置類(lèi)型邏輯值檢測(cè)布爾運(yùn)算比較內(nèi)置常量有少數(shù)的常量存在于內(nèi)置命名空間中。給賦值是非法的并會(huì)引發(fā)。如果所有嘗試都返回,則解釋器將引發(fā)適當(dāng)?shù)漠惓?。如果沒(méi)有以選項(xiàng)啟動(dòng),則此常量為真值。 上一篇文章:Python標(biāo)準(zhǔn)庫(kù)---7、內(nèi)置函數(shù)(V-W-X-Y-Z)下一篇文章:Python標(biāo)準(zhǔn)庫(kù)---9、內(nèi)置類(lèi)型:邏輯值檢測(cè)、布爾運(yùn)算、比較 內(nèi)置常量 有少數(shù)的...

    gplane 評(píng)論0 收藏0
  • [零基礎(chǔ)學(xué)python]Import 模塊

    摘要:認(rèn)識(shí)模塊對(duì)于模塊,在前面的一些舉例中,已經(jīng)涉及到了,比如曾經(jīng)有過(guò)獲取隨機(jī)數(shù)模塊。這張圖列出了很少一部分存在這個(gè)目錄中的模塊文件。的標(biāo)準(zhǔn)庫(kù)是的一個(gè)組成部分,也是為的利器,可以讓編程事半功倍。這就是基本的模塊方法。 認(rèn)識(shí)模塊 對(duì)于模塊,在前面的一些舉例中,已經(jīng)涉及到了,比如曾經(jīng)有過(guò):import random (獲取隨機(jī)數(shù)模塊)。為了能夠?qū)δK有一個(gè)清晰的了解,首先要看看什么模塊,這里選...

    yankeys 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<