1 print('可变对象在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。例如:')
2 '演示列表的打印'
3 listdemo=[]
4 listdemo.append([11,22,33])
5 print(listdemo)
6
7 '调用函数演示'
8 def changme1(mylist):
9 mylist.append([1,2,3,4,5])
10 # print(mylist)
11 return
12
13 mylist=[10,20,30]
14 changme1(mylist)
15 print(mylist)
16
17 print('调用函数传参类型-------------------------------------------------------------')
18 '--必传参数'
19 def printme(str):
20 print(str)
21 return
22 printme('heheda')
23
24 '--关键字参数'
25 def keyword_parameter(str):
26 print(str)
27 return
28
29 keyword_parameter(str='i am hehe')
30
31 '--调用时不需要指定顺序'
32 def parameter_noorder(name,age):
33 print(name,end='')
34 print(age)
35 return
36 parameter_noorder(90,'老奶奶')#只传入参数的值的话,值按函数的顺序顺序进行分配:90老奶奶
37 parameter_noorder(age=90,name='老爷爷')#既传入参数的值也传入参数名的话,会按函数体进行执行:老爷爷90
38
39 '--使用默认参数'
40 def parameter_acquescent(name,age=22):
41 print(name,end=',')
42 print(age)
43 return
44 parameter_acquescent('张三')#没有穿参数的话使用默认参数:张三,22
45 parameter_acquescent('李四',24)#传了参数到时候使用传了的参数:李四,24
46 #parameter_acquescent(age=24)#丢个参数会出错
47 parameter_acquescent(name='王五')
48
49 '--不定长参数'
50 def length_change(arg1,*vartuple):
51 print('呵呵哒:%s'%arg1)
52 print(*vartuple)#变量名前有没有*都行
53 return
54 length_change(10,20,30,40,50)
55
56 '---打印出元组中的元素'
57 def length_change1(arg1,*vartuple1):
58 print(arg1)
59 for var in vartuple1:
60 print(vartuple1)
61 return
62
63 length_change1(10)
64 length_change(11,22,33,44)
65 '---导入字典类型参数'
66 def length_change3(agr3,**vardict):
67 print(agr3)
68 print(vardict)
69 return
70 length_change3(33)
71 length_change3(33,a=11,b=22)
72 # length_change3(1,2,3,4,5,6)#这样写会出错
73 print('---单独出现*必须以关键字传入')
74 def jo1 (a,b,*,c):
75 return a+b+c
76 # print(jo1(1,2,3,))#这样写会出错
77
78 print(jo1(1,2,c=3))#这样写则是正确的
79
80 jo01=jo1(1,2,c=5)
81 print(jo01)
82
83 print('--匿名函数lambda')
84 sum = lambda arg1,arg2 :arg1+arg2
85 print(sum(10,20))
86 print(sum(11,22))
87
88 print('--return语句')
89 def sum(arg1,arg2):
90 total=arg1+arg2
91 return total
92
93 jo_sum = sum(10,20)
94 print(jo_sum)
95 '或者这样写'
96 print(sum(11,22))
97
98
99 print('--全局变量与局部变量')
100 total3=2
101 def sum3(arg3,arg4):
102 total3=arg3+arg4
103 print(total3)
104 return total3
105
106 jo3=sum3(22,33)
107 print(jo3)
108
109 sum3(11,55)#f返回值:66,调用函数及函数中的功能
110
111 print(total3)#返回至为:2,调用了全局变量total3=2
112
113 print('--当内部作用域想修改外部作用域的变量时,就要用到global')
114 num = 44
115 def jo4():
116 num=55
117 print(num)
118 return
119 '这句话是调用函数的意思'
120 jo4()
121
122
123 '比较上下两种写法的不同'
124 num = 11
125 def jo4():
126 global num
127 print('呵呵哒',num)
128 num=10
129 print(num)
130 return
131 jo4()
132
133 print('如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:')
134 def outer():
135 num=11
136 def inner():
137 num=22
138 print(num)
139 inner()
140 print(num)
141 outer()
142
143 '--内部使用外部的'
144 def outer():
145 num=11
146 def inner():
147 nonlocal num#这句话的意思可以通俗的理解为打破界限
148 num=22
149 print(num)
150 inner()
151 print(num)
152 outer()
153
154
155 print('特殊情况')
156 a=10
157 def sum():
158 a =a +10
159 return
160 sum()
161 '上面这段代码会出错注释掉,下面的可以正常执行'
162 def sum():
163 a = 10
164 a =a +10
165 print(a)
166 return
167 sum()