1.函數
全局變量:定義在函數外部的變量,能夠在所有的函數中被使用
局部變量:隻在函數的内部定義的變量,隻作用于函數的内部,是以允許存在相同變量名的局部變量
全局變量和局部變量同名時,就認為是定義了一個局部變量
在函數内部修改全局變量:使用關鍵字global聲明局部變量,然後在函數内部進行修改後即是對全局變量進行修改
2.函數傳回值
如果函數的return後面跟的是多個資料,則預設是元組
3.預設參數、不定長參數
在函數中,如果預設參數的值沒有傳入,則調用預設值;在形參中有預設值的參數,稱為預設參數,帶有預設值的參數一定要在最後面
在函數中,有時需要傳入大量的資料,需要處理比聲明時更多的參數,這些參數稱為不定長參數,聲明時也不會命名
在形參中,加入*args、**kwargs來接收實參傳遞的不定長參數,*args會存放未命名的參數,*args是元組
**kwargs接收存放實參傳遞的命名的參數,**kwargs是字典
在形參中,預設參數的位置在*args的後面
4.拆包
對傳回對個值時,需要作出拆包操作,那麼拆包的時候,需要拆的資料的個數要與變量的個數相同,否則程式會異常
除了對元組拆包之外,還可以對清單、字典等拆包
5.引用
在函數中,變量是可以被調用的,值是靠引用來傳遞的。可以使用id()來判斷兩個變量是否是同一個值的引用,id()的傳回值是一個類似記憶體的位址辨別
6.可變不可變類型
所謂可變類型與不可變類型是指:資料能夠直接進行修改,如果能直接修改那麼就是可變,否則是不可變
可變類型有: 清單、字典、集合
不可變類型有: 數字、字元串、元組
7.lambda函數
lanbda函數,又被稱為匿名函數,雖然在語言形式上看起來簡便。但是對于剛接觸的初學者來說閱讀起來并不容易。
例子:lambda a: a**2 , 2
按照通俗的函數寫法可以如下:
def square(a):
return a**2
a=square(2)
好處:
1. 不需要定義函數名稱(臨時函數)
2. 隻做簡單運算,并傳回值,沒有複雜的函數體
8.map()
map()函數并不多見,但是還是有必要了解一下。map(a,b) 中的a一般是作為一個函數,而b則是作為一個變量類型容器,比如清單,整型等。
例子:map(lambda a: a**2 , [1, 3, 4, 6])
結果:[1, 9, 16, 36]
作用即對函數中的可疊代的變量類型進行全覆寫的操作
9.遞歸函數
遞歸函數就是在函數内部調用自己本身,稱為遞歸函數;最典型的遞歸操作就是斐波那契數列
10.清單推導式
清單推導式,就是指的輕量級循環建立清單
基本方式:a=[x for x in range(0,5) ] --> a = [0,1,2,3,4]
在循環中使用if: a = [x for x in range(0,5) if x%2==0] --> a=[0,2,4]
在兩個循環中使用:a = [(x,y) for x in range(1,3) for y in range(3) ] --> a = [(1,0),(2,0),(1,1),(2,1),(1,2),(2,2)]
同理,也可以三個for循環
例子:請寫出一段 Python 代碼實作分組一個 list 裡面的元素,比如 [1,2,3,...100]變成 [[1,2,3],[4,5,6]....]
a = [x for x in range(1,101)]
b = [a[x:x+3] for x in range(0,len(a),3)]
11.set、list、tuple
set是集合類型
set、list、tuple之間可以互相轉換
使用set,可以快速的完成對list中的元素去重複的功能