Dive Into Python学习笔记3

chap4 自省的威力
4.1、概览
Python中万物皆对象,自省是指代码可以查看内存中以对象形式存在的其他模块和函数,获取它们的信息,并对它们进行操作。用这种方法,可以定义没有名称的函数,不按函数声明的参数顺序调用函数,甚至引用事先并不知道名称的函数。
4.2、使用可选参数和命名参数
def info(object, spacing=10, collapse=1)
spacing和collapse是可选参数,因为已定义的缺省值。
object是必备参数,因为没有缺省值。
在python中,参数可以通过名称以任意顺序指定:
info(spacing=3,odbchelper)
可意识到参数不过是一个字典。
4.3、使用type、str、dir和其它内置函数
(1)、type函数返回任意对象的数据类型。在types模块中列出了可能的数据类型。
>>> type(1)
>>> li =[]
>>> type(li)
>>> li = {}
>>> type(li)
>>> import odbchelper
>>> type(odbchelper)
>>> import types
>>> type(odbchelper) == types.ModuleType
True
(2)、str函数将数据强制转换为字符串。
每种数据类型都可以强制转换为字符串。
>>> str(None)
'None'
str 的一个细小但重要的行为是它可以作用于 None,None 是 Python 的 null 值。这个调用返回字符串 'None'。
(3)、dir函数返回任意对象的属性和方法列表,包括模块对象、字符串对象、列表对象、字典对象。
(4)、callable函数
接收任何对象作为参数,如果参数对象是可调用的,返回 True;否则返回 False。可调用对象包括函数、类方法,甚至类自身
>>> import string
>>> string.punctuation
'!"#$%&\'()*+,-./:;?@[\\]^_`{|}~'
>>> string.join
>>> callable(string.punctuation)
False
>>> callable(string.join)
True
注:string.punctuation 是不可调用的对象;它是一个字符串。
string.join 是可调用的;这个函数可以接受两个参数。
(5)、内置函数
type、str、dir 和其它的 Python 内置函数都归组到了 __builtin__ (前后分别是双下划线) 这个特殊的模块中。如果有帮助的话,你可以认为 Python 在启动时自动执行了 from __builtin__ import *,此语句将所有的 “内置” 函数导入该命名空间,所以在这个命名空间中可以直接使用这些内置函数。
17:31 2008-10-16
4.4 通过getattr获取对象引用
getattr(object, "attribute") 等价于 object.attribute
如果 object 是一个模块的话,那么 attribute 可能是定义在模块中的任何东西:函数、类或者全局变量。
getattr 能够使用可选的第三个参数,一个缺省返回值。