函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
一、判断是不是什么类型:isinstance(变量,类型)
示例:tuple1 = (1,2,3)
print(isinstance(tuple1,tuple))
结果:True
二、可变和不可变:
可变:地址不变,里面内容改变 list、dict、set
示例:list1 = [1,2,3,4,5]
list2 = list1
list1.remove(5)
print(list2)
结果:[1,2,3,4]
不可变:只要内容改变,必须改变地址 int、str、tuple
示例:str1 = "abc"
str2 = str1
str1 = "ab"
print(str2)
结果:"abc"
三、**kwarges:
只要外面给函数送值,送的值必须是key=values的形式
示例:def func(**kwargs):
print(kwargs)
func(a=1,b=2,c=3)
结果:{'c': 3, 'b': 2, 'a': 1}
四、全局变量 和 局部变量
全局变量如果是不可变,在函数中进行修改需要添加global关键字
如果是可变的,................则不需要添加
五、关于*args与**karges
① *arges ---元组
示例:def func(a,*arges):
print(a,arges)
t1 = (1,2,3)
func(1,t1) # 1 ((1,2,3),)
func(1,*t1) # 1 (1,2,3)
l1 = [1,2,3]
func(1,l1) # 1 ([1,2,3],)
func(1,*l1) # 1 (1,2,3)
② **karges ---字典
示例:def func(a,**kwargs):
print(a,kwargs)
d1 = {'1':'a','2':'b','3':'c'}
func(1,**d1)
结果:1 {'2': 'b', '3': 'c', '1': 'a'}
六、练习
def func(a,*args):
print(a,args)
func(2,3,4,5) # 2 (3,4,5)
func(2,[1,2,3,4]) # 2 ([1,2,3,4])
func(2,3,[1,2,3,4,5]) # 2 (3,[1,2,3,4,5])
func(5,6,(4,5,7),9) # 5 (6,(4,5,7),9)
def func(a,b=10,c=3,**kwargs):
print(a,b,c,kwargs)
func(1) # 1 10 3 {}
func(2,b=10) # 2 10 3 {}
# func(3,5,7,a=1,b=2) # TypeError: func() got multiple values for argument 'a'
func(3,5,7,x=1,y=2) # 3 5 7 {"x":1,"y":2}
def func(a,*args,**kwargs):
print(a,args,kwargs)
t = (1,2,3,4)
func(1,t) # 1 ((1,2,3,4)) {}
l = [2,5,8]
func(1,l,c=9,b=6) # 1 ([2,5,8]) {"c":9,"b":6}
func(1,*l,c=9,b=6) # 1 (2, 5, 8) {'b': 6, 'c': 9}
dict1 = {'1':'a','2':'b','3':'c'}
func(1,2,3,4,5,**dict1) # 1 (2,3,4,5) {'3': 'c', '1': 'a', '2': 'b'}