[Python 学习笔记] 1: 基础中的基础
2009-10-13 00:00:00 来源:WEB开发网用了两天 Python,竟让我想起曾相伴了 7、8 年的 Delphi。抛开动态语言语法层面的东西不谈,它的代码组织方式和 Delphi 倒是十分类似。Module 类似 Delphi Unit,同样可以包含全局变量、方法以及类型(Class)。当然,Python 可能比 Delphi 更适合用来 "玩",毕竟便捷高效的语法,没有内存泄漏的 GC 都可以让我们用很少的时间写出一些可以运行的东西。Python 的历史远比 Java / C# 来得早一些,发展到今天已经非常成熟了,其跨越几乎所有主流平台的特性也非常适合作为日常工具语言。
在学习 Python 之前,我们先学几个内置函数,这对于了解 Python 的一些原理是非常有用的。
id()
如果我们能获取对象(变量、方法或类型实例)的 "内存地址" 对于我们了解引用机制还是非常不错的。
id() 返回一个对象的 "唯一序号",转换成 16 进制就是所谓的内存地址了,为了图方便后面直接使用 id(),不再转换成 16 进制。
>>> def test():
pass
>>> test
<function test at 0x00D393F0>
>>> hex(id(test))
'0xd393f0'
dir()
方法 dir() 能帮我们了解对象包含哪些成员。
>>> dir(test)
['__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() 让我们知道变量的实际类型。
>>> a = 13
>>> type(a)
<type 'int'>
isinstance()
isinstance() 可以确认某个变量是否某种类型。
>>> a = "abc"
>>> isinstance(a, str)
True
issubclass()
该函数可以判断继承关系。
>>> issubclass(int, object)
True
需要说明的是,这些有关 Python 的文章仅仅是个人学习笔记,并不能用作教程之类的。
is
多数情况下,我们可以直接使用 "==" 来判断两个对象是否相等。但 Python 同样支持运算符重载,因此使用 is 来代替应该更安全一点(C# 中经典的 Equals 问题)。
class Class1:
def __init__(self):
self.x = 123
def __eq__(self, o):
return self.x == o.x
a = Class1()
b = Class1()
print hex(id(a))
print hex(id(b))
print a == b
print a is b
输出
0xd37a08 <-- 注意内存地址不同!
0xd37a30
True
False
更多精彩
赞助商链接