码迷,mamicode.com
首页 > 编程语言 > 详细

Python中的一些特殊用法

时间:2015-02-06 19:02:51      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:python中的一些特殊用法

1、一些特殊的方法

__init__(self,...)

这个方法在新建对象恰好要被返回使用之前被调用。

__del__(self)

恰好在对象要被删除之前调用。

__str__(self)

在我们对对象使用print语句或是使用str()的时候调用。

__lt__(self,other)

当使用小于运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。

__getitem__(self,key)

使用x[key]索引操作符的时候调用。

__len__(self)对序列对象使用内建的len()函数的时候调用。

2、列表综合

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

    使用列表综合:

#!/usr/bin/python

# Filename: list_comprehension.py

listone = [2,3,4]

listtwo = [2*i for i in listone if i>2]

print listtwo

[root@gflinux102 code]# python list_comprehension.py 

[6, 8]

    为满足条件(if i > 2)的数指定了一个操作(2*i),从而导出一个新的列表。注意原来的列表并没有发生变化。在很多时候,我们都是使用循环来处理列表中的每一个元素,而使用列表综合可以用一种更加精确、简洁、清楚的方法完成相同的工作。

3、在函数中接受元组和列表

    当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。

#!/usr/bin/python

# Filename: args.py

def powersum(power,*args):

        ‘‘‘Return the sum of each argument raised to 

specified power.‘‘‘

        total = 0

        for i in args:

                total += pow(i,power)

        return total

[root@gflinux102 code]# python

Python 2.4.3 (#1, Dec 10 2010, 17:24:32) 

[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> def powersum(power,*args):

...         ‘‘‘Return the sum of each argument raised to

... specified power.‘‘‘

...         total = 0

...         for i in args:

...                 total += pow(i,power)

...         return total

... 

>>> powersum(2,3,4)

25

>>> powersum(2,10)

100

>>> 

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

4、lampda

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

#!/usr/bin/python

# Filename: lambda.py

def make_repeater(n):

        return lambda s: s*n

twice = make_repeater(2)

print twice(‘word‘)

print twice(5)

[root@gflinux102 code]# python lambda.py 

wordword

10

    使用了make_repeater函数在运行时创建新的函数对象,并且返回它。lambda语句用来创建函数对象。本质上,lambda需要一个参数,后面仅跟单个表达式作为函数体,而表达式的值被这个新建的函数返回。注意,即便是print语句也不能用在lambda形式中,只能使用表达式。

5、exec和eval语句

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

[root@gflinux102 code]# python

Python 2.4.3 (#1, Dec 10 2010, 17:24:32) 

[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> exec ‘print "Hello World"‘

Hello World

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

>>> eval(‘2*4‘)

8

>>> 

6、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

6、repr函数

    repr函数用来取得对象的规范字符串表示。反引号(也称转换符)可以完成相同的功能。注意,在大多数时候有eval(repr(object)) == object。

>>> i = []

>>> i.append(‘item‘)

>>> i

[‘item‘]

>>> `i`

"[‘item‘]"

>>> repr(i)

"[‘item‘]"

>>> 

    基本上,repr函数和反引号用来获取对象的可打印的表示形式是一直的。你可以通过定义类的__repr__方法来控制你的对象在被repr函数调用的时候返回的内容。

Python中的一些特殊用法

标签:python中的一些特殊用法

原文地址:http://gfsunny.blog.51cto.com/990565/1612434

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!