











python作者吉多(鬼叔)
第一個python解釋器誕生于1991年
python目前存在兩大版本,python2.7 python3.6主流版本python3
python簡單 易學 開源 擴展性強 有豐富的庫
python可以用來做web網(wǎng)站、網(wǎng)絡爬蟲、操作系統(tǒng)管理
python基礎語法
注釋:? ? # 單行注釋.? ? ? ? ? ? """多行注釋""",一對三引號
? ? ? ? 注釋快捷鍵 ctrl + /
變量
變量名必須由字母、下劃線、數(shù)字組成,且數(shù)字不能開頭;python中的標識符是區(qū)分大小寫的;變量名一般用小寫加下劃線組成;不能和關鍵字和已有的名字沖突;變量名一定要有意義,提升代碼可讀性。
變量是用來臨時存儲程序運行中所需要的一些數(shù)據(jù)的
在現(xiàn)實生活中,數(shù)據(jù)有多種類型,文本類型,數(shù)值類型的,變量類型約定了變量之間的計算規(guī)則。
int? integer(整數(shù))? float(浮點數(shù) 小數(shù))? ? str string(字符串類型 文本)? bool(布爾類型)
python里面定義變量不需要指定類型,根據(jù)賦的值來推斷變量類型
字符串和數(shù)字的運算規(guī)則:數(shù)字和數(shù)字之間可以進行所有的運算;數(shù)字和字符串之間只能進行乘法運算;字符串和字符串之間只能進行加法運算。
變量的輸入和輸出 i/o input? output
標準i/o標準輸入和輸出 從鍵盤讀 往屏幕寫
文件i/o 從文件讀,往文件寫
網(wǎng)絡i/o
\n表示換行符,和字符 a本質(zhì)上是一樣的。
變量的類型轉(zhuǎn)換:
1、int(val),將變量val轉(zhuǎn)換為int類型
2、float(val),將變量val轉(zhuǎn)換為float類型
3、str(val),將變量val轉(zhuǎn)換為str類型
bug,臭蟲
1、bug會導致程序崩潰,終止運行。語法錯誤;對語法理解不到位;手誤
2、bug會導致程序的執(zhí)行結果不是預期
都必須能夠定位錯誤,找出錯誤原因,更正程序。碰到的每個問題都需要記錄。
if語句。? ? if elif? else
==判斷兩個數(shù)值是否相等,=賦值
邏輯運算符:and or not
多個條件之間的關系 and or not,and和or用于連接多個條件,表示多個條件之間的關系
random 隨機,random.randint(1,100)表示隨機取1-100的整數(shù) 包含1和100
獲取1-100隨機數(shù):import random? ? ? ? ? print(random.randint(1, 100))
循環(huán)語句while:重復執(zhí)行一行或多行代碼
continue:當執(zhí)行continue,continue后面的代碼不再執(zhí)行,直接回到while后面的條件重新判斷本次循環(huán),不能退出循環(huán)。只有在循環(huán)中才能夠?qū)慶ontinue
break:break后面的代碼也不執(zhí)行,并且馬上終止循環(huán)
函數(shù)
1、函數(shù)就是實現(xiàn)某一個功能的一段代碼。
為什么要使用函數(shù):減少代碼的冗余,減少維護量,功能的封裝,降低學習成本,提升開發(fā)速度
python中函數(shù)用def來定義函數(shù)? define
函數(shù)定義不會自動執(zhí)行,需要調(diào)用才能執(zhí)行
函數(shù)內(nèi)定義的變量,在函數(shù)外部不能夠使用
2、在編寫的函數(shù)的時候如何確定我的函數(shù)應該有幾個參數(shù)?
? ? ? ? 函數(shù)有沒有參數(shù)、有幾個參數(shù)由需求決定,由函數(shù)的要實現(xiàn)的功能來決定。
3、函數(shù)的返回值:
? ? ? ? 使用調(diào)試模式:1、先加斷點 2啟動調(diào)試模式
4、none 表示什么都沒有,也沒有類型
5、print函數(shù)和return語句的區(qū)別?
? ? ? ? 1、print是一個函數(shù),只是一個功能,return是一個語句,和def if 等類似
? ? ? ? 2、print會將數(shù)據(jù)打印到屏幕上,return會將數(shù)據(jù)返回到程序中,給函數(shù)的調(diào)用者
6、函數(shù)的返回值到底應該有沒有?
? ? ? ? 由你要編寫的函數(shù)功能來決定。
7、調(diào)用函數(shù)時,即傳遞位置參數(shù),又傳遞關鍵字參數(shù),此時需注意:*****位置參數(shù)一定要在關鍵字參數(shù)的前面*****
8、return關鍵字:
? ? ? ? 當函數(shù)執(zhí)行到return的時候,就會馬上終止韓式執(zhí)行
? ? ? ? 函數(shù)中可以出現(xiàn)多個return,但有且只有一個return會執(zhí)行
? ? ? ? return后面可以不跟值,return單獨使用等價于return none
判斷一個東西是不是我們要的類型用isinstance
? ? ? ? >>>a = 10
? ? ? ? >>>isinstance(a, int)
? ? ? ? ture
9、# 再給函數(shù)形參設置默認參數(shù)時,并不會給所有的參數(shù)都設置默認值
# 注意點:如果某一個位置形參設置了默認參數(shù),那么該位置之后的所有參數(shù)都必須設置默認參數(shù)
10、局部變量和全局變量
? ? ? ? 局部變量:函數(shù)內(nèi)部定義的變量,只在定義的函數(shù)內(nèi)可以用
? ? ? ? 全局變量:函數(shù)外部定義的變量,可被當前python文件內(nèi)的所有函數(shù)可用
11、變量:就近原則;變量要先定義再使用;
作用域:表示變量能夠使用的范圍
12、函數(shù)文檔相當于函數(shù)注釋,按f1(mac)或者ctrl+q(windows)可以查看函數(shù)功能說明
docstring
13、單一職責原則:一個函數(shù)只負責一個事情,職責過多會把職責混合在一起,一個職責的變化可能會影響其他職責的能力
容器
優(yōu)勢:一個容器變量可存儲多個元素,減少了變量的定義。本質(zhì)上可以統(tǒng)一管理 方便操作。
分類:序列式容器 非序列式容器
序列式容器的索引都是從0開始的
#字符串通過點的方式調(diào)用專屬的函數(shù)。? ? 某某.replace('還','換',1)
字符串特點:
? ? ? ? ? ? a、字符串一旦定義不允許修改
? ? ? ? ? ? b、字符串容器中的元素都是字符類型的
列表:
字符串中的元素不能修改,而且元素類型單一,而列表中的元素可以修改,并且可以存放多種類型的元素
列表支持:位置刪除(尾部刪除、指定位置刪除)、 值刪除。
????????????對于列表而言 尾部效率高一些,不需要移動元素;指定位置插入效率較低。位置刪除在尾部刪除效率比較高 不需要移動元素
列表缺點:在指定位置插入和刪除元素,會造成數(shù)據(jù)元素的移動,效率較低;根據(jù)關鍵字去查找數(shù)據(jù)的話,效率比較低
列表優(yōu)點:根據(jù)索引查找元素效率高;尾部插入和刪除元素效率較高。
insert 在指定位置插入
append 在尾部插入
pop 刪除尾部元素或者刪除指定位置元素
remove 刪除指定值的元素
clear 清空列表
sort 對列表中的元素進行排序,默認升序(從小到大),需要指定reverse=true,可以實現(xiàn)將序排列
reverse 對列表中的元素進行逆序
index 根據(jù)值查找某個元素,并返回該元素在列表中的索引,如果查找失敗,會報錯,終止程序運行。
extend 將一個列表中的所有元素追加到當前列表的尾部。
元組 tuple
元組 可以從語法的層面來限制數(shù)據(jù)的意外修改;元祖使用小括號來定義
# 注意:如果元組中只有一個元素的話,需要在元素后添加逗號
元組是序列式容器,支持索引、切片操作。元組比列表更節(jié)省時間
字典
字典的查找效率比較高,但是比較占內(nèi)存。
注意:鍵一般是唯一的,如果重復最后的一個鍵值對會替換前面的,值不需要唯一。
字典的鍵不能重復,值是可以重復
字典是非序列式容器,不支持索引,也不支持切片
文件
文件打開分為兩種:文本模式、二進制模式
r w a ? ?rb ? wb ? ab
mac操作系統(tǒng):djsfoienwfiuhfjbjjd\r
Windows:djaihriguserjslkndfcdvkj\r\n
Linux 操作系統(tǒng):djafhdkfjsfkjksj\n
程序:hello world
? ? ? ? -->windows ?hello world\r\n
? ? ? ? -->Mac. ??hello world\r
? ? ? ? -->linux hello world\n
打開文件用的文本模式,會進行換行符的轉(zhuǎn)換
打開文件用的是二進制模式的話,不會進行換行符轉(zhuǎn)換
文件本質(zhì)上都是以二進制方式存儲在磁盤上的。