return語句就是講結果返回到調用的地方,并把程序的控制權一起返回
程序運行到所遇到的第一個return即返回(退出def塊),不會再運行第二個return。
要返回兩個數值,寫成一行即可:
defa(x,y):
ifx==y:
returnx,y
printa(3,3)
>>>3,3
但是也并不意味著一個函數體中只能有一個return語句,例如:
deftest_return(x):
ifx>0:
returnx
else:
return0
函數沒有return,默認return一個None對象。
遞歸函數中沒有return的情況:
defgcd(a,b):
ifa%b==0:
returnb
else:
gcd(b,a%b)
分析:else中沒有return就沒有出口,這個程序是自己內部運行,程序沒有返回值,
python和print的區別:
x=1
y=2
defadd(x,y):
z=x+y
returnz
print(add(x,y)
x=1
y=2
defadd(x,y):
z=x+y
printz
print(add(x,y))
在交互模式下,return的結果會自動打印出來,而作為腳本單獨運行時則需要print函數才能顯示。
默認情況下,遇見return函數就會返回給調用者,但是try,finally情況除外:
deffunc():
try:
print98
return'ok'#函數得到了一個返回值
finally:#finally語句塊中的語句依然會執行
print98
printfun()
輸出:
98
98
ok
函數作為返回值返回:
deflazy_sum(*args):
defsum():
x=0
forninargs:
x=x+nreturnxreturnsum
lazy_sum(1,2,3,4,5,6,7,8,9)#這時候lazy_sum并沒有執行,而是返回一個指向求和的函數的函數名sum的內存地址。
f=lazy_sum(1,2,3,4,5,6,7,8,9)
print(type(f))
print(f())#調用f()函數,才真正調用了sum函數進行求和,
這其實就是閉包。
返回一個函數列表:
defcount():
fs=[]
foriinrange(1,4):
deff():
returni*i
fs.append(f)
returnfs
f1,f2,f3=count()
print(f1())
print(f2())
print(f3())
輸出:
9
9
9
執行過程:
當i=1,執行for循環,結果返回函數f的函數地址,存在列表fs中的第一個位置上。
當i=2,由于fs列表中第一個元素所指的函數中的i是count函數的局部變量,i也指向了2;然后執行for循環,結果返回函數f的函數地址,存在列表fs中的第二個位置上。
當i=3,同理,在fs列表第一個和第二個元素所指的函數中的i變量指向了3;然后執行for循環,結果返回函數f的函數地址,存在列表fs中的第三個位置上。
所以在調用f1()的時候,函數中的i是指向3的:
f1():
return3*3
同理f2(),f3()結果都為9
閉包時牢記的一點就是:返回函數不要引用任何循環變量,或者后續會發生變化的變量。即包在里面的函數(本例為f()),不要引用外部函數(本例為count())的任何循環變量
如果一定要引入循環變量,方法是再創建一個函數,用該函數的參數綁定循環變量當前的值,無論該循環變量后續如何更改,已綁定到函數參數的值不變:
defcount():
fs=[]foriinrange(1,4):
deff(j):
defg():returnj*jreturng
fs.append(f(i))returnfs
f1,f2,f3=count()
print(f1())
print(f2())
print(f3())
以上內容為大家介紹了python培訓之如何使用return語句,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。