WEB开发网
开发学院软件开发Python [Python 学习笔记] 1: 基础中的基础 阅读

[Python 学习笔记] 1: 基础中的基础

 2009-10-13 00:00:00 来源:WEB开发网   
核心提示:用了两天 Python,竟让我想起曾相伴了 7、8 年的 Delphi,[Python 学习笔记] 1: 基础中的基础,抛开动态语言语法层面的东西不谈,它的代码组织方式和 Delphi 倒是十分类似,我们可以直接使用 "==" 来判断两个对象是否相等,但 Python 同样支持运算符重载,Modul

用了两天 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 

Tags:Python 学习 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接