函数的综合应用
1. 列表推导式
表达的变量要与循环中的变量名称一致
c1 = [x for x in range(10)]
print(c1)
c2 = [x for x in range(10) if x%2==0]
print(c2)
c3= [(x,y) for x in range(3) for y in range(3)]
print(c3)
2. 组包与拆包
拆包的时候变量个数要与包里边元素的个数的相同
# 组包
a = 1,2,3,4,5
print(a)
print(type(a))
# 拆包 拆包的时候变量个数要与包里边元素的个数的相同
a1,a2,a3 = {'a':'7', 'b':'3', 'c':'4'}
print(a1,a2,a3)
3. 函数返回多个值
返回的类型会是元组
def test():
c = [1,6,7,8,9]
# m =max(c)
# n=min(c)
c.sort()
print(c)
m = c[len(c)-1]
n = c[0]
return m,n
print(test())
4. 函数的嵌套调用与递归
def a():
print('a start')
b()
print('a stop')
def b():
print('b start')
c()
print('b stop')
def c():
print('c start')
print('c stop')
a()
递归:自己调用自己
# 递归的调用
def jiec(a):
if a ==1:
return 1
return a*jiec(a-1)
print(jiec(3))
5. 局部变量和全局变量
'''
全局变量不在函数体内或者不在循环体内的
不可变类型的全局变量修改需要加上global,注意不能再global前使用全局变量
'''
s = 'hello'
def test():
# s = 'haha'
# print(s)
global s
s = 'python'
print(s)
def test1():
print(s)
test()
test1()
6.引用
'''
# 引用就是数据在内存中存储时的内存编号
# 通过 id() 函数可以得到数据在内存中的地址
'''
print(id(1))
print(id(1))
print(id(1))
a = 1
print(id(1))
print(id(a))
b = a
print(id(b))
a = 2
print('-----------')
print(id(1))
print(id(2))
print(id(a))
print(id(b))
'''
可变对象的修改
'''
c_l = []
print(id(c_l))
c_l.append(1)
print(id(c_l))
7.函数的默认值参数
关键字参数 | 就是输入实参的时候指定 |
---|---|
默认值 | 定义形参的时候给与一个默认值,注意默认值右边不能有其他别的参数出现 |
# 关键字参数
def test2(a,b):
print(a)
for c in b:
print(c)
test2(1,'hello')
# test2('hello',2) TypeError: 'int' object is not iterable
test2(b='hello',a=1)
def test(a=0,b=0):
print(a+b)
test()
test(1)
test(1,2)
# 默认值的右侧不能出现其他的参数
def test1(a,b=0,c=0):
print(a+b+c)
test1(2)
test1(2,2,2)
8.不定长位置参数和关键字参数
*args | 不定长位置参数,接收的参数会形成一个元组输出 |
---|---|
**kwargs | 不定长关键字参数,类型dict |
def test(*args):
print(args)
for c in args:
print(c)
test()
test(1,2,3)
# 不定长关键字参数
def test2(**kwargs):
print(kwargs)
print(type(kwargs))
test2()
test2(a=1,b=2)
9.混合参数的写法
def test(a,b,c,*args,e=1,**kwargs):
print(a,b,c)
print(args)
print(e)
print(kwargs)
# test(1,2,3)
test(1,2,3,1,2,1,2,1,u=2,v=5)
10.可变参数的二次传递
def fun(a,*args,**kwargs):
print(a)
print(args)
print(*args)
dis(*args) #手动解包
print(kwargs)
def dis(a,b,c,d):
print(a,b,c,d)
fun(1,4,5,6,7,c=3,d=4)