电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

簡單了解Python變量作用域正確使用方法

瀏覽:47日期:2022-07-21 14:19:07

在寫代碼的時候,免不了要使用變量。但程序中的一個變量并不一定是在哪里都可以被使用,根據情況不同,會有不同的“有效范圍”。

看這樣一段代碼:

def func(x): print (’X in the beginning of func(x): ’, x) x = 2 print (’X in the end of func(x): ’, x)x = 50func(x)print (’X after calling func(x): ’, x)

輸出:

X in the beginning of func(x): 50X in the end of func(x): 2X after calling func(x): 50

變量 x 在函數內部被重新賦值。但在調用了函數之后,x 的值仍然是50。為什么?

這就得說一下變量的“作用域”:

當函數內部定義了一個變量,無論是作為函數的形參,或是另外定義的變量,它都只在這個函數的內部起作用。函數外即使有和它名稱相,另外注意:光理論是不夠的。這里順便送大家一套2020最新python入門到高級項目實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,還可以跟老司機交流討教!

同的變量,也沒有什么關聯。這個函數體就是這個變量的作用域。像這樣在函數內部定義的變量被稱為“局部變量”。

要注意的是,作用域是從變量被定義的位置開始。像這樣的寫法是有問題的:

def func(): print (y) y = 2 print (y)

報錯:

UnboundLocalError: local variable ’y’ referenced before assignment

因為在 y = 2 之前,y 并不存在,調用 y 的值就會出錯。

回到開始那個例子:

在函數 func 外部,定義的變量 x,賦值為 50,作為參數傳給了函數 func。而在函數 func 內部,變量 x 是形參,它的作用域是整個函數體內部。它與外面的那個 x 沒有關系。只不過它的初始值是由外面那個 x 傳遞過來的。

所以,雖然函數體內部的 x 被重新賦值為 2,也不會影響外面那個 x 的值。

不過有時候,我們希望能夠在函數內部去改變一些變量的值,并且這些變量在函數外部同樣被使用到。怎么辦?

一種方法是,用 return 把改變后的變量值作為函數返回值傳遞出來,賦值給對應的變量。比如開始的那個例子,可以在函數結尾加上

return x

然后把調用改為

x = func(x)

還有一種方法,就是使用“全局變量”。

在 Python 的函數定義中,可以給變量名前加上 global 關鍵字,這樣其作用域就不再局限在函數塊中,而是全局的作用域。

通過 global 改寫開始的例子:

def func(): global x print (’X in the beginning of func(x): ’, x) x = 2 print (’X in the end of func(x): ’, x)x = 50func()print (’X after calling func(x): ’, x)

輸出:

X in the beginning of func(x): 50X in the end of func(x): 2X after calling func(x): 2

函數 func 不再提供參數調用。而是通過 global x 告訴程序:這個 x 是一個全局變量。于是函數中的 x 和外部的 x 就成為了同一個變

量。這一次,當 x 在函數 func 內部被重新賦值后,外部的 x 也隨之改變。

前面講的局部變量和全局變量是 Python 中函數作用域最基本的情況。實際上,還有一些略復雜的情況,比如:

def func(): print (’X in the beginning of func(x): ’, x) # x = 2 print (’X in the end of func(x): ’, x)x = 50func()print (’X after calling func(x): ’, x)

輸出:

X in the beginning of func(x): 50X in the end of func(x): 50X after calling func(x): 50

程序可以正常運行。雖然沒有指明 global,函數內部還是使用到了外部定義的變量。然而一旦加上

x = 2

這句,程序就會報錯。因為這時候,x 成為一個局部變量,它的作用域從定義處開始,到函數體末尾結束。

建議在寫代碼的過程中,顯式地通過 global 來使用全局變量,避免在函數中直接使用外部變量。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 警方提醒:赣州约炮论坛真的安全吗?2025年新手必看的网络交友防坑指南 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 深圳彩钢板_彩钢瓦_岩棉板_夹芯板_防火复合彩钢板_长鑫 | 渗透仪-直剪仪-三轴仪|苏州昱创百科 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 小型高低温循环试验箱-可程式高低温湿热交变试验箱-东莞市拓德环境测试设备有限公司 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 工业硝酸钠,硝酸钠厂家-淄博「文海工贸」 | 365文案网_全网创意文案句子素材站| 广东泵阀展|阀门展-广东国际泵管阀展览会 | 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | 黑龙江京科脑康医院-哈尔滨精神病医院哪家好_哈尔滨精神科医院排名_黑龙江精神心理病专科医院 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 高压油管,液压接头,液压附件-烟台市正诚液压附件 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 软文发布-新闻发布推广平台-代写文章-网络广告营销-自助发稿公司媒介星 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | HDPE储罐_厂家-山东九州阿丽贝防腐设备 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 广州云仓代发-昊哥云仓专业电商仓储托管外包代发货服务 | TPU薄膜_TPU薄膜生产厂家_TPU热熔胶膜厂家定制_鑫亘环保科技(深圳)有限公司 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 电车线(用于供电给电车的输电线路)-百科 | 南溪在线-南溪招聘找工作、找房子、找对象,南溪综合生活信息门户! | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | 飞行者联盟-飞机模拟机_无人机_低空经济_航空技术交流平台 | 尾轮组_头轮组_矿用刮板_厢式刮板机_铸石刮板机厂家-双驰机械 | 济南菜鸟驿站广告|青岛快递车车体|社区媒体-抖音|墙体广告-山东揽胜广告传媒有限公司 | 一氧化氮泄露报警器,二甲苯浓度超标报警器-郑州汇瑞埔电子技术有限公司 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 |