Python学习—(4)Python函数

函数 文章目录 函数1.函数基础2.函数参数(1)必选参数(2)默认参数(3)可变长参数(4)关键字可变参数(5)参数的混合使用 3.函数返回值4.函数的嵌套调

函数

文章目录

  • 函数
    • 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}