1. 數(shù)據(jù)類型:
Numbers(數(shù)字):包括int(有符號(hào)整型)、long(長(zhǎng)整型[也可以代表8進(jìn)制和16進(jìn)制])、float(浮點(diǎn)型)、complex(復(fù)數(shù))
布爾類型:包括True和False
String(字符串)
List(列表)
Tuple(元組)
Dictionary(字典)
可變數(shù)據(jù)類型:列表,字典
不可變數(shù)據(jù)類型:數(shù)字、字符串、元組
2. 切片
字符串、列表、元組都支持切片操作
切片操作語法[起始:結(jié)束:步長(zhǎng)]
切片區(qū)間左閉右開
3. 字符串操作
find 檢查str是否包含在mystr中,如果是返回索引,否則返回-1
mystr.find(str, start=0, end=len(mystr))
index 跟find一樣,只不過如果str不在mystr會(huì)報(bào)異常
mystr.index(str, start=0, end=len(mystr))
rfind 返回字符串最后一次出現(xiàn)的位置,如果沒有匹配項(xiàng)則返回 -1
mystr.rfind(str, beg=0 end=len(string))
rindex 跟rfind一樣,只不過如果str不在mystr會(huì)報(bào)異常
mystr.rindex(str, start=0, end=len(mystr))
count 返回str在start和end之間,在mystr里面出現(xiàn)的次數(shù)
mystr.count(str, start, end=len(mystr))
replace 把mystr中的str1替換成str2,如果count指定,則替換不超過count次
mystr.replace(str1, str2, mystr.count(str1))
split 以str為分隔符切片mystr, 如果maxsplit有指定值,則僅分割maxsplit個(gè)子字符串
mystr.split(str=" ", 2)
capitalize 把字符串的第一個(gè)字符大寫
mystr.capitalize()
title 把字符串的每個(gè)單詞首字母大寫
mystr.title()
startswith 檢查字符串是否以obj開頭,是則返回True,否則返回False
mystr.startwith('obj')
endswith 檢查字符串是否以obj結(jié)尾,是則返回True,否則返回False
mystr.endswith('obj')
lower 轉(zhuǎn)換mystr中所有大寫字符為小寫
mystr.lower()
upper 轉(zhuǎn)換mystr中所有小寫字符為大寫
mystr.upper()
ljust 返回一個(gè)原字符串左對(duì)齊,并使用空格填充至長(zhǎng)度width的新字符串
mystr.ljust(width)
rjust 返回一個(gè)原字符串右對(duì)齊,并使用空格填充至長(zhǎng)度width的新字符串
mystr.rjust(width)
center 返回一個(gè)原字符串居中,并使用空格填充至長(zhǎng)度width的新字符串
mystr.center(width)
lstrip 刪除mystr左邊的空白字符
mystr.lstrip()
rstrip 刪除mystr右邊的空白字符
mystr.rstrip()
strip 刪除mystr字符串兩端的空白字符
mystr.strip()
partition 把mystr以str分割成三部分,str前,str,str后
mystr.partition(str)
splitlines 按照行分隔,返回一個(gè)包含各行作為元素的列表
mystr.splitlines()
isalpha 如果mystr所有字符都是字母,則返回True,否則返回False
mystr.isalpha()
isdigit 如果mystr只包含數(shù)字則返回True,否則返回False
mystr.isdigit()
isalnum 如果mystr所有字符都是字母或數(shù)字則返回True,否則返回False
mystr.isalnum()
isspace 如果mystr中只包含空格則返回True,否則返回False
mystr.isspace()
join 將序列中的元素以指定的字符(str)連接生成一個(gè)新的字符串
str.join(sequence)
5. 列表
添加元素(append, extend, insert)
append 向列表添加元素
A.append(str)
A.insert(index, object)
修改元素
通過下標(biāo)直接修改
A[1] = str
查找元素
in(存在) 如果存在為True,否則為False
not in(不存在) 如果不存在為True,否則為False
index 查詢?cè)夭⒎祷叵聵?biāo),如不存在,拋出異常 A.index('a', start, end)
count 統(tǒng)計(jì)元素個(gè)數(shù) A.count('a')
刪除元素 (del, pop, remove)
del 根據(jù)下標(biāo)刪除 del A[2]
pop 刪除并返回最后一個(gè)元素
remove 根據(jù)元素值刪除
排序(sort, reverse)
sort 默認(rèn)從小到大排序 參數(shù)reverse=True 可以改為倒序,從大到小 A.sort()
reverse 將列表倒序 A.reverse()
排序(sorted)
sorted(iterable,key=None,reverse=False) # cmp參數(shù)在Python3中廢除
a = [5, 7, 6, 3, 4, 1, 2]
b = sorted(a) # 保留原列表
print(a)
print(b)
返回
[5, 7, 6, 3, 4, 1, 2]
[1, 2, 3, 4, 5, 6, 7]
通過key排序
L = [('b', 2), ('a', 1), ('c', 3), ('d', 4)]
M = sorted(L, key=lambda x: x[1])
N = sorted(L, key=lambda x: x[1], reverse=True) # 倒序
print(L)
print(M)
print(N)
返回
[('b', 2), ('a', 1), ('c', 3), ('d', 4)]
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
[('d', 4), ('c', 3), ('b', 2), ('a', 1)]
6. 元組
元組與列表類似,不同之處是元組不能修改,使用小括號(hào)
通過下標(biāo)訪問元組,修改元組值會(huì)報(bào)異常
index和count與字符串和列表中的用法相同
index 查詢?cè)夭⒎祷叵聵?biāo),如不存在,拋出異常 A.index('a', start, end)
count 統(tǒng)計(jì)元素個(gè)數(shù) A.count('a')
7. 字典
數(shù)字、元組也可以是字典的key,只要不可變數(shù)據(jù)類型就可以
查詢 通過key訪問字典
info['name'] 如果不存在會(huì)報(bào)錯(cuò)
get 如果字典存在key,返回key值,如果不存在,返回None。如果不存在,并且指定了默認(rèn)值,返回默認(rèn)值。
name = info.get('name', 'Bill')
刪除(del, clear())
del 刪除指定元素 del info['name']
clear 清空字典 info.clear()
常用操作
len() 查詢字典鍵值對(duì)個(gè)數(shù) len(info)
keys() 返回一個(gè)包含字典所有key的列表 info.keys(),Python3返回類型是dict_keys,可用list轉(zhuǎn)為列表使用 res = list(info.keys())
values() 返回一個(gè)包含字典所有value的列表 info.values(),Python3返回類型是dict_values,可用list轉(zhuǎn)為列表使用 res = list(info.values())
items() 返回一個(gè)包含字典所有鍵值元組的列表 info.items(),Python3返回類型是dict_items,可用list轉(zhuǎn)為列表使用 res = list(info.items())
kas_key() Python2中如果key存在字典中,返回True,如果不存在,返回False。info.has_key('name')
in(存在) Python3中使用in判斷key是否存在,存在返回True,不存在返回False。'name' in info
not in(不存在) Python3中使用not in判斷key,不存在返回True,存在返回False。'name' not in info
遍歷
字符串遍歷 for char in str: 或者 for i, char in enumerate(str):可以返回下標(biāo)和值
列表遍歷
字典遍歷
8. 運(yùn)算符
- 合并字符串、列表、元組
- 復(fù)制字符串、列表、元組
in 字符串、列表、元組、字典中元素是否存在
not in 字符串、列表、元組、字典中元素是否不存在
9. 內(nèi)置函數(shù)
cmp(item1, item2) 比較兩個(gè)值
len(item) 計(jì)算容器中元素個(gè)數(shù)
max(item) 返回容器中最大值
min(item) 返回容器中最小值
del(item) 刪除變量
help() 函數(shù)用于查看函數(shù)或模塊用途的詳細(xì)說明
eval() 函數(shù)用來執(zhí)行一個(gè)字符串表達(dá)式,將字符串當(dāng)成有效的表達(dá)式,并返回表達(dá)式的值eval('2 + 2')返回4
10. 函數(shù)
返回值:一個(gè)函數(shù)執(zhí)行完成后,把一個(gè)結(jié)果返回給調(diào)用者。使用return返回結(jié)果并結(jié)束函數(shù)
函數(shù)的4種類型:
無參數(shù) 無返回值 多用于打印信息
無參數(shù) 有返回值
有參數(shù) 無返回值 用于對(duì)變量設(shè)置數(shù)據(jù),但是不需要結(jié)果
有參數(shù) 有返回值
局部變量:在函數(shù)里定義的變量,只在定義的函數(shù)中有效
全局變量:在函數(shù)外定義的變量
在函數(shù)中修改全局變量會(huì)產(chǎn)生異常,如果需要修改,可以聲明 global xxx
缺省參數(shù):如果沒有傳入?yún)?shù),則使用函數(shù)聲明中的默認(rèn)值
帶有默認(rèn)值的參數(shù)一定要位于參數(shù)列表的最后面
不定長(zhǎng)參數(shù):有時(shí)可能需要一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù),這些參數(shù)叫做不定長(zhǎng)參數(shù),聲明時(shí)不會(huì)命名。聲明如下:
def test(a,b,*args,**kwargs):
pass
A=[11,22,33]
B={'aa':100, 'bb':200}
# 解包:列表/元組作為實(shí)參傳遞的時(shí)候,如果前面有一個(gè)*,表示對(duì)齊解包。
# 字典作為實(shí)參傳遞的時(shí)候,如果前面有兩個(gè)個(gè)*,表示對(duì)齊解包。
test(11,22,*A,**B) 相當(dāng)于 test(11,22,11,22,33,'aa'=100,'bb'=200)
引用傳參:Python中函數(shù)參數(shù)是引用傳遞(注意不是值傳遞)。對(duì)于不可變類型,因變量不能修改,所以運(yùn)算不會(huì)影響到變量自身;而對(duì)于可變類型來說,函數(shù)體中的運(yùn)算有可能會(huì)更改傳入的參數(shù)變量。
遞歸函數(shù)
一個(gè)函數(shù)調(diào)用了它本身,那么這樣的函數(shù)就叫遞歸函數(shù)
匿名函數(shù)
aaaa = lambda a,b:a+b #(a,b為入?yún)ⅲ琣+b為返回值)
print(aaaa(8,9))
# 使用lambda函數(shù)將字典按照key值從小到大排序
b.sort(key = lambda x:x['id'])
重復(fù)聲明
多個(gè)函數(shù)名相同時(shí),后面的覆蓋前面的,只調(diào)用最后一個(gè)函數(shù)
11. 文件操作
open(文件名,訪問模式),打開一個(gè)存在文件,或者創(chuàng)建一個(gè)新文件
f = open('test.txt', 'w')
f.read(n) #讀取文件,讀取n個(gè)字符
f.close() #關(guān)閉文件
訪問模式:
r 只讀方式打開文件,文件指針放在文件的開頭
w 打開一個(gè)文件只用于寫入,如果存在則覆蓋,不存在則創(chuàng)建
a 打開一個(gè)文件用于追加,如果文件存在,文件指針放在文件結(jié)尾。如果不存在則創(chuàng)建
rb 以二進(jìn)制格式打開一個(gè)文件只讀,文件指針放在文件開頭,這是默認(rèn)模式
wb 以二進(jìn)制格式打開一個(gè)文件只用于寫入,如果存在則覆蓋,不存在則創(chuàng)建
ab 以二進(jìn)制格式打開一個(gè)文件用于追加,如果文件存在,文件指針放在文件結(jié)尾。如果不存在則創(chuàng)建
r+ 打開一個(gè)文件用于讀寫,文件指針放在文件開頭
w+ 打開一個(gè)文件用于讀寫,如果存在則覆蓋,不存在則創(chuàng)建
讀數(shù)據(jù)
readline:每次讀取一行
readlines:按照行的方式讀取文件整個(gè)內(nèi)容,返回一個(gè)列表,每一行數(shù)據(jù)為一個(gè)元素。
移動(dòng)指針:
seek() 方法用于移動(dòng)文件讀取指針到指定位置。
f.seek(offset, from) # offset 偏移量,from 方向:0表示文件開頭,1表示當(dāng)前位置,2表示末尾
f.seek(-3, 2) 表示把位置設(shè)置為:離文件末尾,3字節(jié)處
文件重命名 os.rename(需要修改的文件名,新文件名)
刪除文件 os.remove(需要?jiǎng)h除的文件名)
創(chuàng)建文件夾 os.mkdir(文件夾名)
獲取當(dāng)前目錄 os.getcwd()
改變默認(rèn)目錄 os.chdir("../")
獲取目錄列表 os.listdir("./")
刪除文件夾 os.rmdir(文件夾名)
判斷是否是文件 os.path.isdir(文件路徑)
文本文件的編碼格式
Python2 默認(rèn)使用ASCII編碼
Python3 默認(rèn)使用utf-8編碼
12. 面向?qū)ο?/h5>
在一個(gè)對(duì)象中封裝多個(gè)方法
怎么設(shè)計(jì)?
在完成某個(gè)需求前,先確定職責(zé)--要做的事情(方法)
根據(jù)職責(zé)確定不同的對(duì)象,在對(duì)象內(nèi)部封裝不同的方法(多個(gè))
最后完成的代碼,就是讓不同的對(duì)象調(diào)用不同的方法
類
類是對(duì)一群具有相同特征或者行為的事物的一個(gè)統(tǒng)稱,是抽象的,不能直接使用。特征被稱為屬性,行為被稱為方法。類是負(fù)責(zé)創(chuàng)建對(duì)象的模板。
類名滿足大駝峰命名法:Capwords,整個(gè)業(yè)務(wù)流程中出現(xiàn)的名字,通常就是類名。
每一個(gè)單詞的首字母大寫,單詞與單詞之間沒有下劃線
dir()內(nèi)置函數(shù)可以查看對(duì)象內(nèi)的所有屬性和方法,例如:
__new__
創(chuàng)建對(duì)象時(shí)會(huì)自動(dòng)調(diào)用
__init__
對(duì)象被初始化時(shí)會(huì)自動(dòng)調(diào)用
__del__
對(duì)象被從內(nèi)存中銷毀前會(huì)自動(dòng)調(diào)用
__str__
返回對(duì)象的描述信息,print函數(shù)輸出使用
初始化方法
使用“類名()”創(chuàng)建對(duì)象時(shí),會(huì)自動(dòng)執(zhí)行以下操作:
為對(duì)象在內(nèi)存中分配空間,創(chuàng)建對(duì)象
為對(duì)象的屬性設(shè)置初始值,自動(dòng)調(diào)用初始化方法__init__
定義類
class 類名:
def 方法1(self, 參數(shù)列表):
# 哪一個(gè)對(duì)象調(diào)用的方法,self就是哪一個(gè)對(duì)象的引用
pass
def 方法2(self, 參數(shù)列表):
pass
創(chuàng)建類的對(duì)象:對(duì)象變量=類名()
在類的外部,通過“變量名.”訪問對(duì)象的屬性和方法
在類封裝的方法中,通過self.訪問對(duì)象的屬性和方法
del關(guān)鍵字可以刪除一個(gè)對(duì)象 del object_name
定義屬性時(shí),如果不需要值,可以設(shè)置為None
創(chuàng)建出來的對(duì)象叫做類的實(shí)例,創(chuàng)建對(duì)象的動(dòng)作叫做實(shí)例化,對(duì)象的屬性叫做實(shí)例屬性,對(duì)象調(diào)用的方法叫做實(shí)例方法。
每一個(gè)對(duì)象都有自己獨(dú)立的內(nèi)存空間,保存各自不同的屬性
多個(gè)對(duì)象的方法,在內(nèi)存中只有一份,在調(diào)用方法時(shí),需要把對(duì)象的引用傳遞到方法內(nèi)部。
面向?qū)ο笕筇匦?br>
封裝:面向?qū)ο缶幊淌菍傩院头椒ǚ庋b在一個(gè)抽象的類中,外界使用類來創(chuàng)建對(duì)象,讓對(duì)象調(diào)用方法。對(duì)象方法的細(xì)節(jié)都被封裝在類的內(nèi)部。
繼承:實(shí)現(xiàn)代碼的重用,相同的代碼不需要重復(fù)編寫。
多態(tài):不同子類對(duì)象調(diào)用相同的父類方法,產(chǎn)生不同的執(zhí)行結(jié)果,以繼承和重寫父類方法為前提,增加代碼的靈活度。
身份運(yùn)算符(is和==的區(qū)別)
is 用于判斷兩個(gè)變量引用的對(duì)象是否為同一個(gè)
== 用于判斷引用變量的值是否相等
私有屬性和私有方法(只希望在類內(nèi)部被使用的屬性和方法)定義方式:
在屬性名或者方法名前面加兩個(gè)下劃線__
Python中沒有真正意義的私有,只是在給屬性和方法命名時(shí),對(duì)名稱做了特殊處理,使外界無法訪問到。可以在名稱前面加上 類名來訪問(對(duì)象.類名__名稱)
繼承:(父類,子類 = 基類,派生類)
子類擁有父類以及父類的父類中封裝的所有的方法和屬性。
子類根據(jù)職責(zé)封裝子類特有的屬性和方法
class 類名(父類名):
pass
方法重寫的兩種情況:當(dāng)父類的方法實(shí)現(xiàn)不能滿足子類的需求時(shí),可以對(duì)方法重寫(override)
覆蓋父類的方法:父類和子類方法實(shí)現(xiàn)完全不同,可以在子類重新編寫方法,在子類中定義一個(gè)和父類同名的方法并且實(shí)現(xiàn)。運(yùn)行時(shí)只會(huì)調(diào)用子類中重寫的方法。
對(duì)父類方法進(jìn)行擴(kuò)展:父類封裝的方法是子類方法的一部分,可以在子類中擴(kuò)展重寫父類的方法。在需要的位置使用 super().父類方法 來調(diào)用父類方法的執(zhí)行。代碼其他位置針對(duì)子類的需求,編寫子類特有的代碼實(shí)現(xiàn)。相當(dāng)于在重寫方法的同時(shí)也包含了父類的方法。
關(guān)于super()
Python中super是一個(gè)特殊的類
super()就是super類創(chuàng)建出來的對(duì)象
最常用的場(chǎng)景就是在重寫父類方法時(shí),調(diào)用在父類中封裝的方法實(shí)現(xiàn)。
父類的私有屬性和方法
不能被子類對(duì)象直接訪問到,通常用于做一些內(nèi)部的事情。
可以通過父類的公有方法間接訪問到私有屬性和私有方法。
多繼承:子類可以擁有多個(gè)父類,并且具有所有父類的屬性和方法
class 子類名(父類名1,父類名2)
pass
不同父類存在同名的方法時(shí),子類會(huì)調(diào)用到哪個(gè)父類的方法?這種情況要避免使用多繼承。
Python中針對(duì)類提供了一個(gè)內(nèi)置屬性mro可以查看方法搜索順序。
MRO(method resolution order),主要用于在多繼承時(shí)判斷方法、屬性的調(diào)用路徑。
新式類與舊式類:
以object為基類的類,Python3中如果沒有指定父類,默認(rèn)使用object作為基類。Python2不會(huì)。
定義類時(shí),如果沒有父類,建議統(tǒng)一繼承自object
class 類名(object):
pass
類是一個(gè)特殊的對(duì)象,除了封裝實(shí)例的屬性和方法,類對(duì)象還可以擁有自己的屬性和方法
類屬性:給類對(duì)象定義的屬性,通常記錄與這個(gè)類相關(guān)的特征(例:創(chuàng)建對(duì)象數(shù)量統(tǒng)計(jì)),類屬性不會(huì)去記錄具體對(duì)象的特征。訪問方式(類名.類屬性) 和 (對(duì)象.類屬性(不推薦))
類屬性的獲取機(jī)制:向上查找
首先在對(duì)象內(nèi)部查找對(duì)象屬性,如果沒有找到就會(huì)想向上尋找類屬性。
如果使用(對(duì)象.類屬性=值)賦值語句,只會(huì)給對(duì)象添加一個(gè)屬性,而不會(huì)影響到類屬性的值。
類方法(cls):針對(duì)類對(duì)象定義的方法,外部訪問方式(類名.方法名)
在類方法內(nèi)部可以直接訪問類屬性和調(diào)用其他的類方法
語法如下:由哪一個(gè)類調(diào)用的方法,cls就是哪一個(gè)類的引用
@classmethod
def 類方法名(cls):
pass
在方法內(nèi)部,可以通過cls.訪問類的屬性,也可以通過cls.調(diào)用其他的類方法
靜態(tài)方法
既不需要訪問實(shí)例屬性或者調(diào)用實(shí)例方法,也不需要訪問類屬性或者調(diào)用類方法。
語法如下:
@staticmethod
def 靜態(tài)方法名():
pass
調(diào)用時(shí)不需要?jiǎng)?chuàng)建對(duì)象: 類名. 靜態(tài)方法名()
__new__和__init__
先執(zhí)行__new__
:1.為對(duì)象分配空間;2.返回對(duì)象引用
再執(zhí)行__init__
:1.對(duì)象初始化;2.定義實(shí)例屬性
13. 捕獲異常
簡(jiǎn)單代碼:
try:
嘗試執(zhí)行的代碼
except:
出現(xiàn)錯(cuò)誤的處理
錯(cuò)誤類型捕獲:
try:
嘗試執(zhí)行的代碼
except 錯(cuò)誤類型1:
針對(duì)錯(cuò)誤類型1的代碼處理
except (錯(cuò)誤類型2, 錯(cuò)誤類型3):
針對(duì)錯(cuò)誤類型2和3的代碼處理
except Exception as result:
print('位置錯(cuò)誤 %s', result)
else:
沒有異常才會(huì)執(zhí)行的代碼
finally:
是否有異常都會(huì)執(zhí)行的代碼
Python解釋器拋出異常時(shí),最后一行錯(cuò)誤信息的第一個(gè)單詞就是錯(cuò)誤類型。
異常的傳遞:
當(dāng)函數(shù)/方法執(zhí)行出現(xiàn)異常,會(huì)講異常傳遞給函數(shù)/方法的調(diào)用一方,如果傳遞到主程序,仍然沒有異常處理,程序才會(huì)被終止。可以在主函數(shù)中增加異常捕獲,保證代碼簡(jiǎn)潔。
拋出raise異常
開發(fā)中除了代碼出錯(cuò)解釋器拋出異常外,還可以根據(jù)業(yè)務(wù)需求主動(dòng)拋出異常。
Python中提供了一個(gè)Exception異常類。如果在業(yè)務(wù)需求中需要拋出異常,可以創(chuàng)建一個(gè)Exception的對(duì)象,使用raise關(guān)鍵字拋出異常對(duì)象。
ex = Exception("異常信息") # 創(chuàng)建異常對(duì)象
raise ex # 主動(dòng)拋出一行
14. 模塊
模塊是Python程序架構(gòu)的一個(gè)核心概念,每一個(gè).py結(jié)尾的源代碼文件都是一個(gè)模塊。
導(dǎo)入方式
# import應(yīng)該統(tǒng)一寫在代碼頂部
import 模塊1, 模塊2
import 模塊1
import 模塊2
# 使用as指定模塊別名,模塊別名使用大駝峰命名法
import 模塊1 as 模塊別名
# 從一個(gè)模塊中導(dǎo)入部分工具
from 模塊名 import 工具名
導(dǎo)入之后,通過 模塊名. 使用模塊提供的工具:全局變量、函數(shù)、類
注意:如果2個(gè)模塊,存在同名函數(shù),后導(dǎo)入模塊的函數(shù),會(huì)覆蓋掉先導(dǎo)入的函數(shù)
模塊的搜索順序
Python解釋器導(dǎo)入模塊時(shí),先搜索當(dāng)前目錄,再搜索系統(tǒng)目錄。如果當(dāng)前目錄有同名模塊,會(huì)直接導(dǎo)入。所以給文件起名不要和系統(tǒng)模塊重名。
模塊內(nèi)置屬性__file__
可以查看模塊的完整路徑。
__name__
屬性
一個(gè)獨(dú)立的py文件就是一個(gè)模塊,導(dǎo)入文件時(shí),文件中所有沒有任何縮進(jìn)的代碼都會(huì)被執(zhí)行一遍。
開發(fā)時(shí),會(huì)在模塊下方增加測(cè)試代碼,只在模塊內(nèi)使用,被導(dǎo)入到其他文件時(shí)不需要執(zhí)行。
__name__
屬性可以做到測(cè)試模塊的代碼,只在測(cè)試情況下被運(yùn)行,而在被導(dǎo)入時(shí)不會(huì)被執(zhí)行。
__name__
是Python的一個(gè)內(nèi)置屬性,記錄這一個(gè)字符串。
如果是被其他文件導(dǎo)入的,__name__
就是模塊名
如果是當(dāng)前執(zhí)行的程序,__name__
就是__main__
# 根據(jù)``__name__``判斷是否執(zhí)行下面代碼
``if __name__ == "__main__":``
main()
15. 包
包是一個(gè)包含多個(gè)模塊的特殊目錄,目錄下有一個(gè)特殊的文件__init__.py
包名的命名方式和變量名一致,小寫字母+'_'
使用import包名可以一次性導(dǎo)入包中所有模塊
__init__.py
中指定對(duì)外界提供的模塊列表
# 從當(dāng)前目錄導(dǎo)入的模塊列表
from . import 模塊1
from . import 模塊2
發(fā)布模塊
如果希望自己開發(fā)的模塊分享給其他人,可以按照以下步驟發(fā)布
創(chuàng)建setup.py文件
from distutils.core import setup
setup(
name="mytest", # 包名
version="1.0", # 版本
author="test", # 作者
author_email="test@test.com", # 作者郵箱
description="Learn to Pack Python Module", # 描述信息
url="http://test.com/", # 主頁
py_modules = ["模塊1", "模塊2"], # 提供的模塊)
構(gòu)建模塊
python3 setup.py build
生成發(fā)布?jí)嚎s包
python3 setup.py sdist
安裝模塊
tar -zxvf 模塊名.tar.gz
sudo python3 setup.py install
卸載模塊
cd /usr/local/lib/python3.5/dist-packages/
sudo rm -f 模塊名
第三方模塊通過pip install安裝
Python2中如何使用中文
# *-* coding:utf8 *-*
# coding=utf8
常量命名:所有字母大寫,單詞之間下劃線連接