day11 函式高階 from 路飛學城

2021-10-16 12:58:39 字數 1465 閱讀 3290

python引數的這一特性有兩個好處:

當然,如果你不想讓外部的變數和函式內部引數的變數一致,也可以選擇將外部值拷貝(利用deepcopy)乙份,再傳給函式。

def

func()

: data =[11

,22,33

]return data

v1 = func(

)print

(v1)

# [11,22,33]

以上**的執行過程:

所以,最終v1指向的函式內部建立的那塊記憶體位址。

python 在建立函式時,如果引數中有預設值,python會在函式內部創造一塊區域(id)用來維護這個預設值,所以:

定義和使用函式時用*和**表示,在形參位和實參位都可以使用,一般使用固定搭配*args**kwargs使用,在使用時,注意以下幾點:

函式名其實就是乙個變數,只不過這個變數代指的是函式而已

函式必須先定義,才能被呼叫(解釋形語言)

既然函式是乙個變數,也就意味著在列表等元素中也可以把函式當做元素,並且函式可被雜湊,所以函式名可以當做集合的元素或者字典的鍵。

函式名其實就是乙個變數,代指某個函式,所以他可以當做函式的引數與返回值
可以理解為一塊空間,這塊空間的資料是可以共享的
python以函式為作用域,所以在函式內建立的所有資料,可以在此函式中被使用,但是無法在其他函式中使用,並且其他函式也無法使用此函式中的資料。

python中以函式為作用域,函式的作用域其實是乙個區域性作用域。

預設情況下,區域性變數只能對全域性變數進行讀取修改內部元素(可變型別),但是無法對全域性變數進行重新賦值,而:

利用global關鍵字可以對全域性變數進行重新賦值
1、函式引數傳遞的是記憶體位址

2、函式的返回值也是記憶體位址(函式執行完畢後,其內部的所有變數都會被銷毀,引用計數器變為0時,資料也銷毀)

3、當函式的引數有預設值預設值是可變型別函式內部會修改預設值(有坑警告)

4、定義函式寫形式引數時可以用***,執行函式時也可以使用。

5、函式名也是變數,可做列表、字典、集合等元素(可雜湊)

6、函式名可以背重新賦值,也可以做另外乙個函式的引數和返回值

7、print只是列印,return是將函式的執行結果返還給呼叫者

8、python以函式為作用域

9、在區域性作用域中尋找某資料時,優先使用自己的,自己沒有再去上級作用域中找

10、基於global關鍵字可以再區域性作用域中實現對全域性作用域中的變數(全域性變數)重新賦值。

day11 函式高階

根據變數作用域 能使用的範圍 的不同將變數分為 全域性變數和區域性變數 1.全域性變數 沒有定義在函式裡面或者類裡面的變數都是全域性變數 全域性變數的作用域是從定義開始到程式結束 全域性變數可以在函式裡直接用 2.區域性變數 定義在函式裡面的變數就是區域性變數。區域性變數的作用域是從定義開始到函式結...

day11函式的高階

1 什麼是返回值 從函式內容傳遞到函式外部的資料就是函式的返回值 2 什麼時候函式需要返回值 新手 如果實現函式的功能產生了新的資料,那麼這個函式就需要通過返回值把新產生的資料返回 3 怎麼將資料返回 def sum1 a,b return a b s sum1 10,20 print s 30 d...

Python練習 高階函式 day11

1,寫函式,傳入n個數,返回字典 例如 min max 2,5,7,8,4 返回 此題用到max min 內建函式 1.1.作業1,寫函式,傳入n個數,返回字典 例如 min max 2,5,7,8,4 返回 此題用到max min 內建函式 2,寫函式,傳入乙個引數n,返回n的階乘 例如 cal ...