一、python簡(jiǎn)介
1、Python是一門(mén)動(dòng)態(tài)、解釋型、強(qiáng)類(lèi)型語(yǔ)言
動(dòng)態(tài):運(yùn)行期間進(jìn)行數(shù)據(jù)檢查,不用提前聲明變量
靜態(tài):編譯時(shí)進(jìn)行數(shù)據(jù)檢查,需要提前聲明變量
解釋型:執(zhí)行程序時(shí),解釋成機(jī)器語(yǔ)言給計(jì)算機(jī)執(zhí)行
編譯型:先將代碼編譯成二進(jìn)制可執(zhí)行文件,再執(zhí)行
強(qiáng)類(lèi)型:變量類(lèi)型設(shè)置成功,如果不強(qiáng)制轉(zhuǎn)化,一直是這種類(lèi)型
弱類(lèi)型:在執(zhí)行過(guò)程中會(huì)根據(jù)需要自動(dòng)轉(zhuǎn)化類(lèi)型
2、基本數(shù)據(jù)類(lèi)型
數(shù)字:整型,浮點(diǎn)型,復(fù)數(shù)型,布爾類(lèi)型
字符串:
len('abc')? ?字符串長(zhǎng)度
print('abd'.find('f'))? 查找字符,找不到會(huì)報(bào)錯(cuò)
print('abd'.index('f'))???查找字符,找不到返回-1
'abc'.count('a')? 統(tǒng)計(jì)字符的數(shù)量
"".join(["a","b","c"])??列表轉(zhuǎn)化成字符串
"a,b,c,d".split(",")? ? 將多個(gè)字符串分割成列表
"hello,java".replace("java", "python")? ? 將java 替換為 python
"Name: %s, Age: %d" % ("Lily", 12)? ? 字符串格式化
"Name: {}, Age: {}".format("Lily", 12)
列表:可以改變,有序
s.append('s')? 只能增加一個(gè)元素
s.extend(['a','b'])? 可以增加多個(gè)元素
s.pop() 默認(rèn)刪除最后一個(gè)元素
s.remove('a')? 刪除固定元素
s.sort()? 排序
s.reverse() 反轉(zhuǎn)
字典:無(wú)序,可變,字典的key不能相同
d = {'a':'b'}?
d['a']? ?或? d.get('a')? ?獲取鍵值
d.pop('a')? 刪除元素
d.clear()? 清除所有元素
元組:不可改變,有序
集合:可變,無(wú)序,通常用作去重,性能比列表好,一次搜索
3、哈希元素
通過(guò)計(jì)算得到元素的存儲(chǔ)地址(映射), 要求不同長(zhǎng)度的元素都能計(jì)算出地址,相同元素每次計(jì)算出的地址都一樣, 不同元素計(jì)算的地址必須唯一, 基于哈希的查找永遠(yuǎn)只需要一步操作, 計(jì)算一下得到元素相應(yīng)的地址, 不需要向序列那樣遍歷, 所以性能較好
可哈希元素: 為了保證每次計(jì)算出的地址相同, 要求元素長(zhǎng)度是固定的, 如數(shù)字/字符串/只包含數(shù)字,字符串的元組, 這些都是可哈希元素
4、例子:判斷一個(gè)字符串是不是ip地址
5、文件操作
文件打開(kāi)? f=open('t.text')? f.close() ////? ?f = with open('t.text') as f? ?
文件讀取? read()? ///? ? readline()??
文件保存? f.save()
文件寫(xiě)入? f.write()
文件指針移動(dòng)? f.seek()
二、python函數(shù)
1、必選與可選參數(shù)
可選參數(shù)必須放在后面,已有默認(rèn)值定義
2、位置參數(shù)和關(guān)鍵字參數(shù)
位置參數(shù):按照位置傳參
關(guān)鍵字參數(shù):直接指定參數(shù)值,不按順序
3、可變參數(shù)
*args 定義多個(gè)元素,里面存儲(chǔ)元組
**kwargs? 存儲(chǔ)多個(gè)元素,格式是字典
4、匿名函數(shù)lambda(主要為了定義簡(jiǎn)單函數(shù))
add = lamda x,y: x+y
5、高階函數(shù)
以函數(shù)為參數(shù)的函數(shù)稱(chēng)為高階函數(shù)
常用高階函數(shù)
map,使用一個(gè)函數(shù)面對(duì)序列進(jìn)行批量操作
filter,使用一個(gè)函數(shù)來(lái)過(guò)濾數(shù)據(jù)
reduce,使用一個(gè)函數(shù)對(duì)序列累計(jì)操作;這個(gè)函數(shù)的2個(gè)參數(shù)操作完作為下一輪的入?yún)?/p>
6、裝飾器
以函數(shù)為參數(shù)的函數(shù)稱(chēng)為高階函數(shù),以@為引用
7、函數(shù)嵌套
函數(shù)內(nèi)部定義函數(shù)
三、模塊和包
1、模塊
一個(gè)py文件為一個(gè)模塊
一個(gè)文件夾為一個(gè)包(有__init__文件)
2、常用系統(tǒng)模塊
os: 與操作系統(tǒng)交互
os.name/os.sep/os.linesep: 系統(tǒng)名稱(chēng)/系統(tǒng)路徑分隔符/系統(tǒng)換行符
os.makedir()/os.makedirs(): 建立目錄/建立多級(jí)目錄
os.getenv("PATH"): 獲取系統(tǒng)PATH環(huán)境變量的設(shè)置
os.curdir/os.prdir: 獲取當(dāng)前路徑/上級(jí)路徑
os.walk(): 遍歷文件夾及子文件
os.path.basename()/os.path.abspath()/os.path.dirname(): 文件名/文件絕對(duì)路徑/文件上級(jí)文件夾名
os.path.join()/os.path.split(): 按當(dāng)前系統(tǒng)分隔符(os.sep)組裝路徑/分割路徑
os.path.exists()/os.path.isfile()/os.path.isdir(): 判斷文件(文件夾)是否存在/是否文件/是否文件夾
sys: 與Python系統(tǒng)交互
sys.path: 系統(tǒng)路徑(搜索路徑)
sys.platform: 系統(tǒng)平臺(tái),可以用來(lái)判斷是python2還是3
sys.argv: py腳本接受的命令行參數(shù)
sys.stdin/sys.stdout/sys.stderr: 標(biāo)準(zhǔn)輸入/輸出/錯(cuò)誤