扫码关注官方订阅号
今天看python的闭包。虽然知道怎么在程序里添加一个闭包 可是还是弄不明白 写程序的时候,怎么样合理的使用他。
要是想输出n的值 直接 print n 就好了 为什么还要用一个闭包来实现他?
大家有什么例子 在函数中 只能是闭包才可以实现,普通的函数没有办法做到的? 或者用了闭包 能让代码看起来更加优美的例子?
人生最曼妙的风景,竟是内心的淡定与从容!
pyhton 的装饰器呀
pyhton
看看这个,比较详细 Python中的闭包
假如我们的程序需要一个验证器,它是一个函数,检查输入字符串的长度小于100视为合法,否则抛出Exception异常,这样函数外部的调用者可以通过try-except来检查某次输入是否合法,那么这个验证器函数长这个样子:
Exception
try-except
def validator(s): if len(s) < 100: return raise Exception('Length of string must be less than 100!')
这样我们就可以在这些需要检查字符串长度小于100的地方使用这个验证器。但问题来了,如果我们的程序有多处需要用到这类验证器,以检测输入字符串长度必须满足小于n,比如有个地方需要检查长度小于16, 还有28、39等等,难道我们按照上面代码的写法写多个validator?即便这么做,名字也难取!
答案就是用函数工厂,用闭包来完成:
def max_length(n): def validator(s): if len(s) < n: return raise Exception('Length of string must be less than {0}!'.format(n)) return validator
这样,如果我们需要检查字符串长度小于16的验证器,max_length(16)就可以得到一个,如果是n,则max_length(n)。
max_length(16)
max_length(n)
这是个实际案例,来自 MongoKit in Flask
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
pyhton的装饰器呀看看这个,比较详细 Python中的闭包
假如我们的程序需要一个验证器,它是一个函数,检查输入字符串的长度小于100视为合法,否则抛出
Exception异常,这样函数外部的调用者可以通过try-except来检查某次输入是否合法,那么这个验证器函数长这个样子:这样我们就可以在这些需要检查字符串长度小于100的地方使用这个验证器。但问题来了,如果我们的程序有多处需要用到这类验证器,以检测输入字符串长度必须满足小于n,比如有个地方需要检查长度小于16, 还有28、39等等,难道我们按照上面代码的写法写多个validator?即便这么做,名字也难取!
答案就是用函数工厂,用闭包来完成:
这样,如果我们需要检查字符串长度小于16的验证器,
max_length(16)就可以得到一个,如果是n,则max_length(n)。这是个实际案例,来自 MongoKit in Flask