python**在執行過程中,遵循下面的基本原則:
1)普通語句,直接執行;
2)碰到函式,將函式體載入記憶體,並不直接執行
3)碰到類,執行類內部的普通語句,但是類的方法只載入,不執行
4)碰到if、for等控制語句,按相應控制流程執行
5)碰到@,break,continue等,按規定語法執行
6)碰到函式、方法呼叫等,轉而執行函式內部**,執行完畢繼續執行原有順序 **
其實順序執行,簡單來說就是**按照從上到下的順序來執行
main函式,程式入口
條件判斷是通過一條或多條判斷語句的執行結果(true或者false)來決定執行的代 碼塊。
在python語法中,使用if、elif和else三個關鍵字來進行條件判斷。
1)每個條件後面要使用冒號(:)作為判斷行的結尾,表示接下來是滿足條件(結 果為true)後要執行的語句塊。
2)除了if分支必須有,elif和else分支都可以根據情況省略。
3)使用縮進來劃分語句塊,相同縮排數的語句在一起組成乙個語句塊。
4)順序判斷每乙個分支,任何乙個分支首先被命中並執行,則其後面的所有分支 被忽略,直接跳過!
5)在python中沒有switch – case語句。
if/else語句可以巢狀,也就是把 if…elif…else 結構放在另外乙個 if…elif…else 結構中。
while迴圈還可以增加乙個else從句。當while迴圈正常執行完畢,會執行else語句。 注意else與while平級的縮排方式!
但如果是被break等機制強制提前終止的迴圈,不會執行else語句。
break強制結束迴圈,不執行else,不能寫在迴圈體之外
小心死迴圈
雖然與while一樣都是迴圈的關鍵字,但for迴圈通常用來遍歷可迭代的物件,如乙個 列表或者乙個字典。
ch_num = [『零』,『壹』,『貳』,『叄』,『肆』,『伍』,『陸』,『柒』,『捌』,『玖』] ch = [『園』,『拾』,『佰』,『仟』,『萬』]
for迴圈遍歷資料之前,可迭代的物件會自動呼叫_iter_()方法,將可迭代的物件變會迭代器,然後呼叫迭代器的_next_()取值
與break不同,continue語句用於跳過當前迴圈的剩餘部分**,直接開始下一輪迴圈。它不 會退出和終止迴圈,只是提前結束當前輪次的迴圈。同樣的,continue語句只能用在迴圈內。
九九乘法表
在python中,函式必須先定義後呼叫
呼叫函式時根據函式定義的引數位置來傳遞引數
函式呼叫,通過「鍵=值」形式加以指定。可以讓函式更加清晰,容易使用,同時也清除了引數的順序需求
關鍵字引數之間不分先後順序,但是位置引數必須寫在關鍵字引數的前面
也叫預設引數,用於定義函式,為函式提供預設值,呼叫函式時可不傳該預設引數的值(注意:所有位置引數必須出現在預設引數前,包括函式定義和呼叫)
不定長引數也叫可變引數,用於不確定呼叫的時候會傳遞多少個引數(不傳參也可以)的場景。此時用包裹(packing)位置引數,或者包裹關鍵字引數,來進行引數傳遞,會顯得非常方便
可變長度引數,可傳可不傳,但如果要傳就有制定的格式返回
*args 元組,包裹位置引數傳遞
**kwargs 字典,包裹關鍵字傳遞
返回值類似於函式執行結果
函式的返回值遇到return,會返回到函式呼叫的地方,return後面的**就不再執行了
當熱return返回多個值時,用逗號隔開,並且預設為元組;如果返回值格式寫成列表,字典,返回就是列表字典
help函式可檢視內建函式的說明文件
help(len),執行結果為len函式的說明文件
自定義函式:
再用help函式檢視自定義函式時,可調出自定義說明文件def 函式名(引數)
:"""說明文件的位置"""
**
條件判斷以及迴圈,都是沒有作用域說法的def
sum_num1
(a,b)
:"""
求和函式sum_num1
:param a:引數1
:param b:引數2
:return:返回值
"""return a + b
全域性變數寫在函式外面,區域性變數定義在函式內部,也只能作用於函式內部
當區域性變數在該函式體內沒有被定義的時候,只能去全域性作用域去找
當用內部變數用global去定義為全域性變數時,會重新賦值(前函式修改全域性變數後,會影響後函式)
函式作用域優先順序count =
10def
test3()
:global count
(count)
count =
5print
(count)
#執行結果為5
test3(
)
區域性》父級》全域性》系統模組
列印完會回到呼叫處def
test()
:print(5
)def
test2()
:print(3
):test(
)print(4
)def
test3()
:print(1
) test2(
)print(2
)test3(
)#輸出結果 1 3 5 4 2
呼叫自身函式,需要自設結束條件,不然相當於死迴圈,效率很低
能用遞迴函式做的,迴圈都可以做
使用lambda關鍵字來建立匿名函式(可以省去命名麻煩,少寫不少**)
filter函式用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表def
f(x)
:return x*x
(f(6))
# 36
f =lambda x:x*x
(f(5))
# 25
deffx
(i,j)
:return
lambda
:i*j
f = fx(6,
7)print
(f()
)# 42
infos =[,
,]infos.sort(key =
lambda x:x[
'age'])
# 按照name值排序
(infors)
reduce函式
def
return_num()
:return
100,
200num1,num2 = return_num(
(num1)
(num2)
列印結果
100200
dict1 =
a,b = dict1
#對字典進行拆包,取出來的是字典的key
(a)#name
(b)#age
(dict1[a]
)#tom
(dixt1[b]
)#18
C 學習之路 day6
day6知識點 1.在運算子過載時盡量遵循原有預設的規則,如以下 int a b c a b c 是錯誤的 而在運算子過載中 complex complex operator complex another complex c1 1,2 c2 2,3 c1 c2 c 是正確的,但不遵循預設語法規則 ...
Linux學習之路 day 6
一 時間日期類指令 1.find 從指定目錄向下遞迴地遍歷其各個子目錄,將滿足條件的檔案或目錄顯示在終端。語法 find 搜尋範圍 選項 2.locate 利用事先建立的locate資料庫 包含所有檔名稱及路徑 實現快速定位給定的檔案。無需遍歷整個檔案系統,查詢速度快,但需要定期更新locate時刻...
Python學習日記day6
字串型別及操作 知識點1 使用 m n k 根據步長對字串切片 m缺失表示至開頭,n缺失表示至結尾。k為步長,擷取的字串位置為m到n 1 知識點2 轉義符號 轉義符號後的字元為原始字元 知識點3 字串操作符 x y 連線兩個字串x和y n x 或 x n 複製n次字串x x in s 如果x是s的子...