Dive into python第四章自省的威力笔记

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是指针操作。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值