1.1什麼是返回值
返回值就是從函式內部傳遞到函式外部的資料(預設情況下函式內部產生的新資料,在函式外部不能使用)
1.2怎麼確定函式返回值
1)python中每個函式都有返回值,預設情況下是none,返回值是什麼就看執行函式體的時候遇到的return關鍵字後面的資料是什麼;
如果沒有遇到return,返回值就是none。
(希望作為返回值的資料就在函式結束的時候放在return後面)
2)return的作用
遇到return會確定函式返回值並且直接提前結束函式
1.3怎麼在函式外部獲取返回值
函式呼叫表示式的值就是函式的返回值,所以在函式的外部獲取函式呼叫表示式的值就是在獲取函式的返回值。
1)沒有返回值
2)有乙個返回值def
func1
(a, b)
(a + b)
result = func1(10,
20)print
(f'result:'
)# result:none
3)有多個返回值的函式def
func2
(a, b)
:return a + b
(a + b)
result = func2(10,
20)print
(result)
# 30
練習:定義乙個函式,可以求多個數的和以及平均值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(
(sum1, mean)
1)打包
2)解包a,
*b =1,
2,3,
4,5
2.1什麼是全域性變數和區域性變數c =[10
,20,30
(*c)
# 10 20 30
(c)# [10, 20, 30]
按照變數的作用域不同將變數分為全域性和區域性兩種
1)全域性變數
定義在函式和類外面的變數就是全域性變數
作用域:從定義開始到檔案結束的任意位置都可以使用
a全域性變數
b,c全域性變數a =
100for x in
range(3
(a)def
func1()
(a)
2)區域性變數for b in
range(3
):c =
'hello'
(b)print
(b)def
func2()
(b)print
(c)func2(
)
定義在函式內部的變數就是區域性變數
作用域:從定義開始到函式結束
補充:函式呼叫過程記憶體的變化def
func3()
: d =
1823
(d)
每次呼叫乙個函式的時候系統會自動在棧區間開闢乙個臨時的記憶體空間,用來儲存在函式中產生的資料(定義的變數),當函式呼叫結束後這塊記憶體會自動釋放(銷毀)
函式形參也是區域性變數
2.2 global和nonlocal
1)global
只能在函式體中使用;功能:在函式中定義全域性變數
global 變數名
變數名 = 資料
2)nonlocal
功能:在區域性的區域性中修改乙個區域性變數的值
nonlocal 變數名
變數名 = 資料
2)nonlocalm =
100n =
10def
func5()
:# 在定義乙個新的區域性變數m
m =200print
(f'函式內部m:'
)global n
n =100# n是全域性變數,任意位置都可以
global p
p =300func5(
(f'函式外部m:'
(f'函式內部'
)
3.1匿名函式def
func6()
: t =
100def
func7()
:nonlocal t
t =200print
(f'函式中的函式t:'
) func7(
(f'函式中的t:'
)func6(
)# 沒加nonlocal 函式中的函式t:200 函式中的t:100
func6(
)# 函式中的函式t:200 函式中的t:200
匿名函式的本質就是函式;在定義的時候不需要函式名(一般情況下不會使用函式名,在呼叫實參高階函式的時候用的比較多)
語法:函式名 = lambda 形參列表:返回值
相當於:
def (形參列表):
return 返回值
sum1 =
lambda num1, num2:
(num1 + num2)
sum1(10,
20)
4.1函式就是變數max1 =
lambda num1, num2: num1 if num1 > num2 else num2
a = max1(10,
20)print
(a)
python中定義函式其實就是在定義乙個型別是function的變數,其中函式名就是變數名
普通變數能做的事情函式都能做
1)函式就是變數
2)變數能做的函式都可以做e =
lambda x:2*x
(type
(e))
#
a.變數可以給另外乙個變數賦值x =
100def
func1
(n1, n2)
:return n1*n2
b.變數可以作為列表的元素y = x
(y+2
)z = func1
(type
(z))
(z(2,3
))
c.變數可以重新賦值list1 =[10
,20, func1]
(list1)
# [10, 20, ]
(list1[-1
](4,
5))# 20
e.變數可以作為函式的引數x =
'abc'
(x[0])
func1 =
200print
(func1*3)
(type
(func1)
)#
def
func2
(t):
pass
deffunc3
(f):
f()def
func4
(f):
(f(10,20
)*2)
deffunc5
(num1, num2)
:return
[num1, num2]
deffunc6
(num1, num2)
:return num1*num2
e =lambda
*n: n
func4(e)
('*****='
)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...