局部變量,全局變量,作用域


全局變量,局部變量 ,作用域

  • 全局變量
    定義在函數外部一級代碼的變量,叫全局變量
  • 局部變量
    在函數里面定義的變量,叫局部變量,只能在函數內部使用,如果全局變量跟局部變量名一樣,優先使用函數局部的變量
  • 作用域
    分為:
    L (Local) 局部作用域
    E (Enclosing) 閉包函數外的函數中
    G (Global) 全局作用域
    B (Built-in) 內建作用域
    以 L –> E –> G –>B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內建中找。

在函數內部,可以引用全局變量

name = 'zk'    # 全局變量 全局作用域
def change():

    name = '小黃'     # 在函數里面是局部變量   局部作用域
    print(id(name))
    print(name)
change()
print(name,id(name))

在函數里修改全局變量

只需要在函數里聲明變量前加 global 變量名

name = 'zk'
def change():
    global name
    name = '小黃'
    print(id(name))
    print(name)
change()
print(name,id(name))

在函數里修改列表數據

names = ['zk','cz','hc','th']

def set_names():


   # names = ['zk','hc','th']
    del names[1]    # 全局的元素可以修改 
    names[1] = 'xiaohan'   # 可以修改的有列表,字典等
    print(names) 
set_names()
print(names)       
# 輸出
['zk', 'xiaohan', 'th']
['zk', 'xiaohan', 'th']

如果要全部修改,就要global

names = ['zk','cz','hc','th']

def set_names():

    global names
    names = [1,2,3,4]
    del names[1]
    names[1] = 'xiaohan'
    print(names)
set_names()
print(names)

輸出

[1, 'xiaohan', 4]
[1, 'xiaohan', 4]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM