python -- 函数、集合
1、集合
集合也属于一种数据类型,类似于list,具有无序、去重的特点,即集合里没有重复的数据。
通过{}来定义集合,用set()来强制转换成集合。
1 list = [1,2,2,4,5,3,2] #定义列表 2 s_list = set(list) #强制转换为集合 3 print(s_list) 4 5 s_list_2 = {1,2,3,3,4,5} #通过{}直接定义集合 6 print(s_list_2)
集合操作
set1.intersection(set2) 交集:两个集合都有
set1.union(set2) 并集:两个集合所有合并,自动去重
set1.difference(set2) 差集:两个集合,其中一个有,即集合1有,集合2没有
set3.issubset(set1) 子集:set3是否为set1的子集
set1.issuperset(set3) 父集:set1是否为set3的父集
1 set1 = {1,2,3,4,5,6} 2 set2 = {2,3,4,7,8} 3 set3 = {5,6} 4 5 print(set1.intersection(set2)) #交集 6 print(set1.union(set2)) #并集 7 print(set1.difference(set2)) #差集,set1有,set2没有 8 print(set3.issubset(set1)) #子集,set3是否为set1子集 9 print(set1.issuperset(set3)) #父集,set1是否为set3的父集 10 11 set1.add(7) #添加元素 12 set1.update([77,66,66]) #添加元素 13 set1.remove(77) #删除元素,若不存在会报错 14 set1.pop() #随机删除元素,并返回删除的元素 15 set1.discard(2) #删除元素,若存在,则删除,不存在则不做处理
2、函数
函数是一组语句的集合, 通过函数名封装起来,用到时直接调用即可。
函数定义
定义函数用def关键字,后面跟函数名,注意函数名不能重复
1 def fun(): #定义一个函数,后面是函数名 2 print("Hello World") #函数体
函数参数
函数的参数有形参、实参之分,形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。
因此,形参只在函数内部有效。实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用
时,它们都必须有确定的值,以便把这些值传送给形参。函数调用结束返回主调用函数后则不能再使用该形参变量。
1 def plus(a,b): #a,b为形参 2 print(a+b) 3 plus(2,3) #2,3为实参
形参
分为位置参数、默认参数、可变参数、关键字参数四种;
位置参数就是按照参数位置进行传参,如下面例子的a,b就是位置参数,位置参数是必传参数
默认值参数就是在定义形参时给定一个默认值,若指定默认值,则默认值参数为指定值,若未指定默认值,则按默
认值传参;
可变参数的参数是不固定的,可变参数用【*args】表示,可变参数必须在位置参数和默认值参数后面,是非必传参数
关键字参数用【**kwargs】表示,需要用关键字传参,也是非必传参数;
1 def regedit(name,sex,age=18,*args,**kwargs): 2 print(name,sex,age=18,*args,**kwargs) 3 regedit("bob","male","score","addr",phone="137xxxxxx")
函数返回值
函数都有返回值,若未在函数里指定返回值,则在执行完返回none,函数也可有多个返回值,并存入一个元组
函数返回值使用return,函数遇到return就立即结束
1 def plus(a,b): 2 c = a + b 3 return c,a,b 4 print(plus(2,3)) #返回一个元组(5, 2, 3)
3、局部变量和全局变量
局部变量只在函数内部生效,全局变量在整个程序都生效,定义爱程序最前面的都是全局变量,在函数中修改的话,需要
使用【global】关键字声明,如果是局部变量,则不需加【global】
1 name = 'marry'#字符串全局变量 2 names = []#list全局变量 3 print(name) 4 print(names) 5 6 def test(): 7 global name #修改name的值就需要用global关键字 8 name = 'Sriba' 9 names.append(name)#修改全局变量names的值 10 return names 11 test()调用函数 12 print('修改后',name) 13 print('修改后names',names)