函数的综合应用---(python10)

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)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安有故里y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值