python3基礎 09 函式

2021-08-18 02:55:19 字數 2234 閱讀 9176

python 中,程式的變數並不是在哪個位置都可以訪問的,訪問許可權決定於這個變數是在**賦值的。

變數的作用域決定了在哪一部分程式可以訪問哪個特定的變數名稱。python的作用域一共有4種,分別是:

以 l –> e –> g –>b 的規則查詢,即:在區域性找不到,便會去區域性外的區域性找(例如閉包),再找不到就會去全域性找,再者去內建中找。

x 

=int

(2.9

)# 內建作用域

g_count =0

# 全域性作用域

defouter

():o_count =1

# 閉包函式外的函式中

definner

():i_count =2

# 區域性作用域

python 中只有模組(module),類(class)以及函式(def、lambda)才會引入新的作用域,其它的**塊(如 if/elif/else/、try/except、for/while等)是不會引入新的作用域的,也就是說這些語句內定義的變數,外部也可以訪問,如下**:

>>>

iftrue

:...

msg

='i am from runoob'

...>>>

msg'i am from runoob'

>>>

例項中 msg 變數定義在 if 語句塊中,但外部還是可以訪問的。

如果將 msg 定義在函式中,則它就是區域性變數,外部不能訪問:

>>>

deftest

():...

msg_inner

='i am from runoob'

...>>>

msg_inner

traceback

(most recent call

last

):file"",

line 1,

innameerror

:name

'msg_inner'

isnot

defined

>>>

從報錯的資訊上看,說明了 msg_inner 未定義,無法使用,因為它是區域性變數,只有在函式內可以使用。

對於變數作用域,變數的訪問以 l(local) –> e(enclosing) –> g(global) –>b(built-in) 的規則查詢,即:在區域性找不到,便會去區域性外的區域性找(例如閉包),再找不到就會去全域性找,再者去內建中找。

觀察以下幾個例子,均從內部函式輸出變數 x:

1. 區域性作用域

x 

=int

(3.3)x

=0defouter

():x =1

definner

():x =2

print(x

)inner

()outer

()

執行結果為 2,因為此時直接在函式 inner 內部找到了變數 x。

2.閉包函式外的函式中

x 

=int

(3.3)x

=0defouter

():x =1

definner

():i =2

print(x

)inner

()outer

()

執行結果為 1,因為在內部函式 inner 中找不到變數 x,繼續去區域性外的區域性——函式 outer 中找,這時找到了,輸出 1。

3.全域性作用域

x 

=int

(3.3)x

=0defouter

():o =1

definner

():i =2

print(x

)inner

()outer

()

執行結果為 0,在區域性(inner函式)、區域性的區域性(outer函式)都沒找到變數 x,於是訪問全域性變數,此時找到了並輸出。

4. 內建作用域

x 

=int

(3.3)g

=0defouter

():o =1

definner

():i =2

print(x

)inner

()outer

()

執行結果為 3,在區域性(inner函式)、區域性的區域性(outer函式)以及全域性變數中都沒有找到變數x,於是訪問內建變數,此時找到了並輸出。

python 3 基礎 print 函式

最白話的語言來和大家一起學習python print 是python中最常用的輸出方式 待輸出資料 可以是字串,整數,浮點數,字典,元組,列表等 print 一起學python 輸出字串 一起學python print 1412 輸出數字 1412 str string1 print str 輸出變...

Python3學習筆記09 匿名函式lamdba

關鍵字lambda表示匿名函式,冒號前面,面的x表示函式引數。匿名函式有個限制,就是只能由乙個表示式,不用寫return,返回值就是該表示式的結果。匿名函式有個好處,因為函式沒有名字,不必擔心函式名稱衝突。此外,匿名函式也是乙個函式物件,也可以把匿名函式賦值給乙個變數,再利用變數來呼叫該函式 f l...

python3基礎 常用內建函式

目錄 input函式 lambda 函式 匿名函式 repr 函式 type函式 判斷變數型別 map函式 filter函式 reduce函式 捕獲的是最原始的輸入,將所 有的輸入按照字串進行處理,並返回乙個字串,不包含回車。語法 lambda arg1 agr2,argn expression 示...