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

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁/技術文章
文章詳情頁

python小白問題 關于局部變量和全局變量

【字号: 作者:豬豬瀏覽:101日期:2022-06-29 11:12:55

問題描述

第一段代碼:

# -*- coding:gb2312 -*-nums = [11,22,33,44,55]def nums_chang(): nums = [11,22,33,44,55,999] print(nums)nums_chang() # 打印出來是[11,22,33,44,55,999]print(nums) # 打印出來是[11,22,33,44,55]

運行結果:

python小白問題 關于局部變量和全局變量

第二段代碼:

# -*- coding:gb2312 -*-nums = [11,22,33,44,55]def nums_chang(): nums.append(999) # 打印出來是[11,22,33,44,55,999] print(nums) # 打印出來是[11,22,33,44,55,999]nums_chang()print(nums)

運行結果:

python小白問題 關于局部變量和全局變量

我的問題是:為什么第一段代碼打印出來兩個結果是不一樣的,而第二段代碼打印出來的結果是一樣的? 特別是第二段代碼,為什么函數里面的append命令,可以修改外面的全局變量。而第一段代碼當中,重新定義一次列表,卻無法修改外面的全局變量? 這里的原因是什么?

問題解答

回答1:

看了下采納答案,我覺得還是沒說到點子上面。首先nums變量被定義為了全局變量,也就說在這個'.py'文件里面,所有類、函數都可以使用它。但是所有變量也是一個對象,而對象分為可變和不可變。而列表是可變對象,也就是說可以變更。那么什么是可變對象?就是那些可以對對象操作,而不影響在內存中的生滅。入x='234',如果你再賦值,x='111'。其實兩個x已經是兩個對象了,只是覆蓋了而已,即x = x + '123',x也是一個新對象。

如果是列表,x = [1,2,3],現在對它操作,x.remove(1),那么x對象還是x對象,只是對象的值有改變

第一段代碼:就是重新賦值,在不同的作用域,nums賦值了一遍,這樣全局變量nums和nums_chang函數里面的nums變量就不再是一個對象,他們是不同的,因此你打印的時候出現了不同的值,此時nums_chang函數里面的nums變量已經是一個局部變量,只給這個函數使用

第二段代碼:nums是個列表,是可變對象,因此對列表的操作,不影響這個對象,因此這個對象還是全局中的那個,函數和外面都是用的全局變量,因此你修改了之后,全局變量的值也跟著修改了

回答2:

第一: 關于作用域的問題, 可以先參考下我的一篇文章: Python: 作用域(scope) 和 LEGB, 可以先對變量的查找有個基本的認識,然后我們能夠看到, 因為有賦值語句, 所以nums只會只會從局部作用域查找,并不會和全局作用域有關系

第二: 在第一的基礎上, 我們可以看到nums.append(999)中的nums是從全局作用域找到的, 又因為用的是append方法, 這方法是直接用于源列表本身, 所以你看到全局的nums也被更新了

回答3:

函數在自己的作用域找不到變量,就回去上一級作用域找,你的第二個就是這樣來的。第一個的話,和明顯你賦值了呀

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 成人在免费视频手机观看网站 | 国产精品日韩欧美在线 | 亚洲一区二区久久 | 国产日产久久高清欧美一区 | 亚洲一级毛片欧美一级说乱 | 亚洲一区二区三区高清视频 | 国产香蕉影视院 | 亚洲福利精品一区二区三区 | 日韩av线上 | 男人精品一线视频在线观看 | 日韩欧美成人乱码一在线 | 欧美成人看片黄a免费 | se就是色94欧美setu | 久久精品观看 | 成人毛片视频免费网站观看 | 久久国产精品一国产精品 | 亚洲gogo人体大胆西西安徽 | 亚洲一区在线观看视频 | 久久一日本道色综合久久 | 欧美成人性色xxxx视频 | 老司机亚洲精品影院 | 精品国产三级a∨在线 | 国产成人高清视频在线观看免费97 | 色偷偷888欧美精品久久久 | 国产l精品国产亚洲区久久 国产tv在线 | 久久99久久精品久久久久久 | 亚洲欧美日韩高清在线看 | 日韩久久久精品首页 | 久久亚洲综合中文字幕 | 亚洲一区二区中文 | 久久久久国产精品 | 久操精品在线 | 亚洲精品区| 欧美日韩ay在线观看 | 男人精品一线视频在线观看 | 国产精品青草久久福利不卡 | 视频一区精品 | 久久久久久久久一级毛片 | 91久久青草精品38国产 | 一区二区免费看 | 暖暖日本在线播放 |