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

[[email protected] 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

[[email protected] 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)

[[email protected] code]# python lambda.py

wordword

10

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

5、exec和eval语句

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

[[email protected] 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函数调用的时候返回的内容。

时间: 2024-08-09 21:42:28

Python中的一些特殊用法的相关文章

python中pop()函数的用法

python中pop()函数的用法 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. 语法:list.pop(obj=list[-1]) //默认为 index=-1,删除最后一个列表值. obj -- 可选参数,要移除列表元素的对象. 该方法返回从列表中移除的元素对象. sentence=['All', 'good', 'things', 'come', 'to' ,'those', 'who', 'wait.'] print("默认为 index=-1,删除

Python中的字符串及用法

字符串是 Python 中最常用的数据类型1.#字符串的定义a = 'westos'b = "what's"c = """用户管理管理系统1.添加用户2.删除用户3.显示用户..... """print(a)print(b)print(c) 2.字符串的特性 字符串是字符的有序集合,可以通过其位置来获得具体的元素.在 python 中,字符串中的字符是通过索引来提取的,索引从 0 开始.python 可以取负值,表示从末尾提取

python中内建函数isinstance的用法

isinstance:Python中的一个内建函数 语法: isinstance(object, classinfo) 1.如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True.如果object不是一个给定类型的的对象, 则返回结果总是False. 2.如果classinfo不表示一个类(类型对象), 那么它要么是一个类的元组, 或者递归地包含这样的(由数据类型构成的)元组.其他的序列类型是不被允许的. 3.如果classinfo

Python中split()函数的用法及实际使用示例

Python中split()函数,通常用于将字符串切片并转换为列表. 一.函数说明: split():语法:str.split(str="",num=string.count(str))[n] 拆分字符串.通过制定分隔符将字符串进行切片,并返回分割后的字符串列表[list] 参数:str:分隔符,默认为空格,但不能为空("") num: 表示分割次数.如果指定num,则分割成n+1个子字符串,并可将每个字符串赋给新的变量 [n]: 选取第n个分片,即第n个字符串,从

Python中字典的详细用法

#字典 #字典是Python中唯一内建的映射类型.字典中没有特殊的顺序,但都是存储在一个特定的键(key)下面,键可以是数字,字符串,甚至是元组 #一.字典的使用 #在某些情况下,字典比列表更加适用: #1.表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组 #2.存储文件修改时间,用文件名作为键; #3.数字电话\地址薄 #1.使用列表创建一个电话本,(这里用字符串表示电话号码,以0开头的数字回会被编译成8进制数字) name=["A","B","C&

python中os.walk的用法详解

python中os.walk是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 1.载入要使用os.walk,首先要载入该函数 可以使用以下两种方法 import os from os import walk 2.使用 os.walk的函数声明为: walk(top, topdown=True, οnerrοr=None, followlinks=False) 参数 top 是你所要便利的目录的地址 topdown 为真,则优先遍历top目录,否则优先遍历top的子目

Python中datetime库的用法

datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime.date:表示日期的类 2.datetime.datetime:表示日期时间的类 3.datetime.time:表示时间的类 from datetime import datefrom datetime import datetimefrom datetime import timefrom d

Python中 sys.argv[]的用法简明解释

因为是看书自学的python,开始后不久就遇到了这个引入的模块函数,且一直在IDLE上编辑了后运行,试图从结果发现它的用途,然而结果一直都是没结果,也在网上查了许多,但发现这个问题的比较详细的解释只有一个版本,大部分都是转裁和复制的.给的都是简明python教程上那个一长串代码的例子,说看了就明白了,可我看得晕头转向的还是没真正明白,只知道"sys.argv[0]表示代码本身文件路径"这点,其实还是不明其意.后来经过大量努力,多方求教才真正明悟了,谨以记录和分享,希望能从另一个角度给同

Python 中zip()函数的用法

1. 定义: zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表). 若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同.利用*号操作符,可以将list unzip(解压). 2. 常见用法: A. 使用zip()函数来可以把列表合并,并创建一个元组对的列表 需要注意的是:在python 3.0中zip()是可迭代对象,使用时必须将其包含在一个list中,方便

Python中的__new__及其用法

__new__和__init__的区别 __new__是Python面向对象语言中一个很少用的函数,更多使用的是__init__这个函数.例如: class Book(object):     def __init__(self, title):         super(Book, self).__init__(self)         self.title = title # Define a book b = Book('The Django Book') print b.title