1.什麼是返回值
返回值就是從函式內容傳遞到函式外部的資料(預設情況下函式內部產生的新資料,在函式外部不能使用)。
2.怎麼確定函式返回值
a. python中每個函式都有返回值,返回值是什麼就看執行函式體的時候遇到return關鍵字後面的資料就是什麼;
如果沒有遇到return,返回值就是none。
(希望作為返回值的資料在函式結束的時候放在return後面)
b. return的作用
遇到return會確定函式返回值並且直接結束函式
3.怎麼在函式外部獲取函式返回值
函式呼叫表示式的值就是函式的返回值,所以在函式的外部獲取函式呼叫表示式的值就是在獲取函式的返回值。
函式返回值的多種情況
# 1) 沒有返回值
deffunc1
(a, b)
:print
(a + b)
result1 = func1(10,
20)print
(result1)
# 2)乙個返回值
deffunc2
(a, b)
:return a+b
result2 = func2(
100,
200)
print
(result2)
# 3)多個返回值(其實是乙個元組)
deffunc3
(a, b)
:return a+b, a*b
result3 = func3(11,
22)print
(result3)
按照變數的作用域不同可以將變數分為全域性變數和區域性變數兩種。
1.全域性變數
定義在函式和類外面的變數就是全域性變數
作用域:從定義開始到檔案結束的任意位置都可以使用
# a是全域性變數
a =100
for i in
range(3
):print
(f"迴圈內部:"
)print
(f"迴圈外部:"
)# b是全域性變數
for b in
range(3
):# c是全域性變數
c ="hello"
print
(f"迴圈內部b:"
)print
(f"迴圈外部b:"
)print
(f"迴圈外部c:"
)
2.區域性變數
定義在函式內部的變數就是區域性變數
作用域:從定義開始到函式結束
補充:函式呼叫過程記憶體的變化
每次呼叫乙個函式的時候系統會自動在棧區間開闢乙個臨時的記憶體空間,用來儲存在函式中
產生的資料(定義的變數),當函式呼叫結束後這塊記憶體會自動釋放(銷毀)。
def
func3()
: d =
123print
(f"內部函式d:"
)func3(
)# 函式的形參也是區域性變數
deffunc4
(e, f=
100)
:print
(e, f)
func4(
200)
3.global和nonlocal
a. global
只能在函式體中使用;
功能:在函式中定義全域性變數
global 變數名
變數名 = 資料
# 1.global
m =100
n =10
deffunc5()
:# 在定義乙個新的區域性變數m
m =200print
(m)global n
n =20# n是全域性變數
print
(n)global p
p =300print
(p)func5(
)print
(f"函式外部m:"
)print
(f"函式外部n:"
)print
(f"函式內部p:"
)
b. nonlocal
功能:在區域性的區域性中修改乙個區域性變數的值
nonlocal 變數名
變數名 = 資料
# 2.nonlocal
deffunc6()
: t =
100def
func7()
:nonlocal t
t =200print
(f"函式中的函式t:"
) func7(
)print
(f"函式中的t:"
)func6(
)
匿名函式的本質是函式;
在定義的時候不需要函式名(一般情況下不會使用,在呼叫實參高階函式的時候用的比較多)
語法:lambda 形參列表:返回值
相當於:
def (形參列表):
return 返回值
# 定義乙個函式求兩個數的和
sum1 =
lambda num1, num2: num1 + num2
print
(sum1(10,
20))print
(sum1(num1=
2, num2=3)
)
# 練習:寫乙個匿名函式,獲取兩個數中較大的那個數
max1 =
lambda num1, num2: num1 if num1 > num2 else num2
print
(max1(5,
10))
python中定義函式其實就是在定義乙個型別是function的變數,其中函式名就是變數名
普通變數能做的事情函式都可以做
所以函式就是變數
x =
100def
func1
(n1, n2)
:return n1*n2
# a.變數可以給另乙個變數賦值
y = x
print
(y+2
)z = func1
print
(z(2,3
))# b.變數可以作為列表的元素
list1 =[10
,20, x]
print
(list1)
print
(list1[-1
]*2)
list2 =[10
,20, func1]
print
(list2)
print
(list2[-1
](4,
5))# 20
# c.變數可以重新賦值
x ="abc"
print
(x[0])
func1 =
200print
(func1*3)
# e.變數可以作為函式的引數
deffunc2
(t):
pass
func2(x)
func2(func1)
Python day 10 函式高階 動態函式
1 位置引數 2 預設值引數 3 動態引數 1 args 位置引數的動態傳參。系統會自動的把所有的位置引數聚合成元組 2 kwargs 關鍵字引數的動態傳參。系統會自動的把所有的關鍵字引數聚合成字典 3 def func args,kwargs 無敵引數 pass 4 順序 位置引數,args,預設...
鐵樂學Python day10 函式2
今天書接昨天的函式繼續去學習了解 昨天說到函式的動態引數。args 動態引數,萬能引數 args接受的就是實參對應的所有剩餘的位置引數,並將其放在元組 中。deffunc x,y,z,args print x,y,z print args func 1,2,a b c 34 12 a b c 34 ...
python day 10 魔法方法
title python day 10 魔法方法 date 2019 11 05 20 08 56 categories import time as t class mytimer def init self self.prompt 未開始計時 self.unit 年 月 日 時 分 秒 self...