Python函式學習 作用域與巢狀函式

2021-09-25 00:25:20 字數 3488 閱讀 2007

name = "

alex li"#

全域性變數

def change_name(name):

print("

before change:

",name) #

函式內部變數從內向外找,如果內部不存在,會找上一層#輸出

#before change: alex li

name = "

金角大王,乙個有tesla的男人

" #區域性變數

print("

after change

", name)

#輸出#after change 金角大王,乙個有tesla的男人

change_name(name)

print("

在外面看看name改了麼?

",name) #

預設區域性變數不能修改全域性變數的值#輸出

#在外面看看name改了麼? alex li

不用傳name 值到函式裡,也可以在函式裡呼叫外面的變數

name = "

alex li

"def

change_name():

name = "

金角大王,乙個有tesla的男人

"print("

after change

", name)

#輸出#after change 金角大王,乙個有tesla的男人

change_name()

print("

在外面看看name改了麼?

", name )#輸出

#在外面看看name改了麼? alex li

作用域

python中函式就是乙個作用域,區域性變數放置在其作用域中。

如何在函式裡修改全域性變數?global

name = "

alex li

"def

change_name():

global name #

宣告全域性變數

name = "

alex 又名 金角大王,路飛學城講師

"print("

after change

", name)

#輸出#after change alex 又名 金角大王,路飛學城講師

change_name()

print("

在外面看看name改了麼?

", name)

"""global name的作用就是要在函式裡宣告全域性變數name ,意味著最上面的name = "alex li"即使不寫,程式最後面的print也可以列印name

"""在實踐中global一般情況下最好不要使用,在多人協作時容易產生錯誤

在函式裡面還可以定義函式,可以巢狀多層,執行需要被呼叫

name = "

alex

"def

change_name():

name = "

alex2

"def

change_name2():

name = "

alex3

"print("

第3層列印

", name)

change_name2()

#呼叫內層函式 #輸出

#第3層列印 alex3

print("

第2層列印

", name)

#輸出#第2層列印 alex2

change_name()

print("

最外層列印

", name)#輸出

#最外層列印 alex

巢狀函式舉例1

巢狀函式舉例2

巢狀函式舉例3

巢狀函式舉例4

巢狀函式舉例5

巢狀函式舉例6

變數可以指向函式,函式的引數能接收變數,那麼乙個函式就可以接收另乙個函式作為引數,這種函式就稱之為高階函式。

變數可以指向函式

以python內建的求絕對值的函式abs()為例,呼叫該函式用以下**

>>> abs(-1)

1

但是,如果只寫abs呢?

>>>abs

in function abs>

如果把函式本身賦值給變數呢?

>>> f =abs

>>>f

in function abs>

總結:函式本身也可以賦值給變數,即:變數可以指向函式

驗證:

f =abs

print(f(-10))

#輸出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

"""print(add(-5, 6, abs))

#輸出11

python學習 作用域

出自 x int 2.9 內建作用域 g count 0 全域性作用域 defouter o count 1 閉包函式外的函式中 definner i count 2 區域性作用域datalist 1,2,3,4 for data in datalist a 1 for迴圈中的變數a b data ...

python函式學習與變數作用域

學習函式規則 任何入引數和自變數必須放在圓括號裡,圓括號之間可以用於定義引數 return 表示式 結束函式,選擇性地返回乙個值給呼叫方。不帶表示式的return相當於返回 none 語法 def 函式名稱 引數 函式體呼叫 函式名稱 示例 defhello print hello world he...

python學習 函式 作用域

定義函式 def do nothing pass 呼叫函式 do nothing none 是python中的乙個特殊的值,它和false,空值是有區別的。注意函式引數的傳入。使用 收集位置引數 當引數被用在函式內部時,星號將一組可變數量的位置引數集合成引數值的元組。def print args a...