关于python 闭包的一个问题(闭包有点难理解)
python 核心编程(第二版) 中 ,11.8.4 闭包有个例子
def counter(start_at=0):
count = [start_at]
def incr():
count[0] += 1
return count[0]
return incr
难道其中count[] 一定要是列表吗?改成了count(如下)就不能运行了吗?
def counter(start_at=0):
count = start_at
def incr():
count += 1
return count
return incr
有高手知道这是为什么吗?
怎么没人会这个问题吗
闭包我也看不懂有啥作用,不过总的没啥关系吧,应该说是python的特性吧,当你在incr里count += 这个时候count就成了局部变量,而不是counter里那个,讷么+=之前你要先count=啥的。不过counter是个函数,你又不好用global或者类的.操作符去界定它的count变量,那么用个可变的list似乎就顺里成章,因为只对它的元素操作,那么incr的count还是等同counter里那个。
nonlocal没用过的说,还蹲在2.x里...
incr里没有global counter 的话,改不了counter,只能读,
试试下面的例子就知倒
count = 1
def incr():
count += 1 # error
return count
print incr()
在比较这个
count=[1]
def incr():
相关问答:
刚刚买了一本《Python核心编程》,开始学习python。大家多多指教
电子书就很多。。。
《Python核心编程》这书的第一版还是不错的,第二版很不咋的,真的。
个人的意见是:初学用《Dive in Python》, ......
我想用python解析网页中的url 在下载之前, 我想先发一个head请求 不需要下载整个网页, 先获得该网站的head信息, 读取一些信息之后 在调用这些库的read方法来读取整个网页 该怎么操作呢 多谢
帮顶了
有人能指教一 ......
python的PIL库自带的方法只能进行矩形的切割,如果我有了一个多边形各个顶点的坐标,如何对现有的图片按照这个多边形进行切割呢?
不一定要用PIL库,任何能实现这个功能的方法都行。
图片切割的js不是很多吗?
......
由于是初学,在些请教大家。
Python code:
from urllib import request
import struct
class csdn:
def __init__(self):
print ('Hello,this is a init')
def getContent(self,url) ......