函数及变量的类型167

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

猜你喜欢

转载自www.cnblogs.com/jpr-ok/p/9210417.html
167