分类: Python/Ruby
2010-12-16 13:59:05
在学习 Python 之前,我们先学几个内置函数,这对于了解 Python 的一些原理是非常有用的。
id()
如果我们能获取对象(变量、方法或类型实例)的 "内存地址" 对于我们了解引用机制还是非常不错的。
id() 返回一个对象的 "唯一序号",转换成 16 进制就是所谓的内存地址了,为了图方便后面直接使用 id(),不再转换成 16 进制。
>>>>>> def Foo():
pass
>>>>>> Foo
<function Foo at 0x00DC6EB0>
>>>>>> hex(id(Foo))
'0xdc6eb0'
>>>>>>
dir()
方法 dir() 能帮我们了解对象包含哪些成员。
>>>>>> dir(Foo)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
>>>>>>
type()
type() 让我们知道变量的实际类型。
>>>>>> type(Foo)
<type 'function'>
>>>>>>
isinstance()
isinstance() 可以确认某个变量是否某种类型。
>>>>>> s = "Xwy2.com"
>>>>>> isinstance(s, str)
True
>>>>>>
issubclass()
该函数可以判断继承关系。
>>>>>> issubclass(int,object)
True
>>>>>>
is
多数情况下,我们可以直接使用 "==" 来判断两个对象是否相等。但 Python 同样支持运算符重载,因此使用 is 来代替应该更安全一点(C# 中经典的 Equals 问题)。
>>>>>> class MyClass:
def __ini__(Self):
self.x = 123
def __eq__(self, o):
return self.x == o.x
>>>>>> a = MyClass()
>>>>>> b = MyClass()
>>>>>> print hex(id(a))
0xdcea80
>>>>>> print hex(id(b))
0xdc4b98
>>>>>> print a == b
true
>>>>>> print a is b
false
LoongTsui按:Python里一切均是对象,Python 提供了很棒的自省能力,自省揭示了关于程序对象的有用信息。Python自带的Help指令就是有其自省能力实现的,下面补充一下对Help指令的介绍
启动Help指令
输入help()会启动help指令,最后进入help>提示符,如果输入keywords,将列出Python的所有关键字:
输入modules将列出Python所有可用的模块:
可以输入上面列出的所有指令,查看其帮助信息
help指令还有使用方式,在 Python Shell 提示符>>>下,输入 help("modules") 这样。
上面介绍的内置函数和help实用程序是很方便很有用处的。
关于自省的更为详细的介绍,请参见:Python 自省指
转载自: