天天看點

Python基礎(六)

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中的元素去重複的功能