09 函数进阶

1.作用域

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 1.作用域:全局作用域和局部作用域
# 全局:整个文件的位置都可以使用
# 局部:函数内部可以使用

# 2.局部变量:在函数内部定义的变量
# def test():
#     a = 1   # 局部变量:作用范围是在函数内部
#     b = 2
#     print(a + b)
# test()

# 3.全局变量:在函数外定义的变量;可以在多个函数中使用
# a = 1
# b = 2

# def test():
#     print(a + b)
# test()
#
# def test2():
#     print(a * b)
# test2()

# 4.全局变量和局部变量名字相同
# a = 10
# b = 20
#
# def test3():
#     a = 1   # 理解为定义了一个局部变量,而不是修改全局变量
#     b = 2
#     print(a + b)
#
# test3()
# print(a)

# 5.global 变量名
# 5.1修改全局变量
# c = 1
# def funa():
#     # 标识函数内部不是定义了一个局部变量,而是对全局的修改
#     global c
#     c = 2
#     print('函数中的值:', c)
#
# funa()
# print('函数外的值:', c)

# 5.2 利用global在局部作用域声明一个全局变量

# def funa():
#
#     global d, e
#     d = 3  # 局部变量--全局变量
#     e = 4
#     print(d, e)
#
# funa()
#
# print(d, e)  # 打印出的是全局变量

# def funb():
#     print(d, e)
#
# funb()

# 6.nonlocal:声明外层的局部变量  了解
# 1.用于嵌套函数中,外层和内层函数
# 2.局部变量:函数内定义的变量

# def funa():       # 外层函数
#     a = 1         # funa中的局部变量
#
#     def funb():   # 内层函数
#         nonlocal a    # 将fun_a中的值:a 换成 10
#         a = 10    # funb中的局部变量
#         print('funb中的值:', a)
#
#     funb()  # 调用内层函数funb
#     print('funa中的值:', a)
#
#
# funa()  # 调用外层函数funa

# print(a)  # nonlocal声明的变量只对局部起作用,离开了嵌套函数,这个变量就无序

# global:可以将局部变量变成一个全局变量
# nonlocal: 可以在内层函数中修改外层变量(这个变量不能是全局变量)

2.匿名函数(lambda函数)

在这里插入图片描述
练一练:1、if-else使用 2、求出某个数的平方值

# 1.匿名函数:没有名字的函数
# 语法: 函数名 = lambda 形参:返回值
# 调用: print(函数名(实参))

# 求和函数
def test(a, b):
    return a + b

# print(test(3, 4))

# 匿名函数
# funa = lambda a, b: a + b  # a,b 就是匿名函数的参数, a+b返回值
# 匿名函数不需要return来返回值,表达式本身结果就是返回值
# print(funa(4, 6))

# 练一练:1、if-else使用  2、求出某个数的平方值

#求平方
sq = lambda x:x*x
sq(3)

# 三目运算:  为真结果  if  条件  else  为假结果
a = 3
b = 4
# 条件:a<b
# print(a) if a < b else print(b)

# we = lambda a, b: print(a) if a < b else print(b)
# we(4, 5)



3.内置函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 1.内置函数
# import builtins       # 导入模块
# print(dir(builtins))  # 查看所有内置函数

# 1.1 list()
# st = 'abc'
# print(type(st))
# print(st)
# st2 = list(st)
# print(type(st2))

# 1.2 tuple()
# s3 = tuple(st)
# print(s3)
# print(type(s3))

# 1.3 abs()  返回绝对值
# print(4)  # 正数
# print(-4)   # 负数
# print(abs(-4))

# 1.4 sum() 求和
# li = [1, 2, 3]
# print(sum((1, 2, 3)))

# 1.5 min() 求最小值;  max()最大值
# print(max(li))

# 1.6 zip函数     :将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组。
# a = [1, 2, 3, 4]
# b = ['a', 'b', 'c']
# res = zip(a, b)
# print(list(res))      #结果:[(1, 'a'), (2, 'b'), (3, 'c')]
# for i in res:
#     print(i)

# 1.7map函数  map(函数名,列表)   因为还没学习可迭代对象,所以用列表举例
# 把参数中的函数依次作用在列表的每个元素上,返回新的列表
# li = [1, 2, 3]
#
# def funa(x):
#     return x*2

# print(funa(3))
# mp = map(funa, li)
# print(mp)
# print(list(mp))


# 1.8 reduce()  reduce(函数名,列表)      # 对参数序列中元素进行累积

# from functools import reduce
# li2 = [1, 2, 3, 4]
#
# def func(x, y):
#     return x + y
#
# res = reduce(func, li2)
# print(res)

4.拆包

在这里插入图片描述

# 1.9  拆包
# 列表拆包
# li = [1, 2, 3, 4]
# a, b, c, d = li
# print(a, b, c, d)

# a, *b = li
# print(a)
# print(b)

# 元组拆包
# tu = (1, 2, 3)
# *a, b = tu
# print(a)
# print(b)

# 函数拆包
def test():
    a = 10
    b = 20
    c = 30
    return a, b, c   # 返回多个值,用元组的形式接收

print(test())
# a1, b1, c1 = test()
# print(a1, b1, c1)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值