Python基础学习之函数进阶、全局变量、作用域、匿名函数、内置函数、拆包

一、作用域

  1. 局部变量< 全局变量
  2. 在函数内部使用变量一般先从函数内部找(就像有私人手机情况下一般不用公用电话)
  3. 函数间不能 共享内部定义的 函数变量
  4. 函数间可以使用全局变量
  5. 全局作用域–全局变量
      函数外部定义的变零在整个文件中有效
    6.局部作用域–局部变量
      函数内部定义的变量 从定义位置 开始到定义结束
    7.将局部变量 转为 全局变量
      gloabal(局部声明全局变量时需在使用此变量之前进行)+变量名,变量名, , ,
      nonlocal(不能转换为全局变量)(在内层函数里 将内层函数的 变量声明为 外层函数的 局部变量,只限于一层,且此变量不能是 全局变量)
    8.Python函数对变量的作用遵守如下原则:
      1.简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放;
      2.简单数据类型变量在用global保留字声明后,作为全局变量;
      3.对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可直接使用并修改全局变量的值;
      4.如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作。

二、匿名函数

  1. 语法:函数名=lambda 形参:返回值
  2. lambda 是定义匿名函数的关键字, 相当于def
  3. 调用: 结果=函数名(实参)

三、内置函数

  1. 查看所有内置函数
import builtins
print(dir(builtins))

2.print()/ list()
3.abs() 返回绝对值
4. set()创建无序不重复元素集 tuple() 将一个可迭代对象转换为元组
5. sum() 求和
6. min() 求最小值 max() 求最大值
7. zip(可迭代对象) 将可迭代对象作为参数,将对象中的对应的元素打包成一个个元组
8. map(函数,可迭代对象) 可以对迭代对象中的每一个元素进行映射 ,分别执行
9. reduce(函数(x,y)(必须为两个参数),可迭代对象) 对参数序列中的元素进行累积
   先把对象中的前两个元素取出,计算成一个新值保存,在将此值与第三个元素计算


四、拆包

  1. 对于函数多个返回数据,去掉元组列表和字典,直接获取里面数据的过程
  2. 取值 用下标 用切片 用循环遍历 用推导式+“ ”.join() 用拆包
  3. 和函数参数一样,对应
name1='全局name1'
name='全局name'
def fun():
    # nonlocal name# 不能转换为全局变量
    name1='外层name1'
    name2='外层name2'
    def fun1():
        nonlocal name1
        name1='嵌套name1'
        name2='嵌套name2'
        print('嵌套函数的变量',name1,name2)#嵌套函数的变量 嵌套name1 嵌套name2
        def fun2(name1):
            nonlocal name2
            name2='嵌套内name2'
            # name1='嵌套内嵌套name1'
            print('嵌套内的嵌套的变量',name1,name2)#嵌套内的嵌套 嵌套name1 嵌套内name2
        fun2(name1)
        print('嵌套函数的变量', name1, name2)#嵌套函数的变量 嵌套name1 嵌套内name2
    fun1()
    # name1='外层name1'
    global name#可以转换为全局变零,
    name='外层name'
    print('外层函数的变量',name,name1,name2)#外层函数的变量 外层name 嵌套name1 外层name2
fun()
print('全局变量',name,name1)#全局变量 外层name 全局name1
# 匿名函数 与三目运算符的使用
res=lambda a,b:a+b#
#不需要写return 本身包含
# 三目运算 为真 if 条件 else 为假
print(res(2,3))#5
#匿名函数与if 三目运算
res1=lambda a:print(a) if a>4 else print('输小了')# 多个None
res2=lambda a:a if a>4 else '输小了'
print(res1(10),res2(10))
pf=lambda a:a**2
print(pf(2))#4

# 查看内置函数(所有)
import builtins
# print('\n'.join(dir(builtins)))
# print(dir(builtins))# 控制台第三个键
print(sum([1,2,3,4,5]))
# zip 拉链函数 函数将对象作为参数 将里面对应的元素打包岑戈元组
a=[1,2,3]
print(min(a),max(a))#1 3
b=['a','b','c']
print(zip(a,b))#<zip object at 0x000002460F4E8848>
print(list(zip(a,b)))# 转换为列表输出 [(1, 'a'), (2, 'b'), (3, 'c')]
print([i for i in zip(a,b)])#for循环遍历输出
# map 映射函数  将对象中每一个元素进行映射
li=[1,2,3]
def fun(x):
    return x+3
n=map(fun,li)#将fun函数依次作用在li列表每个元素上
print(list(n))#[4, 5, 6]

print(list(map(lambda x:x*3,[1,2,3])))#[3, 6, 9]
# 拆包
tu=(1,2,3,4)
a,b,c,d=tu
e,*f=tu
g,h,j=f
print(a,b,c,d)#1 2 3 4


*当全世界都说你是疯子的时候,你就离成功不远了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值