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()