網(wǎng)站首頁 編程語言 正文
首先,先來了解一下return
以下所有代碼都是在jupyter notebook中運(yùn)行的.
自定義函數(shù)時
用return語句指定返回值,即函數(shù)運(yùn)行最后得出的結(jié)果
舉個例子:
def Add(x,y): z = x+y return z
def Ad(x,y): z = x+y return x
上邊是我定義的兩個函數(shù),除了名字不一樣之外,唯一不同的就是return后的返回值,那么運(yùn)行的結(jié)果是怎樣的呢?
Add(1,2)
返回值 3
Ad(1,2)
返回值1
形成這樣結(jié)果的原因就在于Add函數(shù)的返回值是兩個參數(shù)的和,Ad函數(shù)返回的是第一個參數(shù)的值,所以函數(shù)運(yùn)行最后的返回值是什么,除了函數(shù)內(nèi)部代碼塊的運(yùn)行之外,很重要得意一點(diǎn)在于自定義函數(shù)最后要求返回的值是什么。
函數(shù)代碼塊執(zhí)行到return語句時,會退出函數(shù),就算后邊還有屬于自定義函數(shù)的代碼,也不會被執(zhí)行
再舉個例子:
def Add_1(x,y): z = x+y return z print(x,y)
在前邊例子的基礎(chǔ)上,加了一行代碼,這行代碼要達(dá)到的效果是打印出傳入的參數(shù)值,我們看下執(zhí)行效果
Add_1(1,2)
返回值3
并沒有打印傳入的參數(shù)值,因?yàn)榇a執(zhí)行到return語句就結(jié)束了,后邊的代碼不會被執(zhí)行。
如果return后還有代碼需要被執(zhí)行怎么辦?
可以將return語句放在try…finally語句中,return語句被執(zhí)行后會繼續(xù)執(zhí)行finally后的語句。
來,還是舉個例子:
def Add_2(x,y): try: z = x+y return z finally: print(x,y)
依然是在上一個例子的基礎(chǔ)上進(jìn)行了一點(diǎn)點(diǎn)改動,那么來看一下運(yùn)行的結(jié)果吧
(這里加上In[]和Out[]方便看)
In[2]: Add_2(1,2)
返回結(jié)果
? ? ? ?1 2
Out[2]: 3
很明顯return后的代碼也被執(zhí)行了!
不加return語句會有怎樣的結(jié)果
不加return語句,就沒有返回值
舉個例子:
def Add_3(x,y): x+y
這樣自定義函數(shù)不會報錯,也可以運(yùn)行,我們看一下調(diào)用函數(shù)的結(jié)果
Add_3(1,2)
執(zhí)行后,不會顯示結(jié)果。那么不用return是不是就不能看到函數(shù)運(yùn)行結(jié)果了?
當(dāng)然不是,用print也可以顯示結(jié)果,還是舉個例子來看:
def Add_4(x,y): print(x+y)
來看下函數(shù)調(diào)用的結(jié)果:
Add_4(1,2)
返回值3
可以顯示結(jié)果,但是和其他print函數(shù)打印出來的結(jié)果一樣,沒有Out[]標(biāo)識。
如果不是很理解這句話的意思也沒關(guān)系,我來看一個迷糊很多人的問題
在自定義函數(shù)中,return和print有什么區(qū)別
很重要的一點(diǎn)區(qū)別就在與兩者顯示出來的值的結(jié)果。
下邊直接上傳圖片了,更直觀一點(diǎn)
是不是能清楚的看出區(qū)別了,雖然用return和print都可以顯示交互結(jié)果,但是如果要把函數(shù)作為參數(shù)傳入別的函數(shù)時,就需要return的返回值了.
總結(jié)
原文鏈接:https://blog.csdn.net/yuzhihuan1224/article/details/100890591
相關(guān)推薦
- 2022-06-23 C#獲取計(jì)算機(jī)硬件與操作系統(tǒng)的相關(guān)信息_C#教程
- 2023-02-15 Python?PyWebIO提升團(tuán)隊(duì)效率使用介紹_python
- 2023-01-17 Linux?ps命令詳解及Linux查看進(jìn)程的操作方法_linux shell
- 2022-07-10 elementUI去掉el-card內(nèi)部padding
- 2022-04-09 Android項(xiàng)目中g(shù)radle的執(zhí)行流程_Android
- 2022-07-12 解決錯誤:org.apache.ibatis.binding.BindingException
- 2022-10-23 Android事件分發(fā)機(jī)制示例分析_Android
- 2022-07-08 Pytest如何使用mark的方法_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支