函数
文章目录
- 函数
- 1.函数基础
- 2.函数参数
- (1)必选参数
- (2)默认参数
- (3)可变长参数
- (4)关键字可变参数
- (5)参数的混合使用
- 3.函数返回值
- 4.函数的嵌套调用
- 5.函数的全局变量和局部变量
- 6.函数参数引用传值
- (1)不可变类型
- (2)可变类型
- 7.匿名函数
- 8.递归函数
- 9.内置函数
- (1)取绝对值
- (2)取近似值
- (3)指数运算
- (4)取最大值
- (5)求商和余数
- (6)求和
- (7)执行字符串表达式的值
- (8)进制转换函数
- (9)类型转换函数
- 10.序列操作
- (1)all()
- (2)any()
- (3)sort排序
- (4)sorted排序
- (5)打包操作
- (6)同时列出数据项和下标
- 11.集合
- (1)创建集合
- (2)添加操作
- (3)清空操作
- (4)差集操作
- (5)交集操作
- (6)并集操作
- (7)从集合中随机拿走数据并在集合中删除
- (8)移除指定元素
- (9)集合的更新
1.函数基础
def printinfo(name):'''函数说明:return:'''print('1的名字%s'%name)print('2')print('3')print('4')pass
printinfo('zqz')
结果:
1的名字zqz
2
3
4
2.函数参数
(1)必选参数
def sum(a,b): #形参,无实际意义sum=a+bprint(sum)pass
sum(1,2) #实参,占用内存地址
#sum() #没给参数赋值,报错
结果:
3
(2)默认参数
def sum1(a=20,b=30):print('默认参数%d'%(a+b))pass
sum1() #调用时未赋值,使用默认值
sum1(10) #给第一个参数赋值,第二个仍用默认值
sum1(10,20) #给两个参数都赋值
结果:
默认参数50
默认参数40
默认参数30
(3)可变长参数
def sumabs(*args):print(args) #args是元组类型pass
sumabs(1)
sumabs(1,2)
结果:
(1,)
(1, 2)
(4)关键字可变参数
def keyfunc(**kwargs): #字典类型print(kwargs)pass
keyfunc()
dictA={'name':'jkl'}
keyfunc(**dictA)
keyfunc(height=30)
结果:
{}
{'name': 'jkl'}
{'height': 30}
(5)参数的混合使用
def complexfunc(*args,**kwargs):print(args)print(kwargs)pass
complexfunc()
complexfunc(1,2,age=25)
complexfunc({'name':'ghu'})
complexfunc(**{'name':'ghu'})
结果:
()
{}
(1, 2)
{'age': 25}
({'name': 'ghu'},)
{}
()
{'name': 'ghu'}
3.函数返回值
def Sum(a,b):sum = a+breturn sum #将计算的结果返回pass
rs=Sum(10,20) #计算结果返回到调用的地方
print(rs)
结果:
30
4.函数的嵌套调用
def fun1():print('开始执行1')print('代码')print('结束执行')pass
def fun2():print('开始执行2')fun1()print('结束执行')pass
fun2()
结果:
开始执行2
开始执行1
代码
结束执行
结束执行
5.函数的全局变量和局部变量
#局部变量:函数内部定义的变量,作用域在函数内部
pro='cs' #全局变量
name='qwe' #全局变量和局部变量重复定义,优先执行内部定义变量
def printinfo():name='jkl'print(name,pro)pass
def TJ():print(name)passdef yim():name='uio'print(name,pro)passdef changeglob(): #修改全局变量,关键字globalglobal propro='gis'pass
changeglob()
print(pro)
printinfo()
#TJ() #没有全局变量的时候,不能打印name,name只在printinfo函数内部
yim()
结果:
gis
jkl gis
uio gis
6.函数参数引用传值
(1)不可变类型
a=1
def func(x):print(id(x))x=2print('x值修改之后地址{}'.format(id(x)))print(x)pass
print('a的地址:{}'.format(id(a)))
func(a)
print(a)
结果:
a的地址:1871781194032
1871781194032
x值修改之后地址1871781194064
2
1
(2)可变类型
li=[]
def tE(params):li.append(35) #对列表操作,则在原来的基础上操作# global li# li=[35] #若是对全局变量进行修改,重新分配内存print('jkl',id(li))print(id(params))print(params)pass
print(id(li))
tE(li)
print(li)
结果:
1871787961920
jkl 1871787961920
1871787961920
[35]
[35]
7.匿名函数
M=lambda x,y:x+y #通过变量去调用和接收
print(M(23,87))
#替代传统双分支
rs=lambda x,y:x if x>y else y
print(rs(2,5))
结果:
110
5
8.递归函数
def dg(n):if n==1:return 1else:return n*dg(n-1)pass
print(dg(4))
结果:
24
9.内置函数
(1)取绝对值
print(abs(-5))
结果:
5
(2)取近似值
print(round(3.19,1))
结果:
3.2
(3)指数运算
print(pow(2,3))
结果:
8
(4)取最大值
print(max([23,154,8]))
print(max('abc'))
结果:
154
c
(5)求商和余数
print(divmod(8,3))
结果:
(2, 2)
(6)求和
print(sum([0,1,2],6))
结果:
9
(7)执行字符串表达式的值
a,b,c=1,2,3
print(eval('a+b-c'))
结果:
0
(8)进制转换函数
print(bin(11)) #二进制
print(hex(22)) #十六进制
结果:
0b1011
0x16
(9)类型转换函数
#元组转换为列表
tup=(1,2)
li=list(tup)
print(li)
#将列表转换为元组
tu=tuple(li)
print(tu)
#转换为字典形式
dic=dict(a=1,b='l')
print(dic)
结果:
[1, 2]
(1, 2)
{'a': 1, 'b': 'l'}
10.序列操作
(1)all()
print(all([])) #空元组、空列表返回值为true
print(all(()))
print(all([0,1,2]))
print(all([False,1,2]))
print(all(['',1,2]))
结果:
True
True
False
False
False
(2)any()
print(any([0,1]))
print(any([0,False]))
结果:
True
False
(3)sort排序
li=[1,58,46]
li.sort()
print(li)
结果:
[1, 46, 58]
(4)sorted排序
li1=[1,87,56]
print('排序前',li1)
sorted(li1)
print('排序后',li1) #不是在原来的基础上修改,返回一个新的列表
vs=sorted(li1,reverse=True) #接收新列表
print(vs)
结果:
排序前 [1, 87, 56]
排序后 [1, 87, 56]
[87, 56, 1]
(5)打包操作
s1=[1,2,3]
s2=[4,5,6]
print(list(zip(s1)))
print(list(zip(s1,s2)))
结果:
[(1,), (2,), (3,)]
[(1, 4), (2, 5), (3, 6)]
(6)同时列出数据项和下标
litu=['a','b','c']
print(list(enumerate(litu,3))) #3代表起始下标
结果:
[(3, 'a'), (4, 'b'), (5, 'c')]
11.集合
(1)创建集合
set1={1,2,3}
(2)添加操作
set1.add('jkl')
print(set1)
结果:
{1, 2, 3, 'jkl'}
(3)清空操作
set1.clear()
print(set1)
结果:
set()
(4)差集操作
set2={1,2,3}
set3={1,3,4}
ghu=set2.difference(set3) #2有的3没有
print(ghu)
结果:
{2}
(5)交集操作
ty=set2.intersection(set3)
print(ty)
结果:
{1, 3}
(6)并集操作
ty1=set2.union(set3)
print(ty1)
结果:
{1, 2, 3, 4}
(7)从集合中随机拿走数据并在集合中删除
qwe=set2.pop()
print(qwe)
print(set2)
结果:
1
{2, 3}
(8)移除指定元素
set3.discard(1)
print(set3)
结果:
{3, 4}
(9)集合的更新
set2.update(set3) #将3中的加入2中,类似于求并集
print(set2)
结果:
{2, 3, 4}