Python—全局變量、局部變量、匿名函數

 

局部變量和全局變量數據結構

 1 college1 = 'JMU'      #全局變量
 2 def change_name(name):
 3     college1 = 'LiGong' #局部變量,此函數是其做用域
 4     # global school    #能夠在函數內定義全局變量,這樣在函數外調用函數體內的school則不會報錯。可是千萬不要這麼幹!不要在函數體內定義全局變量
 5     # school = 'jmu'
 6     print("before change:%s"%name,college1)
 7     name = 'GKX'  #局部變量,此函數是其做用域
 8     print('After change:%s'%name)
 9 
10 name = 'gkx'
11 change_name(name)
12 print('now name is:%s'%name)
13 print(college1)
14 >>>>>> 15 before change:gkx LiGong  #在函數體內部college的值是 ‘LiGong’,在其做用域內 16 After change:GKX 17 now name is:gkx       #在函數外name的值仍是gkx 18 JMU              #在函數外college的值仍是JMU

 

局部變量不能改全局變量主要是隻字符串和數值,一些複雜的數據結構【字典,列表,集合,類】是能夠改的。注意元組不行,由於元組自己就是不可變動的。ide

 1 names = ['gkx','lion','cat']
 2 def change_name():
 3     names[0]='chimpanzee'
 4     print("inside func ",names)
 5 change_name()
 6 print(names)
 7 
 8 >>>>>
 9 inside func  ['chimpanzee', 'lion', 'cat']
10  ['chimpanzee', 'lion', 'cat']

 

global 和 nonlocal函數

 1 a = 1
 2 def outer():
 3     a = 1
 4     print('outer')
 5     def inner():
 6         print('inner')
 7         def inner2():
 8             nonlocal a   #聲明瞭一個上一層的局部變量,對全局無效,對局部也只是對最近的一層有影響此處如果 global 會修改全局,最上層的a。
 9             a += 1    #此處如果沒聲明 nonlocal  a是不能被改變的
10             print('inner2222')
11             print('***a***, ',a)
12         inner2()
13     inner()
14 
15 outer()
16 print(a)
17 >>>>
18 outer
19 inner
20 inner2222
21 ***a***,  2
22 1

 

 

 

lambda匿名函數spa


 

1 calc = lambda x:x*3   #用lambda定義了匿名函數
2 print(calc(3))
3 >>>>>>94 >>>>print(calc)  是內存地址5 #lambda只能處理三元運算,複雜的相似for循環就處理不了了6 x = lambda n:3 if n<3 else n  x(7)>>>>>>7   
相關文章
相關標籤/搜索