一、不定长参数
全局变量:顶格写的变量,在任何地方都可以使用 局部变量:
在代码组中定义,只能在代码组中使用
#函数定义 def opration(a,b,c,d): sum1 = a + b + c + d print(sum1) opration(1,2,3,4) #使用容器作为参数 def opration(*args): sum1 = 0 for var in args: sum1+=var return sum1 res = opration(1,2,3,4) print(res) # * 垃圾回收站,他不能接收关键字参数,不能接收关键字参数 #带* 的参数要放在形参的最后面 def opration(a,b,c,*d): print(a) print(b) print(c) print(d) opration(1,2,3,4,5,6,7) # **接收不定长关键字参数,只能放在最后 def opration(a,b,c,d,*args,**kwargs): print(a,b,c,d) print(args) print(kwargs) opration(1,2,3,4,5,6,7,A = 9,B = 0)
二、函数闭包
函数闭包:内部函数调用外部函数的变量(非全局变量, 则称内部函数为闭包 即调用一个函数,返回一个新的函数来,称为闭包
def func(): num = 1 def func1(): num=2 print(num) print(num) func1() print(num) func() #1,2,1 #先return inner这个函数,之后res代表inner,而num1传入了20 def outer(num1): def inner(num2): return num1 + num2 return inner res = outer(20) result = res(10) print(result) #在使用闭包的时候,在内部没有引用的外部变量才可以 #而内部有使用时,代码会运行内部的变量,而导致没定义的报错 # def outer(a): # def inner(): # a = a+1 # return a # return inner # res = outer(1) # result = res() # print(result) def outer(a): def inner(): a[0] = a[0]+1 #使用容器后,并没有定义a,而是对a的一个取值 return a return inner res = outer([1]) result = res() print(result)
三、字符串和列表的切片
[开始索引:结束索引:间隔] 切片操作(结束索引取不到)
不加结束索引代表从开始索引取到最后
间隔缺省则是1
str1 = "停车坐爱枫林晚,霜叶红于二月花" print(str1[-3],str1[-2],str1[-1]) print(str1[-3:]) print(str1[::2]) print(str1[4:0:-1]) print(str1[::-1 ]) var = range(100) print(var[25:31]) print(var[70:83:3]) print(var[90:84:-1]) print(var[99:69:-5]) print(var[-10:-30:-2]) print(var[90:200]) #a取到90到99 print(var[150:200])#取出来为空。