《深入理解Python》读书笔记Ⅱ

1、type函数返回任意对象的数据类型。type可以接收任何东西作为参数——整型、字符串、列表、字典、元组、函数、类、模块、甚至类型对象,并返回它的数据类型。可以使用types模块中的常量来进行对象类型的比较。

import myModule

import types

type(myModule) == types.MuduleType      #返回True


2、str函数将数据强制转换为字符串,每种数据类型都可以强制转换为字符串。

horsemen = ['war','pestilence','famine']

str(horsemen)      #返回"['war','pestilence','famine']"

str(myModule)       #返回"<module 'myModule' from 'c:\\docbook\\dip\\py\\myModule.py'>"

str(None)      #返回‘None’


3、dir函数返回任意对象的属性和方法列表,包括模块对象、函数对象、字符串对象、列表对象、字典对象......


4、callable函数:它接收任何对象作为参数,如果参数对象是可调用的,返回True;否则返回False。可调用对象包括函数、类方法、甚至类本身。


5、string.punctuation:它是一个字符串,包含了所有标准的标点符号字符。


6、getattr函数获取一个直到运行时才知道名称的函数的引用。

li = ["Larry", "Curly"] 
li.pop                      #返回 <built-in method pop of list object at 010DF884> 
getattr(li,  "pop")          #返回 <built-in method pop of list object at 010DF884> 
getattr(li,  "append")("Moe")        #此时li 为["Larry", "Curly", "Moe"] 
getattr({}, "clear")         #返回 <built-in method clear of dictionary object at 00F113D4> 

li.pop 该语句获取列表的pop方法的引用。

getattr(li,  "append")("Moe") ,getattr的返回值是方法,然后就可以调用它,就像直接使用li.append("Moe")一样。

通常,getattr(object , "attribute")等价于 object.attribute

getattr通常的使用模式是作为一个分发者!举个例子 ,如果你有一个程序可以以不同的格式输出数据,你可以为每种输出格式定义各自的格式输出函数,然后使用唯一的分发函数调用所需的格式输出函数。 例如,让我们假设有一个以 HTML、XML 和普通文本格式打印站点统计的程序。 输出格式在命令行中指定,或者保存在配置文件中。statsout 模块定义了三个 函数:output_html、output_xml 和 output_text。然后主程序定义了唯一的输出函数 , 

import statsout 
def output(data, format="text"):                              
    output_function = getattr(statsout, "output_%s" % format, statsout.output_text)
    return output_function(data)   

这个函数调用添加了第三个参数,第三个参数是一个缺省返回值,如果第二个参数指定的属性或者方法没能找到,泽将返回这个缺省返回值。


7、过滤列表

过滤列表语法:[mapping-expression for element in source-list if filter-expression]

以if开头的是过滤器表达式,过滤器表达式可以使返回值为真或假的任何表达式,任何经过滤器表达式演算值为真的元素都可以包含在映射中,其他元素都将忽略,不会进入映射表达式,更不会包含在输出列表中。

li = ['a','mpilgrim','foo','b',c','b','d','d']

[elem for elem in li if len(elem) > 1]        #返回['mpilgrim','foo']

Python遍历整个列表,它将对每个元素执行过滤器表达式,如果过滤器表达式演算值为真,该元素就会被映射,同时映射表达式的结果将包含在返回的列表中。


8、and和or的特殊性质

使用and时,在布尔环境中从左到右演算表达式的值。如果布尔环境中的所有值都为真,那么and返回最后一个值,如果布尔环境中的某个值为假,则and返回第一个假值。

使用or时,在布尔环境中从左到右演算值,如果有一个值为真,or立刻返回该值。如果所有的值都为假,or返回最后一个假值。注意or在布尔环境中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值。


9、split函数不带参数:不带参数的spit按照空白进行分割。

s = "this is\na\ttest"

print s

this is

a test

print s.split()

['this','is','a','test']


10、ljust方法:ljust用空格填充字符串以符合指定的长度,如果指定的长度小于字符串的长度,ljust将简单地返回未变化的字符串,它决不会截断字符串。

s = 'buildConnectionString'

s.ljust(30)     #返回'buildConnectionString         '

s.ljust(20)     #返回'buildConnectionString'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值