Python学习笔记

嵌套函数作用域

def make_adder(augend):
  def add(addend):
    return augend + addend
  return add

内部的函数可以访问外部函数scope内的变量,但是不能够重新对其赋值。如果重新赋值那么会在内部函数的scope内创建一个同名的本地变量(Python不允许对non-local变量赋值)。

yield和生成器(generator)

generator是通过执行generator function来创建的。generator function是函数体中有yield语句的函数。generator的用途是用来生成一系列的值,generator.next()可以获取到下一个值,注意,由此可以看出generator是可以迭代的(iterable),所以可以使用for...in语句来遍历generator能够生成的所有值。

with语句和context manager

介绍with语句之前首先要介绍context manager。context manager是有两个特殊方法(__enter__()和__exit__())的类。以下面的with语句为例:

with open('data.txt') as f:
    lines = f.readlines()

 上面的代码其实就等同于:

f = open('data.txt')
try:
    lines = f.readlines()
finally:
    f.close()

 open()函数打开一个文件,返回一个file对象,file类就是一个context manager。在进入到 lines = f.readlines() 之前 ,会先执行file.__enter__()方法,该方法返回self,也就是file对象本身。然后在退出with语句块(lines = f.readlines())之前执行file.__exit__(type,value,traceback)方法。with语句的好处是通过context manager封装了try...finally语句,起到代码重用的目的。

 

 

转载于:https://www.cnblogs.com/strikew/p/3398040.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值