Pyke 简介 (3) :调制 Python 函数
对 Python 函数的"调制",是指对其做出合乎需求的设置。具体的调制方法,是将其参数设为固定值(常数)。
设定单一的参数值
原先的函数是这样的:
>>> def foo(cooked, standard):
... print "foo called with cooked: %s, standard: %s" % \
... (cooked, standard)
调用它:
>>> foo('a', 'b')
foo called with cooked: a, standard: b
不过,想要的是让这个函数的第一个参数,变成"调制参数",并且只剩下第二个参数。
通过 Python 标准库模块functools的类partial,可以做到。
>>> from functools import partial
用 partial 调制第一个参数:
>>> cooked1 = partial(foo, 'cooked_value1')
原函数 foo 的第一个参数,被调制成为函数 cooked1,foo 的第二个参数,成了 cooked1 的唯一参数。
>>> cooked1('value1')
foo called with cooked: cooked_value1, standard: value1
>>> cooked1('value2')
foo called with cooked: cooked_value1, standard: value2
可以用其他值,生成调制函数:
>>> cooked2 = partial(foo, 'cooked_value2')
>>> cooked2('value1')
foo called with cooked: cooked_value2, standard: value1
>>> cooked2('value2')
foo called with cooked: cooked_value2, standard: value2
原本一个函数,现在调制成了两个,事半功倍呵。
>>> cooked1('value3')
foo called with cooked: cooked_value1, standard: value3
>>> cooked1('value4')
foo called with cooked: cooked_value1, standard: value4
>>> cooked2('value5')
foo called with cooked: cooked_value2, standard: value5
>>> cooked2('value6')
foo called with cooked: cooked_value2, standard: value6
如法炮制,可由原函数生成任意多个调制函数。
做出函数调用顺序图
用同样的调制技术,对调制出的函数,再次进行调制,可以产生下一级调制函数,......,由此逐步形成函数调用顺序图:
>>> def bar(child_fun, a):
... print "bar called with:", a
... return child_fun(a)
注意,函数 bar 的第一参数是个引用,即函数名。用这个办法,可以调制任何参数:
(其中的 float 和 min 是 Python 的内建函数)
>>> bar_f
相关文档:
原文地址 http://www.javaeye.com/wiki/Python/1371-python-graphics-library-pil-python-image-library-introduction
关于PIL库的一些概念
pil能处理的图片
类型
pil可以处理光栅图片(像素数据组成的的块)。
通道
一个图片可以包含一到多个数据通道,如果这些通道具有相同的维数和深度,Pil允许将这些通道进行叠加 ......
从去年还没毕业就接触Python,上周有些无聊重新再看一遍,发现其确实不错。语法简单,一个下午基本了解,使用Pydev插件在Eclipse中进行开发基本上没有任何障碍。重点是其效率很高,不需编译直接运行。比较适合进行数据的预处理。不错,以后有机会好好用用。 ......
字典(Dictionary)是一种映射结构的数据类型,由无序的“键-值对”组成。字典的键必须是不可改变的类型,如:字符串,数字,tuple;值可
以为任何python数据类型。
1、新建字典
>>> dict1={}
#建立一个空字典
>>> type(dict1)
<ty ......
这两个基本上都是在循环的时候用。
Python
代码 < type="application/x-shockwave-flash" width="14" height="15" src="http://cloudhe.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" src="http://cloudhe.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=for%20i% ......
列表
list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列
的项目。假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了。只不过在你的购物表上,可能每样东西都独自占有一行,而在Python中,
你在每个项目之间用逗号分割。
列表中的项目应该包括在方括号中,这样Python就知道你是 ......