python 基礎篇 10 函式高階

2022-02-08 19:29:53 字數 2818 閱讀 2899

本節主要內容:

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...