Python-函数

作用域、函数嵌套和闭包

  • 使用嵌套函数要注意一点就是作用域问题,inside() 函数是内嵌在 outside() 函数中的,只有 outside() 调用,在外边或者别的函数体里是无法对其进行调用的。
def outside():
    print('I am outside!')
    def inside():
        print('I am inside!')
#错误的引用
inside() 
#正确的引用
 	inside()
outside()
  • 下面这个例子没看懂。为什么代码 A 没有报错,但代码 B 却报错了?

代码A

def outside():
    var = 5
    def inside():
        var = 3
        print(var)
        
    inside()
outside()

代码B

def outside():
    var = 5
    def inside():
        print(var)
        var = 3
        
    inside()
outside()
仔细一看报错的内容是:UnboundLocalError: local variable 'var' referenced before assignment,说的是变量 var 没有被定义就拿来使用,肯定错啦!
这里 outside() 函数里有一个 var 变量,但要注意的是,内嵌函数 inside() 也有一个同名的变量,Python 为了保护变量的作用域,故将 outside() 的 var 变量屏蔽起来,因此此时是无法访问到外层的 var 变量的。

lambda表达式

作用

1.创建匿名函数,运行后释放函数体,不占用资源。
2.适用于执行脚本和出现一两次的函数
3.增加代码可读性

格式

g=lambda x:3*x+1
g(5)
g=lambda x,y:x*y
g(3,6)

高端一点的用法:

lambda x : x if x % 2 else None

等价于:

def is_odd(x):
        if x % 2:
                return x
        else:
                return None

BIF

filter()过滤器

  • 格式1
list(filter(None,[0,1,False,True,236]))

结果:[1, True, 236]

  • 格式2——求奇数
list(filter(lambda x:x%2,range(10)))

结果:[1, 3, 5, 7, 9]

map()映射

  • 格式
list(map(lambda x:x*2,range(10)))

结果:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值