python哪些不需要縮進(jìn)?
全局變量:指在函數(shù)之外定義的變量,一般沒有縮進(jìn),在程序執(zhí)行的全過程有效
局部變量:指在函數(shù)內(nèi)部使用的變量,僅在函數(shù)內(nèi)部有效,當(dāng)函數(shù)退出時(shí)變量將不存在
例1:
n = 1 # 全局變量
def func(a, b):
c = a * b # c是局部變量,a和b作為函數(shù)參數(shù)也是局部變量
return c
s = func("knock~", 2)
print(s)
print(c)
![]()
這個(gè)例子說明,當(dāng)函數(shù)執(zhí)行完退出后,其內(nèi)部變量將被釋放。
如果函數(shù)內(nèi)部使用了全局變量呢?例如:
n=1 #n是全局變量
def func(a,b):
n=b #這個(gè)n是在函數(shù)內(nèi)存中新生成的局部變量,不是全局變量
return a*b
s=func("knock~",2)
print(s,n) #測(cè)試一下n值是否發(fā)生改變knock~knock~ 1
![]()
函數(shù)func()內(nèi)部使用了變量n,并且將變量參數(shù)b賦值給變量n,為何n值沒有改變?
因?yàn)楹瘮?shù)func()有自己的內(nèi)存空間,它將n=b語句理解為生成一個(gè)局部變量n,并將參數(shù)b賦值給它,此時(shí)func()函數(shù)沒有將n當(dāng)作全局變量。所以,函數(shù)退出后,局部變量n被釋放,全局變量n的值沒有改變。
如果希望讓func()函數(shù)將n當(dāng)作全局變量,需要在變量n使用前顯式說明該變量未全局變量,修改后:
n = 1 # n是全局變量
def func(a,b):
global n
n = b # 這個(gè)n是在函數(shù)內(nèi)存中新生成的局部變量,不是全局變量
return a*b
s = func("knock~",2)
print(s, n) # 測(cè)試一下n值是否發(fā)生改變knock~knock~ 1
![]()