从入门到精通Python学习第十八课:more Python内容

特殊的方法

之前学习的都是一些常用的方法,为了使我们的学习更加的完整,我们在这里学习一些特殊的方法。

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

下面这个表中列出了一些有用的特殊方法。如果你想要知道所有的特殊方法,你可以在《Python参考手册》中找到一个庞大的列表。

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

单语句块(不建议使用)

现在,你已经很深刻地理解了每一个语句块是通过它的缩进层次与其它块区分开来的。然而这在大多数情况下是正确的,但是并非100%的准确。如果你的语句块只包含一句语句,那么你可以在条件语句或循环语句的同一行指明它。下面这个例子清晰地说明了这一点:

1 flag = True
2 if flag:print(‘Yes’)
就如你所看见的,单个语句被直接使用而不是作为一个独立的块使用。虽然这样做可以使你的程序变得 小一些 ,但是除了检验错误之外我强烈建议你不要使用这种缩略方法。不使用它的一个主要的理由是一旦你使用了恰当的缩进,你就可以很方便地添加一个额外的语句。

使用列表综合

listone = [5,2,3]
listtwo = [2*i for i in listone if i > 2]
print(listtwo)

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

在函数中接收元组和列表

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

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

运行结果
在这里插入图片描述

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

小编整理的一整套系统的Py thon学习教程从最基础的到框架再到项目实战的学习资料都有整理,送给每一位小伙伴, 有想学Py thon编程的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。点击加入企鹅群

原文地址

从入门到精通Python学习第十八课:more Python内容
从入门到精通Python学习第十七课:Python标准库
从入门到精通Python学习第十六课:异常
从入门到精通Python学习第十五课:输入与输出
从入门到精通Python学习第十四课:面向对象编程
从入门到精通Python学习第十三课:编写一个Python脚本
从入门到精通Python学习第十二课:数据结构&对象与类
从入门到精通Python学习第十一课:模块
从入门到精通Python学习第十课:return语句&DocStrings
从入门到精通Python学习第九课:参数
从入门到精通Python学习第八课:变量
从入门到精通Python学习第七课:函数&函数柯里化
从入门到精通Python学习第六课:流量控制
从入门到精通Python学习第五课:运算符与表达式
从入门到精通Python学习第四课:小的总结与补充
从入门到精通Python学习第三课:序列
从入门到精通Python学习第二课:python数据的类型
从入门到精通Python学习第一课:基础

猜你喜欢

转载自blog.csdn.net/saltish1/article/details/89187258
今日推荐