您的位置:首页 > 编程语言 > Python开发

初识Python(六)

2011-07-23 12:46 316 查看
特殊的方法

在类中有一些特殊的方法具有特殊的意义,比如
__init__
__del__
方法,它们的重要性我们已经学习过了。

一般说来,特殊的方法都被用来模仿某个行为。例如,如果你想要为你的类使用
x[key]
这样的索引操作(就像列表和元组一样),那么你只需要实现
__getitem__()
方法就可以了。想一下,Python就是对
list
类这样做的!

名称说明
__init__(self,...)这个方法在新建对象恰好要被返回使用之前被调用。
__del__(self)恰好在对象要被删除之前调用。
__str__(self)在我们对对象使用
print
语句或是使用
str()
的时候调用。
__lt__(self,other)当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。
__getitem__(self,key)使用
x[key]
索引操作符的时候调用。
__len__(self)对序列对象使用内建的
len()
函数的时候调用。
列表综合

通过列表综合,可以从一个已有的列表导出一个新的列表。例如,你有一个数的列表,而你想要得到一个对应的列表,使其中所有大于2的数都是原来的2倍。对于这种应用,列表综合是最理想的方法。

>>> a=[2,3,4,5]

>>> b=[2*i for i in a if i>2]

>>> print b

[6, 8, 10]

在函数中接收元组和列表

当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用
*
**
前缀。

由于在
args
变量前有
*
前缀,所有多余的函数参数都会作为一个元组存储在
args
中。如果使用的是
**
前缀,多余的参数则会被认为是一个字典的键/值对。

>>> def say(*a):

b=()

for i in range(0,len(a)):

print a[i],

>>> say(2,3,4)

2 3 4

>>> def say(*a):

print a

>>> say(2,3,4)

(2, 3, 4)

lambda形式

lambda
语句被用来创建新的函数对象,并且在运行时返回该函数

>>> def say(n):

return lambda s:s*n

>>> func=say(2) 运行say()时返回了lambda创建的新函数s:s*2给func,此时func就是一个函数,其参数是s 计算的是s*2

>>> print func

<function <lambda> at 0x00B5D1B0>

>>> print func(5)

10

exec语句与eval语句

exec
语句用来执行储存在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用
exec
语句执行这些语句。

>>> exec "print func(5)" 接上面的lambda形式

10

eval
语句用来计算存储在字符串中的有效Python表达式。

>>> eval("6>5")

True

assert语句

assert
语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么
assert
语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个
AssertionError


>>> mylist = ['item']

>>> assert len(mylist) >= 1

>>> mylist.pop()

'item'

>>> assert len(mylist) >= 1

Traceback (most recent call last):

File "<stdin>", line 1, in ?

AssertionError

repr函数

repr
函数用来取得对象的规范字符串表示。你可以通过定义类的
__repr__
方法来控制你的对象在被
repr
函数调用的时候返回的内容。

>>> a={'1':1,'2':2,'3':3}

>>> repr(a)

"{'1': 1, '3': 3, '2': 2}"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: