日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python函数的 全局变量与局部变量

發布時間:2023/12/2 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python函数的 全局变量与局部变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、函數的全局變量

1、什么是全局變量

頂著頭開始寫,沒有任何縮進,在py文件的任何位置都能調用

#!/usr/bin/env python # _*_ coding:utf8 _*_ name="gouguoqi"name="gouguoqi" def change_name():print ("111",(name)) #這里的name就是調用的全局變量 change_name()C:\python35\python3.exe D:/pyproject/day14函數/全局變量和局部變量.py111 gouguoqi

?

2、全局變量與局部變量的區別

name="gouguoqi" def change_name():name="miaoye" #局部變量print ("111",(name)) #這打印的是局部變量 change_name() #這里函數調用的是局部變量的name print (name) #這里是是調用的函數外面的全局變量 C:\python35\python3.exe D:/pyproject/day14函數/全局變量和局部變量.py111 miaoyegouguoqi

3、global? 關鍵字。想要在函數里面修改全局變量應該如何做

global name,就代表調用全局的變量name

專業的說法是global 后面的name是一個指針,一個內存地址,直接調用的那個內存地址

調用之后在子程序(局部程序)里面再次給name賦值的話就修改了全局變量name了

name="gouguoqi" def change_name():global namename="miaoye"print ("111",(name)) change_name() print (name)C:\python35\python3.exe D:/pyproject/day14函數/全局變量和局部變量.py111 miaoyemiaoye

?

全局作用域是全局

局部作用于是局部

變量調用的順序是先找局部作用域,如果找不到,再往外層找,然后在找全局作用域

4、人性化的描述全局變量和局部變量

我們把全局變量當做是一個盒子,局部變量是這個盒子里面的小盒子。這些小盒子是同一個級別的,當程序運行的時候,是從上到下的運行方式,碰到函數之后,先不運行,繼續往下走,直到調用函數的時候,才打開函數的子程序進行賦值運行然后出結果

當自己的盒子里面沒有要尋找的變量的時候,就去盒子外面找,外面沒有,再去全局找

?

如果函數內部沒有globe關鍵字,優先讀取局部變量,能讀取全局變量,無法對全局變量重新賦值,但是對于可變類型,可以對內部元素進行操作,可以append

如果函數中有golobe關鍵字,變量本質上就是全局的那個變量,可讀取,可重新賦值

?

(4).1? 如果函數中無global關鍵字,優先讀取局部變量,能讀取全局變量,無法對全局變

量重新賦值,但是對于可變類型,可以對內部元素進行操作,可以append remove clear

如果聲明了局部變量,就調用局部變量

如果沒有聲明局部變量,就會調用全局變量

name="蒼老師" #這是真正的蒼老師肉體 def gou():name = "娃娃"print ("我要搞",name) def miao():name = ""print ("我要搞",name)def bei():print ("我要搞",name) gou() miao()bei()C:\python35\python3.exe D:/pyproject/day14函數/全局變量和局部變量.py我要搞 娃娃我要搞 基我要搞 蒼老師

?

如果變量是一個可變的類型,可以用方法來進行apped? remove? clear

name=["蒼老師","波多野吉衣"] def gou():name.append("")print ("我要搞",name) gou()print (name)C:\python35\python3.exe D:/pyproject/day14函數/全局變量和局部變量.py我要搞 ['蒼老師', '波多野吉衣', '']['蒼老師', '波多野吉衣', '']

(4).2如果函數中有global關鍵字,變量本質上就是全局的那個變量(指針),可讀取,可賦值

在局部子程序調用全局變量(如果只是調用的話相當于做蠟像)

name="蒼老師" #這是真正的蒼老師肉體def gou():global name #相當于做了一個蒼老師的蠟像,跟本人一模一樣print ("我要搞",name) def miao():name = ""print ("我要搞",name) gou() miao()C:\python35\python3.exe D:/pyproject/day14函數/全局變量和局部變量.py我要搞 蒼老師我要搞 基

?

(4).3在局部變量中修改全局變量(修改的話相當于玩過了,感覺不過癮,就換人了)

name="蒼老師" #這是真正的蒼老師肉體 def gou():global name #相當于玩了蒼老師的肉體name = "波多野吉衣" #感覺不是很好,把蒼老師換成了波多野吉衣print ("我要搞",name) def miao():print ("我要搞",name)#因為上面已經換人了,所以下面這人玩的也是波多野吉衣 gou() miao()C:\python35\python3.exe D:/pyproject/day14函數/全局變量和局部變量.py我要搞 波多野吉衣我要搞 波多野吉衣

?

(4.)4? 錯誤示例,局部變量也有name,全局變量也有name,并且全局變量在局部變量下面的位置

代碼過程是,首先定義了一個全局變量,在局部子程序首先設置了相同名字的局部變量,再引用了全局變量,然后在去打印的時候,就不知道打印的到底是全局變量還是局部變量了,這樣寫是不行了,所以以后要養成一個習慣就是global一定要放到上面,再工作中我們定義全局變量最好用大寫,局部變量小寫,這樣下面函數一調用 我們一看是大寫的就知道是全局變量了

?

name="gouguoqi" def change_name():name = "阿貓"global nameprint ("111",(name)) change_name()C:\python35\python3.exe D:/pyproject/day14函數/全局變量和局部變量.py111 阿貓D:/pyproject/day14函數/全局變量和局部變量.py:19: SyntaxWarning: name 'name' is assigned to before global declarationglobal name

?

(4).5函數中嵌套函數

?

函數的執行過程

?

name="北爺" #1 第一步 定義全局變量name def huangwei(): #2 第二步 定義一個函數,到49行第二步結束,把這些都放到內存里面加載上,并沒有執行name = "黃偉" #4.1 定義局部變量nameprint (name) #4.2 打印局部變量name的值 "黃偉"def liuyang(): #4.3 定義一個函數,然后把這段到47行的代碼又放入了內存,等待下次調用name = "劉洋" #4.4.1定義局部變量nameprint (name) #4.4.2打印出局部變量name "劉洋"def nulige():#4.4.3 又遇到def了。又把這一部分到45行的代碼放入了內存,沒有執行。等待下次調用name = "喵爺"#4.4.5.1定義了一個局部變量nameprint (name)#4.4.5.2打印局部變量name的值"喵爺"print (name)#4.4.4 打印name 劉洋nulige()#4.4.5 調用nulige這個函數,開始向上找liuyang()#4.4 調用liuyang這個函數,開始向上找print(name) #4.5 第五步 打印name 這時候的name的值是"黃偉" print(name) #3 第三步 打印name 這時候name="北爺" huangwei() #4 第四步 執行huangwei這個函數,開始向上找他 print(name)#5第五步 打印全局變量name

?

def gou():#1name = ""#2.1print (name)#2.2def mao():#2.3name = ""#2.4.1print (name)#2.4.2def zhu():#2.4.3name = ""#2.5.1.1print (name)#2.5.1.2zhu()#2.5.1print(name)#2.5.2mao()#2.4print (name)#2.5 gou()#2 C:\python35\python3.exe D:/pyproject/day14函數/hanshu.py狗貓豬貓狗

?

Name = "beiye" #1 定義一個全局變量 def weihou(): #2 把從函數到143行的放入內存中,等待被調用name = "沉著"#4.1 定義一個局部變量name = 沉著def weiweihou(): #4.2 又遇到def 把到141行的代碼再次放入內存,等待被調用global Name#4.3.1Name = "冷靜"#4.3.2 把全局變量修改為 "冷靜"weiweihou()#4.3 調用weiweihou ,開始向上找這個函數print(name)#4.4 打印下這個級別的name 是 沉著 print(Name)#3 打印一下全局變量 Name 等于 beiye weihou()#4 調用函數 weihou,開始網上找 weihou這個函數 print(Name) #5 打印下全局變量 這時候全局變量是冷靜了 C:\python35\python3.exe D:/pyproject/day14函數/hanshu.pybeiye沉著冷靜

?

那我要是想修改我上一級的name呢,而不是修改全局的name呢該怎么做呢

nonloca 這個關鍵字就是修改上一級的變量的,我們來測試下,還是上面的例子,改變下

nonlocal? 修改上一級的變量

?

Name = "beiye" #1 定義一個全局變量 def weihou(): #2 把從函數到143行的放入內存中,等待被調用name = "沉著"#4.1 定義一個局部變量name = 沉著def weiweihou(): #4.2 又遇到def 把到141行的代碼再次放入內存,等待被調用nonlocal name#4.3.1name = "冷靜"#4.3.2 把上一級的name變量修改為 "冷靜"weiweihou()#4.3 調用weiweihou ,開始向上找這個函數print(name)#4.4 打印下這個級別的name 是 沉著 print(Name)#3 打印一下全局變量 Name 等于 beiye weihou()#4 調用函數 weihou,開始網上找 weihou這個函數 print(Name) #5 打印下全局變量 這時候全局變量是冷靜了 C:\python35\python3.exe D:/pyproject/day14函數/hanshu.pybeiye冷靜beiye

?

轉載于:https://www.cnblogs.com/gouguoqilinux/p/9153381.html

總結

以上是生活随笔為你收集整理的python函数的 全局变量与局部变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。