国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python小白,關于函數問題

瀏覽:119日期: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()

第一段代碼執行結果:

python小白,關于函數問題

第二段代碼:

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

第二段代碼執行結果:

python小白,關于函數問題

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

問題解答

回答1:

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

你的第二個問題其實是不懂局部變量和全局變量的區別,print什么的一點影響都沒有,只是因為變量引用不同導致的。先說你這里能夠運行的語句。

def get_wendu_huashi(): result = wendu + 3

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

而你不能運行的語句

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

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

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

回答2:

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

wendu = wendu + 3 是因為 wendu 這個變量還未定義,你就在使用它,由錯誤信息就可以看出來,UnboundLocalError: local variable ’wendu’ referenced before assignment

回答3:

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

python 默認會現在當前作用域尋找變量,由于在當前作用域沒有 wendu 這個變量自然也就報錯了。你可以在 wendu = wendu + 3 前加上一句 nonlocal wendu,這樣就可以正常運行了

回答4:

print()函數是向標準輸出打印,

print('您輸入的溫度是%d'%wendu) # print會打印括號中的內容,%d表示格式化輸出int類型, # 其實這句話和print(('您輸入的溫度是22')是等價的

報錯信息是Local variable ’wendu’ referenced before assignment,說的是wendu變量在調用前 沒有使用。相信你如果翻譯了這個Error信息一定會驚呆了呢,命名在wendu = get_wendu()聲明了但是竟然說沒有,但是計算機也沒有你想的那么低能= =,=是用來賦值的,它一定知道wendu是哪個wendu。原因對于函數內部變量賦值,Python會認為這個變量是局部變量,所以你的wendu此時是一個局部變量并不是global你可以嘗試這樣修改

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

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

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产高清在线看免费视频观 | 日韩一级伦理片 | 久久视频精品53在线观看 | 日韩精品一区二区三区视频网 | 亚洲第一网站 | 国产精品合集久久久久青苹果 | 一级欧美毛片成人 | 黄色毛片视频校园交易 | 免费又黄又爽的视频 | 二级黄的全免费视频 | 中文乱码字幕午夜无线观看 | 亚洲精品日韩专区在线观看 | 成人99国产精品 | 久久精品国产午夜伦班片 | 成人精品视频一区二区三区 | 老司机亚洲精品影院 | 国产欧美在线播放 | 成人免费的性色视频 | 成人免费国产欧美日韩你懂的 | 日韩欧美中文字幕一区二区三区 | 99久久精品免费 | 国产综合在线视频 | 免费播放欧美毛片欧美aaaaa | 好妞操 | 欧美黄a | 99久久精品免费看国产一区二区 | 欧美啊v在线观看 | 成人 在线播放 | 91精品国产爱久久久久久 | 国产亚洲亚洲精品777 | 午夜爽爽爽男女免费观看hd | 一级全黄毛片 | 一区二区三区视频在线观看 | 免费一级欧美片在线观免看 | 精品国产欧美一区二区 | 亚洲精品国产字幕久久不卡 | 欧美一级特黄一片免费 | 欧美一级特黄一片免费 | 亚洲精品中文字幕在线 | theav视频在线观看 | 国产成人精品福利网站在线观看 |