python3基礎(chǔ)復(fù)習(xí)筆記一

1. python的優(yōu)勢(shì)
  • 首選是網(wǎng)絡(luò)應(yīng)用烂琴,包括網(wǎng)站弧械、后臺(tái)服務(wù)等等蓉媳;
  • 其次是許多日常需要的小工具歹苦,包括系統(tǒng)管理員需要的腳本任務(wù)等等;
  • 另外就是把其他語言開發(fā)的程序再包裝起來督怜,方便使用殴瘦。
2. 缺點(diǎn)
  • 運(yùn)行速度相對(duì)慢
  • 程序是明文,不能加密
3. 多行字符串'''...'''還可以在前面加上r使用
4. 邏輯運(yùn)算 and号杠、or蚪腋、not和空值None
python的整數(shù)和浮點(diǎn)數(shù)都沒有大小的限制
5. 字符編碼(注意:python2中字符串默認(rèn)不是unicode,與設(shè)置的編碼一致)
  • 用記事本編輯的時(shí)候姨蟋,從文件讀取的UTF-8字符被轉(zhuǎn)換為Unicode字符到內(nèi)存里屉凯,編輯完成后,保存的時(shí)候再把Unicode轉(zhuǎn)換為UTF-8保存到文件
  • 瀏覽網(wǎng)頁的時(shí)候眼溶,服務(wù)器會(huì)把動(dòng)態(tài)生成的Unicode內(nèi)容轉(zhuǎn)換為UTF-8再傳輸?shù)綖g覽器悠砚,所以你看到很多網(wǎng)頁的源碼上會(huì)有類似<meta charset="UTF-8" />的信息,表示該網(wǎng)頁正是用的UTF-8編碼堂飞。
image
image
  • 如果知道字符的整數(shù)編碼灌旧,還可以用十六進(jìn)制這么寫str:這樣寫和寫字符串一致绑咱,因?yàn)閷懥俗址琾ython3默認(rèn)會(huì)用utf-8解碼枢泰,變量用unicode存儲(chǔ)描融。
>>> '\u4e2d\u6587'
'中文'

6. Python提供了ord()函數(shù)獲取字符的整數(shù)表示,chr()函數(shù)把編碼轉(zhuǎn)換為對(duì)應(yīng)的字符
7. 注意區(qū)分'ABC'和b'ABC'衡蚂,前者是str窿克,后者雖然內(nèi)容顯示得和前者一樣,但bytes的每個(gè)字符都只占用一個(gè)字節(jié)
  1. 編碼(encode)的過程就是毛甲,將unicode轉(zhuǎn)化為轉(zhuǎn)換為某種編碼形式年叮,每個(gè)字符在unicode中占用兩個(gè)字節(jié),轉(zhuǎn)換為具體編碼中的bytes形式玻募。

注意:utf-8和unicode中的編碼可以做到一一對(duì)應(yīng)谋右,但是別的編碼方式都只能對(duì)應(yīng)一部分字符集。因此從unicode轉(zhuǎn)換成某種具體的編碼的時(shí)候可能出現(xiàn)無法轉(zhuǎn)碼的情況补箍。

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
9. 如果我們從網(wǎng)絡(luò)或磁盤上讀取了字節(jié)流,那么讀到的數(shù)據(jù)就是bytes啸蜜。要把bytes變?yōu)閟tr坑雅,就需要用decode()方法
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'

注:如果bytes中只有一小部分無效的字節(jié),可以傳入errors='ignore'忽略錯(cuò)誤的字節(jié)

>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'
10. len 返回字符串衬横、列表裹粤、字典、元組等長(zhǎng)度

注:區(qū)別于len方法蜂林,在Python中遥诉,如果你調(diào)用len()函數(shù)試圖獲取一個(gè)對(duì)象的長(zhǎng)度,實(shí)際上噪叙,在len()函數(shù)內(nèi)部矮锈,它自動(dòng)去調(diào)用該對(duì)象的len()方法。

>>> len('abcd')
4
>>> len([1,2,3])
3
>>> len((1,2,3))
3
>>> len({'a':'hello','b':'heihei'})
2
>>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6
  • python2環(huán)境--
# 將CRT設(shè)置為utf-8的編碼格式
1. 默認(rèn)的內(nèi)置編碼為ascii
miao@miao-VirtualBox:~$ python
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> reload(sys)
<module 'sys' (built-in)>
>>> print sys.getdefaultencoding()
ascii

2. 
>>> zhongwen = '中文'
>>> type(zhongwen)
<type 'str'>
>>> len(zhongwen)
6
>>> sys.setdefaultencoding('utf-8')
>>> len(zhongwen)
6

>>> zhongwen_uni = u'中文'
>>> type(zhongwen_uni)
<type 'unicode'>
>>> len(zhongwen_uni)
2
# 可見unicode不是按照字節(jié)來統(tǒng)計(jì)的睁蕾,而是暗中某個(gè)字符集的字符的個(gè)數(shù)統(tǒng)計(jì)
>>> repr(zhongwen_uni)
"u'\\u4e2d\\u6587'"

# 轉(zhuǎn)換為utf-8
>>> zhongwen_utf8 = zhongwen_uni.encode('utf-8')
>>> print zhongwen_utf8
中文
>>> len(zhongwen_utf8)
6
>>> repr(zhongwen_utf8)
"'\\xe4\\xb8\\xad\\xe6\\x96\\x87'"
>>> type(zhongwen_utf8)
<type 'str'>
# 原始輸入(終端輸入格式為utf-8)苞笨,與unicode轉(zhuǎn)換為utf-8的編碼格式一致
>>> print zhongwen_utf8 == zhongwen
True

>>> zhongwen_gbk = zhongwen_uni.encode('gbk')
>>> print zhongwen_gbk  
# 輸出沒有顯示,應(yīng)該時(shí)CRT默認(rèn)編碼為utf-8而輸出的變量是gbk無法顯示子眶。

>>> repr(zhongwen_gbk)
"'\\xd6\\xd0\\xce\\xc4'"

>>> yingwen = 'abc'
>>> repr(yingwen)
"'abc'"
>>> len(yingwen_uni)
3
>>> yingwen_uni = u'abc'
>>> repr(yingwen_uni)
"u'abc'"
>>> yingwen_utf8 = yingwen_uni.encode('utf-8')
>>> print yingwen_utf8
abc
>>> repr(yingwen_utf8)
"'abc'"
>>> yingwen_gbk = yingwen_uni.encode('gbk')
>>> repr(yingwen_gbk)
"'abc'"
>>> len(yingwen_gbk)
3
  • python3 環(huán)境
miao@miao-VirtualBox:~$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> len('中文')
2
>>> len(u'中文')
2

總結(jié):對(duì)于unicode瀑凝,len函數(shù)按照真實(shí)的字符數(shù)量來統(tǒng)計(jì),如果對(duì)于str臭杰,len函數(shù)按照字節(jié)數(shù)量統(tǒng)計(jì)

11. 格式化輸出--C語言的風(fēng)格
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

#常用占位符
占位符 替換內(nèi)容
%d  整數(shù)
%f  浮點(diǎn)數(shù)
%s  字符串
%x  十六進(jìn)制整數(shù)

#指定位數(shù)粤咪,指定是否用0補(bǔ)充,%02d代表兩位渴杆,不足用0補(bǔ)充
>>> print('%2d-%02d' % (3, 1))
 3-01
>>> print('%02d-%02d' % (3, 1))
03-01
>>> print('%03d-%02d' % (3, 1))
003-01
>>> print('%.2f' % 3.1415926)
3.14
# 用%%來表示一個(gè)%
>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'

# format()方法寥枝,它會(huì)用傳入的參數(shù)依次替換字符串內(nèi)的占位符{0}宪塔、{1}
>>> a = 'Hello, {1}, 成績(jī)提升了 {0:.1f}%'.format(17.125,'小明')
>>> print a
Hello, 小明, 成績(jī)提升了 17.1%
#python2中默認(rèn)編碼為ascii,python3為unicode脉顿,所以python3可以直接顯示
miao@miao-VirtualBox:~$ python
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello, {0}, 成績(jī)提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, \xe5\xb0\x8f\xe6\x98\x8e, \xe6\x88\x90\xe7\xbb\xa9\xe6\x8f\x90\xe5\x8d\x87\xe4\xba\x86 17.1%'

miao@miao-VirtualBox:~$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello, {0}, 成績(jī)提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成績(jī)提升了 17.1%'

#例:小明的成績(jī)從去年的72分提升到了今年的85分蝌麸,請(qǐng)計(jì)算小明成績(jī)提升的百分點(diǎn),并用字符串格式化顯示出'xx.x%'艾疟,只保留小數(shù)點(diǎn)后1位:
>>> print('{0:.1f}%'.format(100*(s2-s1)/float(s1)))
18.1%
12 .列表和元祖
classmates = ['Michael', 'Bob', 'Tracy']

>>> len(classmates)
3

>>> classmates[2]
'Tracy'

>>> classmates[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

>>> classmates[-1]
'Tracy'

>>> classmates.insert(1, 'Jack')

>>> classmates.pop() #刪除list末尾的元素

>>> classmates.pop(1) #刪除指定位置的元素

# 列表的排序
>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']

# tuple的陷阱:只有1個(gè)元素的tuple定義時(shí)必須加一個(gè)逗號(hào),来吩,來消除歧義
>>> t = (1)
>>> t
1

>>> t = (1,)
>>> t
(1,)

# 指向不變
# 表面上看,tuple的元素確實(shí)變了蔽莱,但其實(shí)變的不是tuple的元素弟疆,而是list的元素。tuple一開始指向的list并沒有改成別的list盗冷,所以怠苔,tuple所謂的“不變”是說,tuple的每個(gè)元素仪糖,指向永遠(yuǎn)不變柑司。即指向'a',就不能改成指向'b'锅劝,指向一個(gè)list攒驰,就不能改成指向其他對(duì)象,但指向的這個(gè)list本身是可變的故爵!
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

13 循環(huán)
sum = 0
for x in range(101):
    sum = sum + x
print(sum)

# 終端中一行行地敲也要注意縮進(jìn)
>>> L = ['Bart', 'Lisa', 'Adam']
>>> for word in L:
...     print 'hello %s'%word
... 
hello Bart
hello Lisa
hello Adam
14. 字典dict和set
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
>>> d.pop('Bob') #刪除一個(gè)key
75
dict內(nèi)部存放的順序和key放入的順序是沒有關(guān)系的玻粪。

和list比較,dict有以下幾個(gè)特點(diǎn):

查找和插入的速度極快诬垂,不會(huì)隨著key的增加而變慢劲室;
需要占用大量的內(nèi)存,內(nèi)存浪費(fèi)多结窘。
而list相反:

查找和插入的時(shí)間隨著元素的增加而增加很洋;
占用空間小,浪費(fèi)內(nèi)存很少隧枫。
所以蹲缠,dict是用空間來換取時(shí)間的一種方法。

dict可以用在需要高速查找的很多地方悠垛,在Python代碼中幾乎無處不在线定,正確使用dict非常重要,需要牢記的第一條就是dict的key必須是不可變對(duì)象确买。
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.remove(4)
>>> s
{1, 2, 3}

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

15. 可變對(duì)象與不可變對(duì)象
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'

>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']
16. 函數(shù)名:就是指向一個(gè)函數(shù)對(duì)象的引用
>>> a = abs # 變量a指向abs函數(shù)
>>> a(-1) # 所以也可以通過a調(diào)用abs函數(shù)
1
17. 內(nèi)置函數(shù)
1. abs:絕對(duì)值

2. divmod:把除數(shù)和余數(shù)運(yùn)算結(jié)果結(jié)合起來斤讥,返回一個(gè)包含商和余數(shù)的元組(a // b, a % b)

3. input:
    Python3.x 中 input() 函數(shù)接受一個(gè)標(biāo)準(zhǔn)輸入數(shù)據(jù),返回為 string 類型。
    Python2.x 中 input() 相等于eval(raw_input(prompt))芭商,用來獲取控制臺(tái)的輸入派草。
    raw_input() 將所有輸入作為字符串看待,返回字符串類型铛楣。而 input() 在對(duì)待純數(shù)字輸入時(shí)具有自己的特性近迁,它返回所輸入的數(shù)字的類型( int, float )。
    
    注意:input() 和 raw_input() 這兩個(gè)函數(shù)均能接收 字符串 簸州,但 raw_input() 直接讀取控制臺(tái)的輸入(任何類型的輸入它都可以接收)鉴竭。而對(duì)于 input() ,它希望能夠讀取一個(gè)合法的 python 表達(dá)式岸浑,即你輸入字符串的時(shí)候必須使用引號(hào)將它括起來搏存,否則它會(huì)引發(fā)一個(gè) SyntaxError 。
    除非對(duì) input() 有特別需要矢洲,否則一般情況下我們都是推薦使用 raw_input() 來與用戶交互璧眠。
    注意:python3 里 input() 默認(rèn)接收到的是 str 類型。
    
4. open() 函數(shù)用于打開一個(gè)文件

5. staticmethod():
例:以下實(shí)例聲明了靜態(tài)方法 f读虏,類可以不用實(shí)例化就可以調(diào)用該方法 C.f()责静,當(dāng)然也可以實(shí)例化后調(diào)用 C().f()。
    class C(object):
    @staticmethod
    def f(arg1, arg2, ...):
        ...
        
6. all():用于判斷給定的可迭代參數(shù) iterable 中的所有元素是否不為 0盖桥、''灾螃、False 或者 iterable 為空
例:
    >>>all(['a', 'b', 'c', 'd'])  # 列表list,元素都不為空或0
    True
    >>> all(['a', 'b', '', 'd'])   # 列表list葱轩,存在一個(gè)為空的元素
    False
    >>> all([0, 1,2, 3])          # 列表list藐握,存在一個(gè)為0的元素
    False
       
    >>> all(('a', 'b', 'c', 'd'))  # 元組tuple靴拱,元素都不為空或0
    True
    >>> all(('a', 'b', '', 'd'))   # 元組tuple,存在一個(gè)為空的元素
    False
    >>> all((0, 1猾普,2, 3))          # 元組tuple袜炕,存在一個(gè)為0的元素
    False
       
    >>> all([])             # 空列表
    True
    >>> all(())             # 空元組
    True
    
7.  enumerate() 函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串)組合為一個(gè)索引序列初家,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo)

8.  int:函數(shù)用于將一個(gè)字符串或數(shù)字轉(zhuǎn)換為整型偎窘。
9.  ord:它以一個(gè)字符(長(zhǎng)度為1的字符串)作為參數(shù),返回對(duì)應(yīng)的 ASCII 數(shù)值
10. str() 函數(shù)將對(duì)象轉(zhuǎn)化為適于人閱讀的形式
11. any() 與all()對(duì)應(yīng)溜在,只要有一個(gè)為True就為True
12. eval() 函數(shù)用來執(zhí)行一個(gè)字符串表達(dá)式陌知,并返回表達(dá)式的值
13. isinstance(object, classinfo) 判斷是否一個(gè)類的對(duì)象或者子類的對(duì)象
14. math.pow( x, y ),返回 xy(x的y次方) 的值
15. 求和:sum([0,1,2]) 掖肋, sum((2, 3, 4), 1) 
16. basestring() 方法是 str 和 unicode 的超類(父類)仆葡,也是抽象類,isinstance(obj, basestring) 等價(jià)于 isinstance(obj, (str, unicode))
17. execfile() 函數(shù)可以用來執(zhí)行一個(gè)文件
18. issubclass() 方法用于判斷參數(shù) class 是否是類型參數(shù) classinfo 的子類
19. print(*objects, sep=' ', end='\n', file=sys.stdout)
    例:
    print("www","runoob","com",sep=".")  # 設(shè)置間隔符
    www.runoob.com
20. super() 函數(shù)是用于調(diào)用父類(超類)的一個(gè)方法
21. bin() 返回一個(gè)整數(shù) int 或者長(zhǎng)整數(shù) long int 的二進(jìn)制表示
22. file() 用于創(chuàng)建一個(gè) file 對(duì)象志笼,它有一個(gè)別名叫 open()
23. iter() 用來生成迭代器
    例子:
    class counter:

    def __init__(self, _start, _end):
        self.start = _start
        self.end = _end

    def get_next(self):
        s = self.start
        if(self.start < self.end):
            self.start += 1
        else:
            raise StopIteration

        return s

    c = counter(1, 5)
    '''
    iter(object[, sentinel])
    If the second argument, sentinel, is given, then object must be a callable object. The iterator created in this case will call object with no arguments for each call to its __next__() method; if the value returned is equal to sentinel,StopIteration will be raised, otherwise the value will be returned.
    '''
    iterator = iter(c.get_next, 4) #如果__next__的返回值等于sentinel沿盅,則拋出StopIteration異常把篓,否則返回下一個(gè)值
    print(type(iterator))
    for i in iterator:
        print(i)
    
    
    #輸出
    <type 'callable-iterator'>
    1
    2
    3

24. property():
    例1:設(shè)置類某個(gè)屬性的get、set腰涧、del韧掩、init方法
    class C(object):
    def __init__(self):
        self._x = None
 
    def getx(self):
        return self._x
 
    def setx(self, value):
        self._x = value
 
    def delx(self):
        del self._x
 
    x = property(getx, setx, delx, "I'm the 'x' property.")
    
    #注意:如果 c 是 C 的實(shí)例化, c.x 將觸發(fā) getter,c.x = value 將觸發(fā) setter , del c.x 觸發(fā) deleter
    
    例2:做裝飾器窖铡,創(chuàng)建只讀屬性
    class Parrot(object):
    def __init__(self):
        self._voltage = 100000
 
    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage
        
    例3:getter,setter 和 deleter裝飾器
    class C(object):
    def __init__(self):
        self._x = None
 
    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x
 
    @x.setter
    def x(self, value):
        self._x = value
 
    @x.deleter
    def x(self):
        del self._x

25. tuple() 函數(shù)將列表轉(zhuǎn)換為元組
26. bool()將給定參數(shù)轉(zhuǎn)換為布爾類型
27. filter() 用于過濾序列疗锐,過濾掉不符合條件的元素
    例:
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    def is_odd(n):
        return n % 2 == 1
     
    newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    
    print(newlist)
    #輸出:
    [1, 3, 5, 7, 9]
    
28. len() 返回對(duì)象(字符、列表万伤、元組等)長(zhǎng)度或項(xiàng)目個(gè)數(shù)
29. range():產(chǎn)生一個(gè)序列
    例:
    >>>range(10)        # 從 0 開始到 10
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 11)     # 從 1 開始到 11
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> range(0, 30, 5)  # 步長(zhǎng)為 5
    [0, 5, 10, 15, 20, 25]
    
30. type() 一個(gè)參數(shù)返回對(duì)象類型
    高級(jí)用法:三個(gè)參數(shù)窒悔,返回新的類型對(duì)象
    >>>X = type('X', (object,), dict(a=1))  # 產(chǎn)生一個(gè)新的類型 X,和用class定義一個(gè)類的效果一樣
    >>> X
    
31. bytearray():返回值為一個(gè)新的字節(jié)數(shù)組
    例:
    # encoding:utf-8
    a = '中文'
    b = u'中文'
    print type(a)
    print bytearray(a.decode('utf-8'),'utf-8')
    print type(b)
    print bytearray(b,'utf-8')
    
32. float()用于將整數(shù)和字符串轉(zhuǎn)換成浮點(diǎn)數(shù)
33. list() 用于將元組轉(zhuǎn)換為列表
34. raw_input()  將所有輸入作為字符串看待敌买,返回字符串類型
35. unichr() 返回 unicode 的字符
    例:
    >>>unichr(97)
    u'a'
    >>> unichr(98)
    u'b'
    >>> unichr(99)
    u'c'
    
36. callable()檢查一個(gè)對(duì)象是否是可調(diào)用的
37. format()格式化字符串的函數(shù) str.format()
    >>> "{1} {0} {1}".format("hello", "world")  # 設(shè)置指定位置
    'world hello world'
    >>> print("網(wǎng)站名:{name}, 地址 {url}".format(name="菜鳥教程", url="www.runoob.com"))
    
    # 通過字典設(shè)置參數(shù)
    site = {"name": "菜鳥教程", "url": "www.runoob.com"}
    print("網(wǎng)站名:{name}, 地址 {url}".format(**site))
    
    # 通過列表索引設(shè)置參數(shù)
    my_list = ['菜鳥教程', 'www.runoob.com']
    print("網(wǎng)站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必須的
    
    # 通過對(duì)象設(shè)置屬性
    class AssignValue(object):
    def __init__(self, value):
        self.value = value
    my_value = AssignValue(6)
    print('value 為: {0.value}'.format(my_value))  # "0" 是可選的
    
38. locals()會(huì)以字典類型返回當(dāng)前位置的全部局部變量
    例:
    >>>def runoob(arg):    # 兩個(gè)局部變量:arg简珠、z
    ...     z = 1
    ...     print (locals())
    ... 
    >>> runoob(4)
    {'z': 1, 'arg': 4}      # 返回一個(gè)名字/值對(duì)的字典

39. reduce() 規(guī)約操作
    例:
    >>>def add(x, y) :            # 兩數(shù)相加
    ...     return x + y
    ... 
    >>> reduce(add, [1,2,3,4,5])   # 計(jì)算列表和:1+2+3+4+5
    15
    >>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函數(shù)
    15

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

41. chr()

42. frozenset() 返回一個(gè)凍結(jié)的集合虹钮,凍結(jié)后集合不能再添加或刪除任何元素
    例:
    >>>a = frozenset(range(10))     # 生成一個(gè)新的不可變集合
    >>> a
    frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> b = frozenset('runoob') 
    >>> b
    frozenset(['b', 'r', 'u', 'o', 'n'])   # 創(chuàng)建不可變集合

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

44. reload() 重新載入之前載入的模塊
    場(chǎng)景:
    如果此時(shí)在另一個(gè)窗口中改變并保存了模塊的源代碼文件
    
45. vars() 返回對(duì)象object的屬性和屬性值的字典對(duì)象

46. classmethod():類的方法聋庵,用類名調(diào)用,不用實(shí)例化調(diào)用芙粱,參數(shù)cls而不是self
    例:
    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í)例化

47. getattr() 返回一個(gè)對(duì)象屬性值
    >>>class A(object):
    ...     bar = 1
    ... 
    >>> a = A()
    >>> getattr(a, 'bar')        # 獲取屬性 bar 值
    1
    
48. map()根據(jù)提供的函數(shù)對(duì)指定序列做映射
    例:
    >>>def square(x) :            # 計(jì)算平方數(shù)
    ...     return x ** 2
    ... 
    >>> map(square, [1,2,3,4,5])   # 計(jì)算列表各個(gè)元素的平方
    [1, 4, 9, 16, 25]
    >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函數(shù)
    [1, 4, 9, 16, 25]
     
    # 提供了兩個(gè)列表祭玉,對(duì)相同位置的列表數(shù)據(jù)進(jìn)行相加
    >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
    [3, 7, 11, 15, 19]

49. repr() 將對(duì)象轉(zhuǎn)化為供解釋器讀取的形式(一個(gè)字符串會(huì)返回具體的編碼格式)
    >>>s = 'RUNOOB'
    >>> repr(s)
    "'RUNOOB'"
    >>> dict = {'runoob': 'runoob.com', 'google': 'google.com'};
    >>> repr(dict)
    "{'google': 'google.com', 'runoob': 'runoob.com'}"
    
50. xrange() 與 range 完全相同,所不同的是生成的不是一個(gè)數(shù)組春畔,而是一個(gè)生成器

51. cmp():比較大小
    例:
    cmp(80, 100) :  -1
    cmp(180, 100) :  1
    cmp(-80, 100) :  -1
    cmp(80, -100) :  1

52. globals() 返回全局變量的字典
    例:
    >>>a='runoob'
    >>> print(globals()) # globals 函數(shù)返回一個(gè)全局變量的字典脱货,包括所有導(dǎo)入的變量。
    {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'a': 'runoob', '__package__': None}

53. max() 求最大值
    例:
    max(80, 100, 1000) :  1000
    max(-20, 100, 400) :  400
    max([1, 3, 7, 10]) : 10

54. reverse() 用于反向列表中元素

55. zip()  打包元祖列表律姨,或者解壓
    例:
    >>>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 相反振峻,可理解為解壓,返回二維矩陣式
    [(1, 2, 3), (4, 5, 6)]

56. compile() 將一個(gè)字符串編譯為字節(jié)代碼
    例:
    >>>str = "for i in range(0,10): print(i)" 
    >>> c = compile(str,'','exec')   # 編譯為字節(jié)代碼對(duì)象 
    >>> c
    <code object <module> at 0x10141e0b0, file "", line 1>
    >>> exec(c)
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> str = "3 * 4 + 5"
    >>> a = compile(str,'','eval')
    >>> eval(a)
    17
    
57. hasattr() 用于判斷對(duì)象是否包含對(duì)應(yīng)的屬性

58. memoryview() 返回內(nèi)存查看對(duì)象择份,是指對(duì)支持緩沖區(qū)協(xié)議的數(shù)據(jù)進(jìn)行包裝扣孟,在不需要復(fù)制對(duì)象基礎(chǔ)上允許Python代碼訪問(很少用到吧)

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

60. __import__() :動(dòng)態(tài)導(dǎo)入模塊--具體如何啥場(chǎng)景需要再研究

61. complex() :構(gòu)建一個(gè)復(fù)數(shù)
    >>>complex(1, 2)
    (1 + 2j)
     
    >>> complex(1)    # 數(shù)字
    (1 + 0j)
     
    >>> complex("1")  # 當(dāng)做字符串處理
    (1 + 0j)
     
    # 注意:這個(gè)地方在"+"號(hào)兩邊不能有空格,也就是不能寫成"1 + 2j"荣赶,應(yīng)該是"1+2j"凤价,否則會(huì)報(bào)錯(cuò)
    >>> complex("1+2j")
    (1 + 2j)

62. hash()
    例:
    >>>hash('test')            # 字符串
    2314058222102390712
    >>> hash(1)                 # 數(shù)字
    1
    >>> hash(str([1,2,3]))      # 集合
    1335416675971793195
    >>> hash(str(sorted({'1':1}))) # 字典
    7666464346782421378
    >>>
    

63. min() 最小值

64. set() 集合操作
    例:
    >>>x = set('runoob')
    >>> y = set('google')
    >>> x, y
    (set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l']))   # 重復(fù)的被刪除
    >>> x & y         # 交集
    set(['o'])
    >>> x | y         # 并集
    set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
    >>> x - y         # 差集
    set(['r', 'b', 'u', 'n'])

65. delattr()
    例:
    class Coordinate:
    x = 10
    y = -5
    z = 0
 
    point1 = Coordinate() 
     
    print('x = ',point1.x)
    print('y = ',point1.y)
    print('z = ',point1.z)
     
    delattr(Coordinate, 'z')
     
    print('--刪除 z 屬性后--')
    print('x = ',point1.x)
    print('y = ',point1.y)
     
    # 觸發(fā)錯(cuò)誤
    print('z = ',point1.z)

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

67. next() 返回迭代器的下一個(gè)項(xiàng)目
    例:
    # 首先獲得Iterator對(duì)象:
    it = iter([1, 2, 3, 4, 5])
    # 循環(huán):
    while True:
        try:
            # 獲得下一個(gè)值:
            x = next(it)
            print(x)
        except StopIteration:
            # 遇到StopIteration就退出循環(huán)
            break

68. setattr() 設(shè)置一個(gè)屬性,也可以用來設(shè)置新的屬性
    例:
    >>>class A(object):
    ...     bar = 1
    ... 
    >>> a = A()
    >>> getattr(a, 'bar')          # 獲取屬性 bar 值
    1
    >>> setattr(a, 'bar', 5)       # 設(shè)置屬性 bar 值
    >>> a.bar

69. dict() 構(gòu)造一個(gè)字典
    例:
    >>>dict()                        # 創(chuàng)建空字典
    {}
    >>> dict(a='a', b='b', t='t')     # 傳入關(guān)鍵字
    {'a': 'a', 'b': 'b', 't': 't'}
    >>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函數(shù)方式來構(gòu)造字典
    {'three': 3, 'two': 2, 'one': 1} 
    >>> dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代對(duì)象方式來構(gòu)造字典
    {'three': 3, 'two': 2, 'one': 1}

70. hex() 用于將10進(jìn)制整數(shù)轉(zhuǎn)換成16進(jìn)制

71. object()

72. slice() 構(gòu)建切片的方法
    >>>myslice = slice(5)    # 設(shè)置截取5個(gè)元素的切片
    >>> myslice
    slice(None, 5, None)
    >>> arr = range(10)
    >>> arr
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> arr[myslice]         # 截取 5 個(gè)元素
    [0, 1, 2, 3, 4]

73. dir() 返回模塊的屬性列表
    例:
    >>>dir()   #  獲得當(dāng)前模塊的屬性列表
    ['__builtins__', '__doc__', '__name__', '__package__', 'arr', 'myslice']
    >>> dir([ ])    # 查看列表的方法
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

74. id() 用于獲取對(duì)象的內(nèi)存地址
    例:
    >>>a = 'runoob'
    >>> id(a)
    4531887632
    >>> b = 1
    >>> id(b)
    140588731085608

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

76. sorted() 對(duì)所有可迭代的對(duì)象進(jìn)行排序操作
    注意:sort 是應(yīng)用在 list 上的方法拔创,sorted 可以對(duì)所有可迭代的對(duì)象進(jìn)行排序操作
    >>>a = [5,7,6,3,4,1,2]
    >>> b = sorted(a)       # 保留原列表
    >>> a 
    [5, 7, 6, 3, 4, 1, 2]
    >>> b
    [1, 2, 3, 4, 5, 6, 7]
     
    >>> L=[('b',2),('a',1),('c',3),('d',4)]
    >>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))   # 利用cmp函數(shù)
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
    >>> sorted(L, key=lambda x:x[1])               # 利用key
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
     
     
    >>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
    >>> sorted(students, key=lambda s: s[2])            # 按年齡排序
    [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
     
    >>> sorted(students, key=lambda s: s[2], reverse=True)       # 按降序
    [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

77. exec 內(nèi)置表達(dá)式
    例:
    >>>exec 'print "Hello World"'
    Hello World
    # 單行語句字符串
    >>> exec "print 'runoob.com'"
    runoob.com
     
    #  多行語句字符串
    >>> exec """for i in range(5):
    ...   print "iter time: %d" % i
    ... """
    iter time: 0
    iter time: 1
    iter time: 2
    iter time: 3
    iter time: 4

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末利诺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子剩燥,更是在濱河造成了極大的恐慌立轧,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異氛改,居然都是意外死亡帐萎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門胜卤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疆导,“玉大人,你說我怎么就攤上這事葛躏〕憾危” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵舰攒,是天一觀的道長(zhǎng)败富。 經(jīng)常有香客問我,道長(zhǎng)摩窃,這世上最難降的妖魔是什么兽叮? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮猾愿,結(jié)果婚禮上鹦聪,老公的妹妹穿的比我還像新娘。我一直安慰自己蒂秘,他們只是感情好泽本,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著姻僧,像睡著了一般规丽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撇贺,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天赌莺,我揣著相機(jī)與錄音,去河邊找鬼显熏。 笑死雄嚣,一個(gè)胖子當(dāng)著我的面吹牛晒屎,可吹牛的內(nèi)容都是我干的喘蟆。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼鼓鲁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蕴轨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起骇吭,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤橙弱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棘脐,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斜筐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛀缝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顷链。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖屈梁,靈堂內(nèi)的尸體忽然破棺而出嗤练,到底是詐尸還是另有隱情,我是刑警寧澤在讶,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布煞抬,位于F島的核電站,受9級(jí)特大地震影響构哺,放射性物質(zhì)發(fā)生泄漏革答。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一遮婶、第九天 我趴在偏房一處隱蔽的房頂上張望蝗碎。 院中可真熱鬧,春花似錦旗扑、人聲如沸蹦骑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眠菇。三九已至,卻和暖如春袱衷,著一層夾襖步出監(jiān)牢的瞬間捎废,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國打工致燥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留登疗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓嫌蚤,卻偏偏與公主長(zhǎng)得像辐益,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脱吱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容