Dive into python第四章自省的威力笔记
2014-10-05 16:42
393 查看
Python的自省能力使其想Matlab一样,每次不熟悉某个函数怎么用时help一下。 getattr(), dir(), help()是几个关键自省的函数。以下是dive into python 第四章的个人认为需要注意的几点细节:
1. python的type类型,打开python模块中types.py源代码,可以看到,python大致有这些类型:
2. 任何类型都可以被str()强制转化为字符串,所以str(None)就是‘None’。
3. string.join 和join不是一个函数,但是功能一样。但是好像很多书中都不推荐string模块。
4. getattr(object, method,option) 是一个强大的内置函数,一个常用的作用是让其作为一个分发器,以下是一个例子,用于调用statsout.py模块,输出不同类型。
5. list有一个count函数用于计数list中出现某元素的次数
6. python中0, '', [], (), {}, None是FALSE,其他的都是TRUE。and输出第一个False的值,如果都是TRUE则输出最后一个TRUE的值;or输出第一个为真的值,如果都是FALSE,那么输出最后一个FALSE值。所以有一个很好的像if一样的2选1的用法:
7. is 比==快速,因为is主要是判断2个变量是否引用的是同一个对象,==是比较。目测is是指针操作。
1. python的type类型,打开python模块中types.py源代码,可以看到,python大致有这些类型:
NoneType = type(None) TypeType = type ObjectType = object IntType = int LongType = long FloatType = float BooleanType = bool StringType = str UnicodeType = unicode BufferType = buffer TupleType = tuple ListType = list DictType = DictionaryType = dict ModuleType = type(sys) FileType = file XRangeType = xrange SliceType = slice
2. 任何类型都可以被str()强制转化为字符串,所以str(None)就是‘None’。
3. string.join 和join不是一个函数,但是功能一样。但是好像很多书中都不推荐string模块。
4. getattr(object, method,option) 是一个强大的内置函数,一个常用的作用是让其作为一个分发器,以下是一个例子,用于调用statsout.py模块,输出不同类型。
"""这个是statsout.py 模块"""
def statsout_html(data): """Format data as HTML""" def statsout_xml(data): """Format data as XML""" def statsout_text(data): """Format data in plain text""" print str(data)
"""根据输入的format参数选择不同类型输出"""
import statsout def output(data,format="text"): return getattr(statsout,"statsout_%s" %format,statsout.statsout_text)(data) #第三个参数用于设置第二个参数失效时 if __name__=='__main__': output(['sa'],'pdf')
>>> ================================ 输出 ================================ >>> ['sa']
5. list有一个count函数用于计数list中出现某元素的次数
6. python中0, '', [], (), {}, None是FALSE,其他的都是TRUE。and输出第一个False的值,如果都是TRUE则输出最后一个TRUE的值;or输出第一个为真的值,如果都是FALSE,那么输出最后一个FALSE值。所以有一个很好的像if一样的2选1的用法:
>>> a = "first" >>> b = "second" >>> 1 and a or b 'first' >>> 0 and a or b 'second'但是如果a是FALSE那么就会失效,这时可以将a和b用[]框起来,使其[a]一直不为FALSE,
>>> a = "" >>> b = "second" >>> (1 and [a] or [b])[0] ''
7. is 比==快速,因为is主要是判断2个变量是否引用的是同一个对象,==是比较。目测is是指针操作。
相关文章推荐
- [Dive into Python:第四章]:自省的威力
- Dive in Python学习笔记四:自省的威力
- 《Dive Into Python》笔记:关于元组与字符串
- Dive Into Python 学习记录2-自省/info 函数 /str / type /callable 函数
- 《Dive into python》 学习笔记 CH1-CH4
- Dive into python 第5和6章面向对象学习笔记
- Python 研究(Dive Into Python)笔记1--第2章 第一个 Python 程序
- Python初学笔记(1)——基于《Dive Into Python》5.4b版本pdf
- Dive into python 实例学python (2) —— 自省,apihelper
- Dive into python 第4章 自省的威…
- 《Dive into Python》读书笔记之内省的威力
- 《Dive Into Python》笔记:关于字典和列表
- Python 研究(Dive Into Python)笔记2--第3章 内置数据类型
- dive into python -- 笔记
- <Dive into Python>大补贴(1)
- <Dive into Python>大补贴(2)
- <Dive into Python>大补贴(2)
- Dive into python
- What’s New In “Dive Into Python 3” Python 3中的新玩意儿
- Python 学习笔记 - 2.自省