您的位置:首页 > 编程语言 > Python开发

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大致有这些类型:

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是指针操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: