FIG python06- memory functions, scopes, arguments, parameters,

A function memory of FIG.

1  "" " 
2      memory function in FIG
 3      Exercise: exercise06.py
 . 4      Exercise: exercise07.py
 . 5      15:40
 . 6  " "" 
. 7  
. 8  # stored in the method area the function code, the function thereof is not performed 
. 9  DEF fun01 (A):
 10      a = 100
 . 11  
12 is num01. 1 =
 13 is  # because the calling function, so that an open space of memory called stack frame 
14  # for storing the internal variables defined in the function (including parameters). 
15  fun01 (num01)
 16  # function completes after immediate release stack frame (which will be defined variable destruction). 
. 17  Print (num01) # . 1 
18 is  
. 19  DEF fun02 (a):
20      # change is passed mutable object 
21 is      A [0] 100 =
 22 is  
23 is list01 = [. 1 ]
 24  fun02 (list01)
 25  Print (list01 [0]) # 100 
26 is  
27  DEF fun03 (A):
 28      # change is fun03 stack frame variable a point 
29      a = 100
 30  
31 is  
32 list01 = [. 1 ]
 33 is  fun03 (list01)
 34 is  Print (list01 [0]) # . 1 
35  
36  
37 [  DEF fun04 (a):
 38 is      a [ 1] = [200 ]
 39  
40 list01 = [1,[2,3]]
41 fun04(list01)
42 print(list01[1])# [200]

Second, the scope

 1 """
 2     作用域
 3     练习:exercise08.py
 4 """
 5 # 全局变量
 6 g01 = "ok"
 7 
 8 # print(l01)
 9 def fun01():
10     # 局部变量:在函数内部定义的变量
11     l01 = 100
12 # print(l01)
13     print(l01)
14     #  在函数内部可以读取全局变量
15     # print(g01)
16 
17     # 创建了一个局部变量g01,而不是修改全局变量
18     # g01 = "no"
19 
20     # 定义全局变量g01
21     global g01
22     # 此时修改的是全局变量
23     g01 = "no"
24     print(g01)
25     # 定义全局变量g02
26     global g02
27     g02 = 250
28 
29 
30 fun01()
31 
32 print(g01)  # ?
33 
34 print(g02)

三、实参

 1 """
 2     函数参数
 3         实际参数
 4 """
 5 
 6 
 7 def fun01(a, b, c, d):
 8     print(a)
 9     print(b)
10     print(c)
11     print(d)
12 
13 # 17:00
14 # 位置实参:实参与形参根据位置进行依次对应.
15 # fun01(1, 2, 3, 4)
16 
17 # 关键字实参:实参与形参根据名称进行对应
18 # fun01(b=1, d=2, c=3, a=4)
19 
20 # 序列实参:星号将序列拆分后按位置与形参进行对应
21 #     如果参数很多,可以存储在序列(字符串/列表/元组)中,
22 #   再通过*拆分,直接传入函数.
23 # list01 = ["a","b","c","d"]
24 # fun01(*list01)
25 
26 # 字典实参:双星号将字典拆分后按名称与形参进行对应
27 #     如果参数很多,可以存储在字典中,
28 #    再通过**拆分,传入函数.
29 dict01 = {"a": 1, "c": 3, "d": 4, "b": 2}
30 fun01(**dict01)

四、形参

 1 """
 2     函数参数
 3         形式参数
 4     练习:exercise09.py
 5     练习:exercise10.py
 6 """
 7 
 8 
 9 # 1. 缺省(默认)形参:如果实参不提供,可以使用默认值.
10 def fun01(a=None, b=0, c=0, d=0):
11     print(a)
12     print(b)
13     print(c)
14     print(d)
15 
16 
17 # 关键字实参 + 缺省形参:调用者可以随意传递参数.
18 # fun01(b=2, c=3)
19 
20 # 2. 位置形参
21 def fun02(a, b, c, d):
22     print(a)
23     print(b)
24     print(c)
25     print(d)
26 
27 
28 # 3.星号元组形参: * 将所有实参合并为一个元组
29 # 作用:让实参个数无限
30 def fun03(*args):
31     print(args)
32 
33 
34 # fun03()# ()
35 # fun03(1)# (1,)
36 # fun03(1,"2")# (1, '2')
37 
38 # 4.命名关键字形参:在星号元组形参以后的位置形参
39 # 目的:要求实参必须使用关键字实参.
40 def fun04(a, *args, b):
41     print(a)
42     print(args)
43     print(b)
44 
45 
46 fun04(1, b=2)
47 fun04(1, 2, 3, 4, b=2)
48 
49 
50 def fun05(*, a, b):
51     print(a)
52     print(b)
53 
54 
55 fun05(a=1, b=2)
56 
57 
58 # 5. 双星号字典形参:**目的是将实参合并为字典.
59 #               实参可以传递数量无限的关键字实参.
60 def fun06(**kwargs):
61     print(kwargs)
62 
63 
64 fun06(a=1, b=2)

 

Guess you like

Origin www.cnblogs.com/libotao/p/12422224.html