#python復(fù)習(xí)筆記
##基礎(chǔ)
1.下劃線(_)在解釋器中有特別的含義,表示最后一個(gè)表達(dá)式的值。創(chuàng)新互聯(lián)是一家專業(yè)提供東海企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為東海眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
Microsoft Windows [版本 6.1.7601]
版權(quán)所有 (c) 2009 Microsoft Corporation。保留所有權(quán)利。C:\Users\Administrator>python
Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on
n32
Type "help", "copyright", "credits" or "license" for more information.print "hello world"
hello world
Traceback (most recent call last):
File "", line 1, in ' is not defined
NameError: name '
mystring = "hello world"
print mystring
hello world
mystring
'hello world'
_
'hello world'2.print語句也支持將輸出重定向到文件。符號(hào)>>用來定向輸出
import sys
print >> sys.stderr, 'Fatal error: invalid input!'
Fatal error: invalid input!
print >> sys.stderr,'Fatal error: invalid input!'
Fatal error: invalid input!
logfile = open('D:/python_code/mylog.txt','a')
print >> logfile,'Fatal error: invalid input!'
logfile.close()
3.enumerate()函數(shù)
In [4]: foo = 'abc'In [5]: for i in range(len(foo)):
...: print foo[i],'(%d)'%i
...:
a (0)
b (1)
c (2)In [6]: for i,ch in enumerate(foo):
...: print ch,'(%d)'%i
...:
a (0)
b (1)
c (2)In [7]:
4.列表解析
[運(yùn)算式 參數(shù)列表 判斷條件]
In [7]: squared = [x**2 for x in range(4)]In [8]: squared
Out[8]: [0, 1, 4, 9]In [9]: sqdEvens = [x**2 for x in range(8) if not x%2]
In [10]: sqdEvens
Out[10]: [0, 4, 16, 36]In [11]: sum = [x+y for x in range(3) for y in range(3) if x!=y]
In [12]: sum
Out[12]: [1, 2, 1, 3, 2, 3]In [13]: sum2 = [x*y for x in range(3) for y in range(3) if x!=y]
In [14]: sum2
Out[14]: [0, 0, 0, 2, 0, 2]
5.實(shí)用的內(nèi)建函數(shù)
dir([obj]) 顯示對(duì)象的屬性,如果沒有提供參數(shù),則顯示全局變量的名字。
help([obj]) 以一種整齊美觀的形式,顯示對(duì)象的文檔字符串,如果沒有
提供任何參數(shù),則會(huì)進(jìn)入交互式幫助。
int(obj) 將一個(gè)對(duì)象轉(zhuǎn)換為整型
len(obj) 返回對(duì)象的長度
open(fn,mode) 以mode('r'=讀,'w'=寫,'a'=追加)的方式打開一個(gè)文件名
為fn的文件。
range([[start,] stop[,step]])返回一個(gè)整型列表。起始值為start,
結(jié)束值為stop-1,start默認(rèn)值為0,step默認(rèn)值為1
raw_input(str)等待用戶輸入一個(gè)字符串,可以提供一個(gè)可選的參數(shù)
str用作提示信息。
str(obj) 將一個(gè)對(duì)象轉(zhuǎn)換為字符串
type(obj) 返回對(duì)象的類型(返回值本身是一個(gè)type對(duì)象)
1.井號(hào)(#)表示之后的字符為python注釋
2.換行(\n)是標(biāo)準(zhǔn)的行分隔符(通常一個(gè)語句一行)
3.反斜線()繼續(xù)上一行
有兩種例外情況一個(gè)語句不使用反斜線也可以跨行。在使用閉合操作符時(shí),
單一語句可以跨多行。
例如:在含有小括號(hào)、中括號(hào)、花括號(hào)時(shí)可以多行書寫。
另外就是三引號(hào)包括下的字符串也可以跨行書寫。
4.分號(hào)(;)將兩個(gè)語句連接在一行中
5.冒號(hào)(:)將代碼塊的頭和體分開
6.語句(代碼塊)用縮進(jìn)塊的方式體現(xiàn)
7.不同的縮進(jìn)深度分隔不同的代碼塊
8.python文件以模塊的形式組織。
1.變量無需事先聲明
2.變量無需指定類型
3.程序員不用關(guān)心內(nèi)存管理
4.變量名會(huì)被"回收"
5.del語句能夠直接釋放資源
變量定義,變量生命可以在代碼塊的中間,不過仍然必須在變量
被使用前聲明變量的名字和類型。
在Python中,無需此類顯式變量聲明語句,變量在第一次被賦值時(shí)自動(dòng)聲明。
和其他大多數(shù)語言一樣,變量只有被創(chuàng)建和賦值后才能被使用。
del語句
del語句會(huì)刪除對(duì)象的一個(gè)引用,它的語法如下:
del obj1[,obj2[,...objN]]
del會(huì)刪除當(dāng)前對(duì)象的引用,將引用計(jì)數(shù)器減1,如果引用計(jì)數(shù)器為0
則會(huì)導(dǎo)致該對(duì)象從此無法訪問或無法抵達(dá),從此刻起,該對(duì)象就成為垃圾回收機(jī)制的回收對(duì)象。
注意任何追蹤或調(diào)試程序會(huì)給一個(gè)對(duì)象增加一個(gè)額外的引用,這會(huì)推遲
該對(duì)象被回收的時(shí)間。
垃圾收集
不再使用的內(nèi)存會(huì)被一種稱為垃圾收集的機(jī)制釋放。雖然解釋器跟蹤對(duì)象
的引用計(jì)數(shù),但垃圾收集器負(fù)責(zé)釋放內(nèi)存。垃圾收集器是一塊獨(dú)立代碼,
它用來尋找引用計(jì)數(shù)為0的對(duì)象。它也負(fù)責(zé)檢查那些雖然引用計(jì)數(shù)大于0
但也應(yīng)該被銷毀的對(duì)象。特定情形會(huì)導(dǎo)致循環(huán)引用。
一個(gè)循環(huán)引用發(fā)生在當(dāng)你有至少兩個(gè)對(duì)象互相引用時(shí),也就是說所有
的引用都消失時(shí),這些引用仍然存在,這說明只靠引用計(jì)數(shù)是不夠的。
python的垃圾收集器實(shí)際上是一個(gè)引用計(jì)數(shù)器和一個(gè)循環(huán)垃圾收集器。
當(dāng)一個(gè)對(duì)象的引用計(jì)數(shù)變?yōu)?,解釋器會(huì)暫停,釋放掉這個(gè)對(duì)象和僅有這個(gè)對(duì)象可訪問(可到達(dá))的其他對(duì)象。作為引用計(jì)數(shù)的補(bǔ)充,垃圾收集器也會(huì)
留心被分配的總量很大的(及未通過引用計(jì)數(shù)銷毀的那些)對(duì)象。
在這種情況下,解釋器會(huì)暫停下來,試圖清理所有未引用的循環(huán)。
切片
In [52]: s = 'abcde'In [53]: i = -1
In [54]: for i in range(-1,-len(s),-1):
...: print s[:i]
...:
abcd
abc
ab
aIn [55]: s = 'abcde'
In [56]: for i in [None] + range(-1,-len(s),-1):
...: print s[:i]
...:
abcde
abcd
abc
ab
a使用None作為索引值,這樣一來就可以滿足你的需要,比如說,在你
想用一個(gè)變量作為索引來從第一個(gè)到遍歷最后一個(gè)元素的時(shí)候。In [57]: for i in [None].extend(range(-1,-len(s),-1)):
...: print s[:i]
...:TypeError Traceback (most recent call last)
in ()
----> 1 for i in [None].extend(range(-1,-len(s),-1)):
2 print s[:i]
3TypeError: 'NoneType' object is not iterable
可變對(duì)象的內(nèi)建函數(shù)extend()根本沒有返回值,所以這個(gè)方法是行不通的。
這個(gè)錯(cuò)誤發(fā)生的原因是[None].extend(...)函數(shù)返回None,None既不是
序列類型也不是可迭代對(duì)象。
在這種情況下使用上面提到的列表連接操作來實(shí)現(xiàn)是唯一不需要添加額外
代碼的方法。
- string.capitalize() 把字符串的第一個(gè)字符大寫
- string.center(width) 返回一個(gè)原字符串居中,并使用空格填充
至長度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')
以decoding指定的編碼格式解碼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)換為空格,默認(rèn)的空格數(shù)tabsize是8- string.find(str,beg=0,end=len(string)) 檢測str是否包含
在string中,如果beg和end指定范圍,則檢查是否包含在指定范圍內(nèi),
如果是返回開始的索引值,否則返回-1- string.index(str,beg=0,end=len(string)) 跟find()方法一樣,
只不過如果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ū)分大小寫的字
符,并且所有這些(區(qū)分大小寫的)字符都是小寫,則返回True,否則返回False。- string.isnumeric() 如果string中只包含數(shù)字字符,則返回True
否則返回False- string.isspace() 如果string中只包含空格,則返回True,
否則返回False- string.istitle() 如果string是標(biāo)題化的(見title())則
返回True,否則返回False- string.isupper() 如果string中包含至少一個(gè)區(qū)分大小寫的
字符,并且所有這些(區(qū)分大小寫的)字符都是大寫,則返回True,否則返回False- string.join(seq) 以string作為分隔符,將seq中所有的元素
(字符串表示)合并為一個(gè)新的字符串- stirng.ljust(width) 返回一個(gè)原字符串左對(duì)齊,并使用空格
填充至長度width的新字符串- string.lower() 轉(zhuǎn)換string中所有大寫字符為小寫
- string.lstrip() 截掉string左邊的空格
- 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指定,則替換不超過num次- string.rfind(str,beg=0,end=len(string)) 類似于
find()函數(shù),不過是從右邊開始查找。- string.rindex(str,beg=0,end=len(string)) 類似于index()
不過是從右邊開始。- string.rjust(width) 返回一個(gè)原字符串右對(duì)齊,并使用
空格填充至長度width的新字符串- string.rpartition(str) 類似于partition()函數(shù),不過
是從右邊開始查找。- string.rstrip() 刪除string字符串末尾的空格。
- string.split(str="",num=string.count(str))
以str為分隔符切片string,如果num有指定值,則僅分隔num個(gè)子字符串- string.splitlines(num=string.count('\n')) 按照行分隔,
返回一個(gè)包含各行作為元素的列表,如果num指定則僅切片num行。- string.startswith(obj,beg=0,end=len(string))
檢查字符串是否是以obj開頭,是則返回True,否則返回False
如果beg和end指定值,則在指定范圍內(nèi)檢查- string.strip([obj]) 在string上執(zhí)行l(wèi)strip()和rstrip()
- string.swapcase() 翻轉(zhuǎn)string中的大小寫
- string.title() 返回“標(biāo)題化”的string,就是說所有單詞都是
以大寫開始,其余字母均為小寫(見istitle())- string.translate(str,del="") 根據(jù)str給出的表(包含256個(gè)字符)
轉(zhuǎn)換string的字符,要過濾掉的字符放到del參數(shù)中- string.upper() 轉(zhuǎn)換string中的小寫字母為大寫
- string.zfill(width) 返回長度為width的字符串,原字符串string
右對(duì)齊,前面填充0In [79]: string1 = "akdsg;lkajsd"
In [80]: import string
In [81]: string.capitalize(string1)
Out[81]: 'Akdsg;lkajsd'In [82]: string.capitalize(string1)
Out[82]: 'Akdsg;lkajsd'In [83]:
In [83]: quest = 'what is your favorite color?'
In [84]: quest.capitalize()
Out[84]: 'What is your favorite color?'In [85]: quest.center(40)
Out[85]: ' what is your favorite color? 'In [86]: quest.count('or')
Out[86]: 2In [87]: quest.endswith('blue')
Out[87]: FalseIn [88]: quest.endswith('color?')
Out[88]: TrueIn [89]: quest.find('or',30)
Out[89]: -1In [90]: quest.find('or',22)
Out[90]: 25In [91]: quest.index('or',10)
Out[91]: 16In [92]: ':'.join(quest.split())
Out[92]: 'what:is:your:favorite:color?'In [93]: quest.replace('favorite color','quest')
Out[93]: 'what is your quest?'In [94]: quest.upper()
Out[94]: 'WHAT IS YOUR FAVORITE COLOR?'In [95]:
方法,所有的集合方法
- s.issubset(t) 如果s是t的子集,則返回True,否則返回False
- s.issuperset(t) 如果t是s的超集,則返回True,否則返回False
- s.union(t) 返回一個(gè)新集合,該集合是s和t的并集
- s.intersection(t) 返回一個(gè)新集合,該集合是s和t的交集
- s.difference(t) 返回一個(gè)新集合,該集合是s的成員,但不是t的成員
- s.symmetric_difference(t) 返回一個(gè)新集合,該集合是s或t的成員,但不是s和t共有的成員
- s.copy() 返回一個(gè)新集合,它是集合s的淺復(fù)制
方法,僅適用于可變集合
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。