#**段1
>>> def fun1():
print('外層函式正在被呼叫')
def fun2():
print('內層函式正在被呼叫')
>>> fun1()
外層函式正在被呼叫
#**段2
>>> def fun1():
print('外層函式正在被呼叫')
def fun2():
print('內層函式正在被呼叫')
fun2()
>>> fun1()
外層函式正在被呼叫
內層函式正在被呼叫
>>> fun2() #內嵌函式直接被呼叫
traceback (most recent call last):
file "", line 1, in fun2()
nameerror: name 'fun2' is not defined
注:①內嵌函式不能再外層函式被呼叫的過程中自動被呼叫 ②內部函式不能被外部直接使用,需要通過其外層函式的呼叫發揮作用
>>> def funx(x):
def funy(y):
return x*y
return funy #返回內層函式
>>> funx(2)(5) #對閉包的呼叫
10#注:
>>> m=funx(2) #只對外層函式進行了呼叫
>>> type(m) #所以函式的返回型別及m的型別為function
>>> m(3) #繼續對內層函式進行呼叫
6
>>> num=3
>>> def count():
global num
num=5
print(num)
>>> count()
5>>> num
5
注:能不直接訪問全域性變數盡量不要訪問,如需使用全域性變數可以使用函式進行傳參。
>>> def fun1():
x=5def fun2():
nonlocal x
x+=7
return x
return fun2
>>> fun1()()
12
#例子1:
def funx():
x=5def funy():
nonlocal x
x+=1
return x
return funy
a=funx()
print(a())
print(a())
print(a())
#例子2:
def funx():
x=5def funy():
nonlocal x
x+=1
return x
return funy
a=funx()
print(a())
a=funx()
print(a())
a=funx()
print(a())
#例子1結果:67
8#例子2結果:66
6
注:例子2中區域性變數x在每次呼叫時都被重新賦值了,所以結果都是6。但是例子1中,a=funx()的時候,只要a變數沒有被重新賦值,funx()就沒有被釋放,也就是說區域性變數x沒有被重新初始化。
注:當全域性變數不適用時,可以考慮使用閉包更安全更穩定
020 Python變數的三個特徵
對於每個變數,python都提供了這三個方法分別獲取變數的三個特徵,其中python的內建功能id 記憶體位址不一樣,則id 後列印的結果不一樣,因為每乙個變數值都有其記憶體位址,而id是用來反映變數值在記憶體中的位置,記憶體位址不同則id不同 x 10print x 獲取變數的變數值 print ...
Python初學筆記
工作需要,要接觸python的程式,學習一下 使用的3.2版本 話說比2.5變化還真多 print都變了 總體感覺,py比較perl來說,特點還是非常之強烈的 1 py可以自動字串複製 x 3 x 3 333 2 py是強型別變數,和perl不同,型別變數不能混用 3 字串連線 號和join等str...
Python 初學筆記
def to celsius t return t 32.0 5.0 9.0 在函式名後用冒號,不是等號。函式實際定義在下一行,該行縮排4個空格,並以return 標記。str t 將t轉換為字串 12 str 34 56 123456 在字串兩端的單引號或者雙引號分別替代成3個,即可擴充套件為多行...