1锌雀、局部變量
局部變量:它是定義在函數(shù)內(nèi)部的變量夯辖,使用范圍只在函數(shù)內(nèi)部,其作用是在函數(shù)內(nèi)部臨時的保存函數(shù)內(nèi)部所需要的數(shù)據(jù)玉罐,那么為什么是“臨時保存”呢?因為局部變量的生命周期是從函數(shù)執(zhí)行到該行代碼塊開始到函數(shù)執(zhí)行結(jié)束潘拨。不同函數(shù)之間具有相同名字的局部變量互不干涉吊输,可以在各自的函數(shù)中獨立使用。下面是對局部變量的演示:
def demo_01():
exm = 66
print("demo_01 --> %d" % exm)
def demo_02():
exm = 99 # 在demo_02中也定義一個exm的局部變量
print("demo_02 --> %d" % exm)
demo_01() # 輸出為:demo_01 --> 66
demo_02() # 輸出為:demo_02 --> 99
2铁追、全局變量
全局變量:它是在函數(shù)之外定義的變量季蚂,該變量的使用范圍是可以在定義它的整個模塊中使用,即不僅可以在函數(shù)之外使用琅束,也可以在函數(shù)之中使用扭屁。
注意:函數(shù)體中使用賦值語句并不會修改全局變量的值。當(dāng)全局變量和函數(shù)中的局部變量名字一樣時涩禀,函數(shù)體內(nèi)部優(yōu)先使用函數(shù)體中的局部變量料滥。 即:
1、當(dāng)函數(shù)中使用變量時艾船,首先會在函數(shù)內(nèi)部查找該變量葵腹,如果有該變量高每,直接使用;
2践宴、如果函數(shù)內(nèi)部并沒有該變量鲸匿,那么函數(shù)會查找在函數(shù)執(zhí)行之前的代碼中是否有該全局變量,如果有則直接使用阻肩;
3带欢、如果都沒有,則程序報錯磺浙。
舉例如下:
exm = 20
def demo_01():
print("demo_01 --> %d" % exm)
def demo_02():
exm = 99 # 在demo_02中也定義一個exm的局部變量
print("demo_02 --> %d" % exm)
print(num) # 程序報錯洪囤;NameError: name 'num' is not defined
demo_01() # 輸出為:demo_01 --> 20
demo_02() # 輸出為:demo_02 --> 99
# 發(fā)現(xiàn)當(dāng)函數(shù)體中局部變量和全局變量名字一樣時徒坡,會優(yōu)先使用函數(shù)體中的局部變量撕氧,并且使用復(fù)制語句并沒有修改全局變量的值。
但有時確實需要在函數(shù)體內(nèi)部修改全局變量喇完,此時就要用到global關(guān)鍵字伦泥。用法是在函數(shù)體中使用global關(guān)鍵字聲明全局變量即可。
exm = 20
def demo_01():
global exm
exm = 50
print("demo_01 --> %d" % exm)
def demo_02():
print("demo_02 --> %d" % exm)
demo_01() # 輸出為:demo_01 --> 50
demo_02() # 輸出為:demo_02 --> 50