1 out_list = ['I am the outlist']
2
3 def case1():
4 # out_list is the global varible because it is not assigned in
5 # the function. It is only referenced
6 out_list.append('modified in case2')
7 print('in-case1 print: %s' % out_list)
8 return
9
10
11 def case2():
12 # can not use (reference) un-defined variable
13 inner_list.append('added in case2')
14 print('in-case2 print: %s' % inner_list)
15 return
16
17
18 def case3():
19 # out_list is a local variable here because is assigned
20 out_list = []
21 out_list.append('modified in case4')
22 print('in-case4 print: %s' % out_list)
23 return
24
25
26 def case4():
27 # explictly use out_list
28 global out_list
29 out_list.append('modified in case3')
30 print('in-case3 print: %s' % out_list)
31 return
32
33
34 def case5():
35 # interestingly, if out_list appears somewhere in function,
36 # it is treated as a local variable
37 # This, is because when python is parsing fucntions, it will find
38 # all the assignment in this function (like out_list = []), if there
39 # is one, this variable will be treated as local variable
40 out_list.append('modified in case5')
41 print('in-case5 print: %s' % out_list)
42 out_list = []
43 out_list.append('modified in case5')
44 print('in-case5 print: %s' % out_list)
45 return
46
47
48 def case6():
49 # use global and assign in function again
50 global out_list
51 out_list.append('modified in case5')
52 print('in-case6 print: %s' % out_list)
53 out_list = []
54 out_list.append('modified in case5')
55 print('in-case6 print: %s' % out_list)
56 return
57
58
59 def case7():
60 # use global before assignment, the varible is a global variable now!
61 # then you can print inner_list outside the function
62 global inner_list
63 inner_list = []
64 inner_list.append('modified in case7')
65 return
66
67
68 if __name__ == '__main__':
69 case1()
70 print('out-function print: %s' % out_list)