首页 > 深入Python > 自省的威力 > type,str,dir,和其它内置函数 | << >> |
diveintopython.org |
|
Python for experienced programmers |
Python有小部分相当有用的内置函数。其它的所有函数都划分到不同的模块中去了。这一点实际上是有意识的设计决定,是为了保证核心语言避免象其它脚本语言一样变得臃肿(咳,咳,VB)。
type 函数返回任意对象的数据类型。可能的类型列在了 types 模块内。这些类型对帮助者(helper)函数有用,可以处理几种数据类型。
>>> type(1) <type 'int'> >>> li = [] >>> type(li) <type 'list'> >>> import odbchelper >>> type(odbchelper) <type 'module'> >>> import types >>> type(odbchelper) == types.ModuleType 1
type 接收任何事物,并且返回它的数据类型。我的意思是任何东西。整数,字符串,列表,字典,序列,函数,类,模块,甚至类型。 |
|
type 可以接收变量并返回它的数据类型。 | |
type 也可以用于模块。 | |
你可以使用 types 模块中的常量用来比较对象的类型。这就是 help 函数所做的,这一点很快会看到。 |
str 强制将数据转化为字符串。每一种数据类型都可以被转化为字符串。
>>> str(1) '1' >>> horsemen = ['war', 'pestilence', 'famine'] >>> horsemen.append('Powerbuilder') >>> str(horsemen) "['war', 'pestilence', 'famine', 'Powerbuilder']" >>> str(odbchelper) "<module 'odbchelper' from 'c:\\docbook\\dip\\py\\odbchelper.py'>" >>> str(None) 'None'
help 函数的核心是强大的 dir 函数。dir 返回任意一个对象的属性和方法的列表:模块,函数,字符串,列表,字典...相当多的东西。
>>> li = [] >>> dir(li) ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> d = {} >>> dir(d) ['clear', 'copy', 'get', 'has_key', 'items', 'keys', 'setdefault', 'update', 'values'] >>> import odbchelper >>> dir(odbchelper) ['__builtins__', '__doc__', '__file__', '__name__', 'buildConnectionString']
li 是一个列表,所以 dir(li) 返回列表所有方法的一个列表。注意返回的列表包含着字符串表示的方法的名字,而不是方法自身。 |
|
d 是一个字典,所以 dir(d) 返回字典方法的名字的列表。其中至少有一个方法,keys,应该看上去熟悉。 |
|
这里就是真正变得有趣的地方。odbchelper 是一个模块,所以 dir(odbchelper) 返回在模块中定义的所有东西的列表,包括内置属性,象 __name__ 和 __doc__,和你定义的属性和方法其它什么的。在这个例子中,odbchelper 仅有一个用户自定义方法,buildConnectionString 函数,我们在开始了解Python中学过的。 |
type,str,dir,和所有其它的Python内置函数被组合进一个名叫 __builtins__ 的特别模块中。(它在前后有两个下划线。)如果有帮助的话,你可以认为Python在启动时自动地执行 from __builtins__ import * ,这样就导入了所有内置的函数到名字空间中,所以你可以直接使用它们。
象这样考虑的好处是,你可以通过得到 __builtins__ 的信息,作为一个组,存取所有内置的函数和属性。猜到什么了吗?我们有一个实现那个功能的函数,它叫做 help。自已试一下然后现在完全忽略列表;在后面我们将深入到一些更重要的功能。(一些内置错误类,象 AttributeError,应该看上去已经熟悉了。)
>>> from apihelper import help >>> help(__builtins__, 20) ArithmeticError Base class for arithmetic errors. AssertionError Assertion failed. AttributeError Attribute not found. EOFError Read beyond end of file. EnvironmentError Base class for I/O related errors. Exception Common base class for all exceptions. FloatingPointError Floating point operation failed. IOError I/O operation failed. [...snip...]
Python附带了出色的参考手册,你应该十分仔细地阅读它们,学习Python所提供的所有的模块。对于大多数语言,你会发现自已要经常回头参考手册(或man文档,或上帝来帮助你,MSDN)来提醒自已如何使用这些模块,而Python大部分是自我文档化的。 |
进一步阅读 |
|
« 可选和定名参数 | 使用 getattr 得到对象的各种引用 » |