Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74705
  • 博文数量: 12
  • 博客积分: 1425
  • 博客等级: 上尉
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-11 09:15
文章分类

全部博文(12)

文章存档

2011年(1)

2010年(3)

2008年(8)

我的朋友

分类: Python/Ruby

2008-10-16 18:14:22

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 能够使用可选的第三个参数,一个缺省返回值。
阅读(1158) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

zredkid2008-11-06 15:49:26

好同学,你怎么不继续往下学了,我还等着看呢!就下一章“5. 对象和面向对象”我看得稀里糊涂的不明白,等着你讲呢!:)