函數基礎小結

1、定義函數

只檢測語法,不執行代碼函數

2、函數定義的三種方式

  1. 有參函數
  2. 無參函數
  3. 空函數

3、調用函數

def f1():
    return 123

f = f1()
f1()*2
lis = [f1(),2]

4、函數的返回值

return返回返回值,函數遇到return會終止,return能夠返回任意數據類型的值,同時也能夠返回多個值code

函數只有在調用階段纔會接收返回值對象

5、函數的參數

5.1 形參

接收實參,具備描述意義,沒有具體值作用域

5.2 實參

具備具體的值,傳參給形參it

  1. 位置形參:從左到右一個一個接收位置實參
  2. 位置實參:從左到右一個一個傳給形參
  3. 關鍵字實參:根據形參名傳參
  4. 默認形參:給形參一個默認值,若是實參不對該形參傳值,則使用默認值;反之,使用實參傳的值
  • 關鍵字實參必須得在位置實參後面,默認形參也必須在位置形參後面
  • 一個形參只能接收一個值
def f1(x,y):
    pass

f1(1,x=2)  # 報錯

6、可變長參數

  1. *形參:接收多餘的位置實參,以元組的方式存儲
  2. *實參:把元組打散成一個個位置實參,而後傳給形參(不推薦使用,只作瞭解)
  3. **形參:接收多餘的關鍵字實參,以字典的方式存儲
  4. **實參:把字典打散稱一個個關鍵字實參,而後傳給形參(不推薦使用,只作瞭解)
  • 牢記:
def f1(*args,**kwargs):
    pass

# f1能夠接收全部的參數
f1(1,1,2,3,3,4,5,x=2,y=5,a=8)

7、函數對象

def f1():
    pass
  1. 引用f=f1
  2. 做爲函數返回值return f1
  3. 做爲函數參數傳入f2(f1)
  4. 容器元素lis=[f1]

8、函數的嵌套

def f1():
    def f2():
        pass
    
f2()  # 報錯

9、名稱空間與做用域

  1. 內置名稱空間:存放內置的名字,如len/eval/enumerate/bytes/max/min/sorted/map/filter....
  2. 全局名稱空間:除了內置與局部,其餘的名字都存放在全局名稱空間內
  3. 局部名稱空間:函數內部的名字都是局部名稱空間,不一樣函數內部的名字互不干涉
  • 查找順序:從當前開始往上尋找,若是當前是局部名稱空間,查找順序爲:局部--》全局--》內置
  • 執行順序:先內置(Python解釋器啓動的時候纔會生成)--》全局(文件執行的時候纔會生成)--》局部(函數調用的時候纔會生成)

做用域:全局名稱空間和局部名稱空間中可能會存在名字相同的變量,可是這兩個變量互不影響。只針對不可變數據類型,對於可變數據類型除外,儘可能不要使用可變類型的這個特性,若是真的使用,能夠不一樣的函數定義不一樣的變量出來。class

相關文章
相關標籤/搜索