本節主要內容:
1. 函式引數--動態傳參
2. 命名空間, 區域性命名空間, 全域性命名空間, 作⽤域, 載入順序.
3. 函式的巢狀
4. gloabal, nonlocal關鍵字
⼀. 函式引數--動態傳參
之前我們說過了傳參, 如果我們需要給⼀個函式傳參, ⽽引數⼜是不確定的. 或者我給⼀個
函式傳很多引數, 我的形參就要寫很多, 很⿇煩, 怎麼辦呢. 我們可以考慮使⽤動態引數.
形參的第三種: 動態引數
動態引數分成兩種
:::1--->>>動態接收位置引數
首先,先回顧依稀位置引數:
注意:動態傳參的過程中,動態引數必須在位置引數後面
錯誤例項:
預設值引數:
這時候,我們發現,如果不給出關鍵字傳參,所有的預設值引數都是生效的
總結:引數順序---->>>>位置引數-----動態引數------預設值引數
2.動態接收關鍵字引數:
最終順序:
位置引數------>*args-------->預設值引數--------------->**kwargs
二:命名空間:
在python直譯器開始執⾏之後, 就會在記憶體中開闢⼀個空間, 每當遇到⼀個變數的時候, 就
把變數名和值之間的關係記錄下來, 但是當遇到函式定義的時候, 直譯器只是把函式名讀入內
存, 表⽰這個函式存在了, ⾄於函式內部的變數和邏輯, 直譯器是不關⼼的. 也就是說⼀開始
的時候函式只是載入進來, 僅此⽽已, 只有當函式被調⽤和訪問的時候, 直譯器才會根據函式
內部宣告的變數來進⾏開闢變數的內部空間. 隨著函式執⾏完畢, 這些函式內部變數佔⽤的空
間也會隨著函式執⾏完畢⽽被清空.
載入順序:
內建命名空間-------->>>>全域性命名空間--------->>>>>區域性命名空間(函式被執行的時候)
取值順序:
區域性命名空間-------->>>>>>全域性命名空間---------->>>>內建命名空間
作⽤域: 作⽤域就是作⽤範圍, 按照⽣效範圍來看分為 全域性作⽤域和區域性作⽤域
全域性作⽤域: 包含內建命名空間和全域性命名空間. 在整個⽂件的任何位置都可以使⽤(遵循
從上到下逐⾏執⾏).
區域性作⽤域: 在函式內部可以使⽤.
作⽤域命名空間:
1. 全域性作⽤域: 全域性命名空間 + 內建命名空間
2. 區域性作⽤域: 區域性命名空間
三,函式的巢狀
1. 只要遇⻅了()就是函式的調⽤. 如果沒有()就不是函式的調⽤
2. 函式的執⾏順序
四. 關鍵字global和nonlocal
⾸先我們寫這樣⼀個**, ⾸先在全域性宣告⼀個變數, 然後再區域性調⽤這個變數, 並改變這
個變數的值
nonlocal 表⽰在區域性作⽤域中, 調⽤⽗級命名空間中的變數.
這個global和nonlocal比較繞 需要多理解一下
python基礎 高階函式
把函式作為引數傳入,這樣的函式稱為高階函式,高階函式是函式式程式設計的體現。函式式程式設計就是指這種高度抽象的程式設計正規化。在python中,abs 函式可以完成對數字求絕對值計算。abs 10 10round 函式可以完成對數字的四捨五入計算。round 1.2 1 round 1.9 2def...
Python基礎10 函式
直接貼筆記 usr bin env python coding utf 8 定義函式時要寫成良好的注釋習慣 通常用三個單引號 deftest x 計算乙個y 2 x 1 param x 整型 return 整型 y 2 x 1 returny print test print test 4 本次課參...
10 高階函式
乙個最簡單的高階函式 def add x,y,f return f x f y 當我們呼叫add 5,6,abs 時,引數x,y和f分別接收 5,6和abs,根據函式定義,我們可以推導計算過程為 x 5 y 6 f abs f x f y abs 5 abs 6 11 return 11 add 5...