亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

python小白,關(guān)于函數(shù)問題

瀏覽:107日期:2022-06-29 09:27:33

問題描述

第一段代碼:

# -*- coding:gb2312 -*-def get_wendu(): wendu = 22 print('您輸入的溫度是%d'%wendu) return wendudef get_wendu_huashi(): wendu = wendu + 3 print('您輸入的新溫度是%d'%wendu)print('------1-------')wendu = get_wendu()print('------2-------')get_wendu_huashi()

第一段代碼執(zhí)行結(jié)果:

python小白,關(guān)于函數(shù)問題

第二段代碼:

# -*- coding:gb2312 -*-def get_wendu(): wendu = 22 print('您輸入的溫度是%d'%wendu) return wendudef get_wendu_huashi(): result = wendu + 3 #這里是對(duì)第一段代碼的修正,把前面一個(gè)wendu改成了新的變量名稱result print('您輸入的新溫度是%d'%result)print('------1-------')wendu = get_wendu()print('------2-------')get_wendu_huashi()

第二段代碼執(zhí)行結(jié)果:

python小白,關(guān)于函數(shù)問題

我有兩個(gè)問題:第一個(gè)問題:為什么wendu = get_wendu()這一句語句,執(zhí)行出來的結(jié)果是:您輸入的溫度是22,這不只是一個(gè)賦值的語句么? 類似 wendu = 22,這樣一句賦值,不是不會(huì)打印出來么,為什么wendu = get_wendu() 會(huì)打印出結(jié)果,難道函數(shù)里面的print語句,會(huì)在賦值的過程當(dāng)中把這個(gè)東西打印出來?第二個(gè)問題:為什么第一段代碼里面wendu = wendu + 3是錯(cuò)誤的,換成result = wendu + 3就能夠成功執(zhí)行?是不是因?yàn)閣endu = wendu + 3這句話在執(zhí)行的過程中,遇到print('您輸入的新溫度是%d'%wendu),系統(tǒng)無法分辨wendu到底是前面一個(gè)wendu還是后面一個(gè)wendu?

問題解答

回答1:

你的第一個(gè)問題其實(shí)是不懂語句的執(zhí)行,wendu = get_wendu()這一句,get_wendu()這是一個(gè)表達(dá)式,它會(huì)返回一個(gè)值,這個(gè)值會(huì)被賦值給wendu這個(gè)變量,而get_wendu()這個(gè)表達(dá)式是執(zhí)行函數(shù),它會(huì)依次執(zhí)行你函數(shù)體定義的語句,你在里面寫了print,它自然會(huì)執(zhí)行print。

你的第二個(gè)問題其實(shí)是不懂局部變量和全局變量的區(qū)別,print什么的一點(diǎn)影響都沒有,只是因?yàn)樽兞恳貌煌瑢?dǎo)致的。先說你這里能夠運(yùn)行的語句。

def get_wendu_huashi(): result = wendu + 3

這里面,wendu 這個(gè)變量沒有在函數(shù)內(nèi)部聲明定義,但是可以直接用,實(shí)際上引用的是全局變量wendu,也就是wendu = get_wendu()這里定義的變量。這也解釋了result為啥打印的結(jié)果是22+3

而你不能運(yùn)行的語句

def get_wendu_huashi(): wendu = wendu + 3 print('您輸入的新溫度是%d'%wendu)

這里實(shí)際上在函數(shù)內(nèi)部作用域聲明了一個(gè)新變量 wendu,它尚未被定義,而后wendu+3里的這個(gè)wendu變量就是引用了這個(gè)未定義的新變量,這自然而然的就造成了錯(cuò)誤。

搞明白全局作用域和局部作用域就知道錯(cuò)在什么地方了。

回答2:

get_wendu() 是一個(gè)函數(shù)調(diào)用,調(diào)用 get_wendu,get_wendu 里面 print('您輸入的溫度是%d'%wendu) 就是打印 wendu 這個(gè)局部變量的值

wendu = wendu + 3 是因?yàn)?wendu 這個(gè)變量還未定義,你就在使用它,由錯(cuò)誤信息就可以看出來,UnboundLocalError: local variable ’wendu’ referenced before assignment

回答3:

print('您輸入的溫度是%d'%wendu) 這句話不就是打印嗎

python 默認(rèn)會(huì)現(xiàn)在當(dāng)前作用域?qū)ふ易兞浚捎谠诋?dāng)前作用域沒有 wendu 這個(gè)變量自然也就報(bào)錯(cuò)了。你可以在 wendu = wendu + 3 前加上一句 nonlocal wendu,這樣就可以正常運(yùn)行了

回答4:

print()函數(shù)是向標(biāo)準(zhǔn)輸出打印,

print('您輸入的溫度是%d'%wendu) # print會(huì)打印括號(hào)中的內(nèi)容,%d表示格式化輸出int類型, # 其實(shí)這句話和print(('您輸入的溫度是22')是等價(jià)的

報(bào)錯(cuò)信息是Local variable ’wendu’ referenced before assignment,說的是wendu變量在調(diào)用前 沒有使用。相信你如果翻譯了這個(gè)Error信息一定會(huì)驚呆了呢,命名在wendu = get_wendu()聲明了但是竟然說沒有,但是計(jì)算機(jī)也沒有你想的那么低能= =,=是用來賦值的,它一定知道wendu是哪個(gè)wendu。原因?qū)τ诤瘮?shù)內(nèi)部變量賦值,Python會(huì)認(rèn)為這個(gè)變量是局部變量,所以你的wendu此時(shí)是一個(gè)局部變量并不是global你可以嘗試這樣修改

def get_wendu_huashi(): global wendu wendu = wendu + 3 print('您輸入的新溫度是%d'%wendu)

變量名不要用拼音,變量名不要用拼音,變量名不要用拼音。全局變量盡量少用,按照你的要求,選擇傳參會(huì)更好。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 永久免费观看视频 | 国产草比| 亚洲精品午夜aaa级久久久久 | 国产免费一区二区在线看 | 免费观看女人高清视频 | 99久久国产免费 - 99久久国产免费 | 国产在线精品福利91香蕉 | 波多野吉衣一区二区三区四区 | ntr中文字幕亚洲综合 | 国产福利一区二区三区 | 亚洲日本韩国欧美 | 国产精品免费一级在线观看 | 免费在线观看一级片 | 国产主播一区二区 | 国产剧情91| 色精品一区二区三区 | 999jjj在线播放 | 2020年国产精品午夜福利在线观看 | 3p久久 | 亚州综合激情另类久久久 | 性视频网站视频免费 | 黑人一区二区 | 国内自拍视频在线看免费观看 | 欧美一区二区视频三区 | 色婷婷一区二区三区四区成人 | 国产精品真实对白精彩久久 | 国产女人体一区二区三区 | 欧美一级毛片特黄黄 | 日韩国产三级 | 国产乱码精品一区二区三区四川人 | 高清国产美女一级a毛片在线 | 黄a毛片| 午夜久久久久久亚洲国产精品 | 香蕉啪啪网 | 在线精品国精品国产不卡 | 国产精品国产亚洲精品看不卡 | 国产精品国产三级国产专区不 | 综合国产福利视频在线观看 | 久久欧美久久欧美精品 | 91免费观看视频 | 久久www免费人成看片入口 |