day10 函式高階

2021-10-25 17:52:02 字數 4819 閱讀 4027

1.1什麼是返回值

返回值就是從函式內部傳遞到函式外部的資料(預設情況下函式內部產生的新資料,在函式外部不能使用)

1.2怎麼確定函式返回值

1)python中每個函式都有返回值,預設情況下是none,返回值是什麼就看執行函式體的時候遇到的return關鍵字後面的資料是什麼;

如果沒有遇到return,返回值就是none。

(希望作為返回值的資料就在函式結束的時候放在return後面)

2)return的作用

遇到return會確定函式返回值並且直接提前結束函式

1.3怎麼在函式外部獲取返回值

函式呼叫表示式的值就是函式的返回值,所以在函式的外部獲取函式呼叫表示式的值就是在獲取函式的返回值。

1)沒有返回值

def

func1

(a, b)

:print

(a + b)

result = func1(10,

20)print

(f'result:'

)# result:none

2)有乙個返回值

def

func2

(a, b)

:return a + b

print

(a + b)

result = func2(10,

20)print

(result)

# 30

3)有多個返回值的函式

def

func3

(a, b)

:return a + b, a * b

result3 = func3(11,

22)print

(result3)

# (33, 242)

re1, re2 = func3(10,

20)print

(re1, re2)

# 30 200

re1, re2 =[1

,2]print

(re1, re2)

# 1 2

練習:定義乙個函式,可以求多個數的和以及平均值

def

sum_mean

(*num):if

not num:

return

none

,none

return

sum(num)

, sum1/

len(num)

sum1, mean = sum_mean(

)print

(sum1, mean)

補充*的作用:

1)打包

a,

*b =1,

2,3,

4,5

2)解包

c =[10

,20,30

]print

(*c)

# 10 20 30

print

(c)# [10, 20, 30]

2.1什麼是全域性變數和區域性變數

按照變數的作用域不同將變數分為全域性和區域性兩種

1)全域性變數

定義在函式和類外面的變數就是全域性變數

作用域:從定義開始到檔案結束的任意位置都可以使用

a全域性變數

a =

100for x in

range(3

):print

(a)def

func1()

:print

(a)

b,c全域性變數

for b in

range(3

):c =

'hello'

print

(b)print

(b)def

func2()

:print

(b)print

(c)func2(

)

2)區域性變數

定義在函式內部的變數就是區域性變數

作用域:從定義開始到函式結束

def

func3()

: d =

1823

print

(d)

補充:函式呼叫過程記憶體的變化

每次呼叫乙個函式的時候系統會自動在棧區間開闢乙個臨時的記憶體空間,用來儲存在函式中產生的資料(定義的變數),當函式呼叫結束後這塊記憶體會自動釋放(銷毀)

函式形參也是區域性變數

2.2 global和nonlocal

1)global

只能在函式體中使用;功能:在函式中定義全域性變數

global 變數名

變數名 = 資料

2)nonlocal

功能:在區域性的區域性中修改乙個區域性變數的值

nonlocal 變數名

變數名 = 資料

m =

100n =

10def

func5()

:# 在定義乙個新的區域性變數m

m =200print

(f'函式內部m:'

)global n

n =100# n是全域性變數,任意位置都可以

global p

p =300func5(

)print

(f'函式外部m:'

)print

(f'函式內部'

)

2)nonlocal

def

func6()

: t =

100def

func7()

:nonlocal t

t =200print

(f'函式中的函式t:'

) func7(

)print

(f'函式中的t:'

)func6(

)# 沒加nonlocal 函式中的函式t:200 函式中的t:100

func6(

)# 函式中的函式t:200 函式中的t:200

3.1匿名函式

匿名函式的本質就是函式;在定義的時候不需要函式名(一般情況下不會使用函式名,在呼叫實參高階函式的時候用的比較多)

語法:函式名 = lambda 形參列表:返回值

相當於:

def (形參列表):

return 返回值

sum1 =

lambda num1, num2:

print

(num1 + num2)

sum1(10,

20)

max1 =

lambda num1, num2: num1 if num1 > num2 else num2

a = max1(10,

20)print

(a)

4.1函式就是變數

python中定義函式其實就是在定義乙個型別是function的變數,其中函式名就是變數名

普通變數能做的事情函式都能做

1)函式就是變數

e =

lambda x:2*x

print

(type

(e))

#

2)變數能做的函式都可以做

x =

100def

func1

(n1, n2)

:return n1*n2

a.變數可以給另外乙個變數賦值

y = x

print

(y+2

)z = func1

print

(type

(z))

print

(z(2,3

))

b.變數可以作為列表的元素

list1 =[10

,20, func1]

print

(list1)

# [10, 20, ]

print

(list1[-1

](4,

5))# 20

c.變數可以重新賦值

x =

'abc'

print

(x[0])

func1 =

200print

(func1*3)

print

(type

(func1)

)#

e.變數可以作為函式的引數

def

func2

(t):

pass

deffunc3

(f):

f()def

func4

(f):

print

(f(10,20

)*2)

deffunc5

(num1, num2)

:return

[num1, num2]

deffunc6

(num1, num2)

:return num1*num2

e =lambda

*n: n

func4(e)

print

('*****='

)func4(func5)

func4(func6)

day10 函式的高階

順序 位置引數 動態接收位置引數 預設值 動態接收關鍵字引數 位置引數 args 預設引數值 kwargs 一.函式引數 動態傳參 1.動態接受位置引數 在引數位置編寫 表示接收任意內容 動態接收引數的時候要注意 動態引數必須在位置引數後面 2.動態接收關鍵字引數 動態接收關鍵字引數一定在最後面 在...

Day 10 函式的高階

一 動態傳參 1 形參 1.位置引數 2.預設引數 3.動態引數 1.args 動態接收位置引數 2.kwargs 動態接收關鍵字引數 def chi food print 我要吃 food chi 大公尺飯 小公尺飯 結果 我要吃 大公尺飯 小公尺飯 多個引數傳遞進去.收到的內容是元組tuple ...

day 10 函式的高階

動態傳參 重點 形參 args在形參位置,表示不定引數 接受的是位置引數 接受到的位置引數的動態傳參 都是元組 形參的順序 位置 args 預設值 kwargs 以後寫引數,可以隨意的進行搭配 def chi zhushi,cai,fushi,tang,tiandian print zhushi,c...