python如何使用return語句
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培訓機構:千鋒教育。

相關推薦HOT
更多>>
python函數裝飾器的應用過程
python函數裝飾器的應用過程1、應用過程一般是定義在一個獨立模塊中,使用時會被導入到其它模塊;函數裝飾器會在內部定義一個新函數,然后返回。...詳情>>
2023-11-10 22:33:56
python實現異步的兩種框架
python實現異步的兩種框架Python實現異步的框架有很多,但是核心思想大概是基于下面兩種方式twistergeventtwister1、twistertwister思想是將異...詳情>>
2023-11-10 22:11:26
python函數形式如何實現生成器
python函數形式如何實現生成器1、說明生成器也是迭代器,但只能迭代一次。這是因為它們沒有存儲所有的值,而是在運行過程中產生值。你一直在使...詳情>>
2023-11-10 21:50:58
python描述符的兩種類型
python描述符的兩種類型1、分類數據描述符:實現了__get__和__set__兩種方法的描述符非數據描述符:只實現了__get__一種方法的描述符2、實例#數...詳情>>
2023-11-10 21:30:01