nonlocal和global關鍵字

2021-09-26 03:07:43 字數 2527 閱讀 8041

1. python的函式的概述

函式定義

函式呼叫

2. python函式中引數的型別和返回值

形參和實參

形參型別:

普通引數: 實參的傳遞的順序和個數和形參一直

關鍵字引數: 指定傳遞的實參被特定形參接收

預設引數: 形參中設定當前引數的預設值

可以不傳遞設定了預設引數的實參

不定長引數:

乙個形參能夠接收任意多個實參

*args:普通普通收集引數的

**kwargs:關鍵字收集引數

實參型別:傳遞方式

普通實參

關鍵字實參

返回值:return關鍵字

返回資料結果

結束當前函式

return返回多個結果資料,資料型別tuple

過程式函式和非過程式函式

1.使用help()方法來檢視某乙個函式的說明和幫助文件

2. 函式名稱.__doc__: 返回說明文件

自定義函式文件:

格式:在定義函式後用'''三引號加上注釋(def 下一行)

優點:方便與後期的維護

提高**的可讀性

實際引數: 資料物件

物件的型別:

可變物件: list dict

不可變物件: number, tuple, string

引數的傳遞:

可變的物件:位址傳遞

不可變物件:值傳遞

全域性變數:

在內建哈數中,可以呼叫

在內建函式中,不可修改

區域性變數:

在內建函式中,可以呼叫

在函式外呼叫,使用global修飾後,即可訪問

1.變數定義的語法

2.識別符號命名規則

3.資料型別

4.常見的運算子

5.分支結構

6.迴圈結構

7.函式

效率: 總結 + 計畫

1.python中變數的作用域

2.python中函式的遞迴

3.python的閉包

1.global關鍵字

將區域性變數的作用域提公升全域性變數

1.變數的有效範圍向函式內部傳遞

2.如果其他函式內部沒有使用global,當前函式可以訪問外部的全域性變數,不能修改

3.在單簽的函式內部使用global修飾外部變數,在當前哈數 中可以修改

4.其他的哈數對於使用global修飾外部變數的函式來說,沒有提公升的效果

2.nonlocal 關鍵字

在內建函式(巢狀的函式中)使用

1.在局保護函式中的區域性使用

2.將當前哈數中的變數的作用域提公升到上一層,僅僅提公升一層,在此層中必要得宣告

3.允許和global一起使用

def

one():

deftwo()

: num=

"11"

#在函式two的區域性變數

defthree()

:nonlocal num

num=

"22"

# 將區域性函式three的變數num向上提公升,資料同步

deffour()

:global num

num=

"33"

# 將區域性函式four的變數提公升到全域性

num=

"00"

two(

)print

(num)

# 00

three(

)print

(num)

# 22

four(

)print

(num)

# 22

one(

)print

(num)

# 33

1.概念

在哈數的哈數體中呼叫該函式本省(自己呼叫自己)

2.案例

求階乘求fib數列

3.注意事項

1.查詢遞迴的規則,設定退出遞迴的條件

2.使用遞迴可能影響程式的執行效能(賊費效能)

3.使問題簡單化(盡量不要使用)

4.練習

1.使用遞迴求階乘

2.(擴充套件)求fib數列第n為的值?

1.概念

在乙個外部函式中定義乙個內部函式,函式的巢狀

內部函式使用了外部函式的變數,並且外部函式的返回值是內部函式的引用

外函式傳遞給內函式的資料,不會隨著外部函式執行完就沒了,就好像繫結在了內部函式中似的

2.修改內函式中的資料

需要使用nonlocal進行修飾

3.閉包的優點

提高**的復用性

對資料進行儲存和封裝,提高資料安全性

global和nonlocal的用法

1 global關鍵字用來在函式或其他區域性作用域中使用全域性變數。但是如果不修改全域性變數也可以不使用global關鍵字,global適用於函式內部修改全域性變數的值 2 nonlocal關鍵字用來在函式或其他作用域中使用外層 非全域性 變數。nonlocal適用於巢狀函式中內部函式修改外部變數的...

global和nonlocal作用域

python中的變數引用順序為 當前作用域區域性變數 外層作用域變數 當前模組中的全域性變數 python內建變數 global關鍵字的作用就是用來在函式或者其他區域性作用域中使用全域性變數 例如 a 0 這裡報錯原因是因為剛開始在第一行就定義了乙個全域性變數a 而之後我們嘗試修改了這個a的值,此時...

函式中的global和nonlocal

區域性作用域對全域性作用域的變數 此變數只能是不可變的資料型別 只能進行引用,而不能進行改變,只要改變就會報錯,但是有些時候,我們程式中會遇到區域性作用域去改變全域性作用域的一些變數的需求,這怎麼做呢?這就得用到關鍵字global global第乙個功能 在區域性作用域中可以更改全域性作用域的變數。...