更多的Python内容
- 特殊的方法
在类中有一些特殊的方法具有特殊的意义,比如__init__和__del__方法,它们的重要性我们已经学习过了。
一般说来,特殊的方法都被用来模仿某个行为。例如,如果你想要为你的类使用x[key]这样的索引操作(就像列表和元组一样),那么你只需要实现__getitem__()方法就可以了。
下面这个表中列出了一些有用的特殊方法。如果你想要知道所有的特殊方法,你可以在《Python参考手册》中找到一个庞大的列表。
名称 | 说明 |
__init__(self,...) | 这个方法在新建对象恰好要被返回使用之前被调用。 |
__del__(self) | 恰好在对象要被删除之前调用。 |
__str__(self) | 在我们对对象使用print语句或是使用str()的时候调用。 |
__lt__(self,other) | 当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。 |
__getitem__(self,key) | 使用x[key]索引操作符的时候调用。 |
__len__(self) | 对序列对象使用内建的len()函数的时候调用。 |
- 单语句块
每一个语句块是通过它的缩进层次与其它块区分开来的。然而这在大多数情况下是正确的,但是并非100%的准确。如果你的语句块只包含一句语句,那么你可以在条件语句或循环语句的同一行指明它。
就如你所看见的,单个语句被直接使用而不是作为一个独立的块使用。虽然这样做可以使你的程序变得小一些 ,但是除了检验错误之外我强烈建议你不要使用这种缩略方法。不使用它的一个主要的理由是一旦你使用了恰当的缩进,你就可以很方便地添加一个额外的语句。
另外,注意在使用交互模式的Python解释器的时候,它会通过恰当地改变提示符来帮助你输入语句。
- 列表综合
通过列表综合,可以从一个已有的列表导出一个新的列表。例如,你有一个数的列表,而你想要得到一个对应的列表,使其中所有大于2的数都是原来的2倍。对于这种应用,列表综合是最理想的方法。
使用列表综合例子如下:
listone = [2, 3, 4] listtwo = [2*i for i in listone if i > 2] print listone print listtwo
输出:
[2, 3, 4] [6, 8]
这里我们为满足条件(if i > 2)的数指定了一个操作(2*i),从而导出一个新的列表。注意原来的列表并没有发生变化。在很多时候,我们都是使用循环来处理列表中的每一个元素,而使用列表综合可以用一种更加精确、简洁、清楚的方法完成相同的工作。
- 在函数中接收元组和列表
当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。
在函数中接收元组和列表的例子如下:
def powersum(power, *args): total = 0 for i in args: total += pow(i, power) return total sum1 = powersum(2, 3, 4) print 'sum1=%s' % sum1 sum2 = powersum(2, 10) print 'sum2=%s' % sum2
输出:
sum1=25 sum2=100
由于在args变量前有*前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的是**前缀,多余的参数则会被认为是一个字典的键/值对。
- lambda形式
lambda语句被用来创建新的函数对象,并且在运行时返回它们。
使用lambda形式例子如下:
def make_repeater(n): return lambda s: s*n twice = make_repeater(2) print twice('word') print twice(5)
输出:
wordword 10
这里,我们使用了make_repeater函数在运行时创建新的函数对象,并且返回它。lambda语句用来创建函数对象。本质上,lambda需要一个参数,后面仅跟单个表达式作为函数体,而表达式的值被这个新建的函数返回。注意,即便是print语句也不能用在lambda形式中,只能使用表达式。
- exec和eval语句
exec语句用来执行储存在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。
下面是一个简单的例子:
exec 'print "Hello World"'
输出:
Hello World
eval语句用来计算存储在字符串中的有效Python表达式。
下面是一个简单的例子:
eval('2*3')
输出:
6
- assert语句
assert语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个AssertionError。
assert语句使用例子如下:
mylist = ['item'] print mylist assert len(mylist) >= 1 mylist.pop() print mylist assert len(mylist) >= 1
输出:
['item'] [] Traceback (most recent call last): File "D:\MyEclipse10\Workspaces\HelloWord\src\others\assertTest.py", line 12, in <module> assert len(mylist) >= 1 AssertionError
- repr函数
repr函数用来取得对象的规范字符串表示。反引号(也称转换符)可以完成相同的功能。注意,在大多数时候有eval(repr(object)) == object。
repr函数使用例子如下:
i = [] i.append('item') print i print repr(i)
输出:
['item'] ['item']
基本上,repr函数和反引号用来获取对象的可打印的表示形式。你可以通过定义类的__repr__
方法来控制你的对象在被repr函数调用的时候返回的内容。
相关推荐
【标题】:“每天分享几个python项目 —— cobra snake game” 在这个项目中,我们将探讨一个经典的游戏——Python...在完成这个游戏后,学习者将对Python编程有更深入的理解,并且为未来更复杂的项目奠定坚实基础。
这篇笔记主要涵盖了在11月30日和12月1日期间进行的Python学习内容,其中包括了基本语法、数据结构、控制流程、函数、模块化编程等多个重要知识点。以下是详细的解释: 1. **Python基础语法**: - **变量与数据类型...
【Python项目——Notepad编辑器】是一个利用Python开发的简易文本编辑器,它展示了如何用Python实现一个类似Windows记事本的功能。这个项目是初学者理解Python编程、GUI设计以及文件操作的好例子。通过这个项目,...
Python是一种广泛使用的高级编程语言,尤其适合初学者入门。这篇文档主要介绍了Python的基础语法,...在后续的学习中,你还将接触到更多的Python特性,如条件语句、循环、函数和模块,这些都将帮助你构建更复杂的程序。
【描述】"python实战"表明这个项目不仅涉及理论学习,更强调实践应用。Python是一种广泛使用的开发语言,尤其在数据处理、Web开发和自动化任务等领域有广泛应用。在实战项目中,学习者可以直接运用所学知识解决具体...
### Python基础——笔试面试利器 #### 一、Python的函数参数传递 在Python中,所有变量都被视为内存中对象的“引用”。这一点非常重要,因为理解这一点有助于我们掌握Python中的参数传递机制。 - **不可更改对象*...
在这个“Python——机器学习实战——决策树”教程中,你将深入学习如何运用这些技术进行实际问题的解决,包括数据预处理、特征选择、模型训练、模型评估和可视化。通过实践,你可以更好地掌握决策树这一强大的机器...
在这个"Python——机器学习实战——K均值聚类算法分组"的教程中,我们将深入探讨如何使用Python来实现这个算法。 首先,K均值算法的核心思想是通过迭代找到最佳的K个聚类中心,使得每个数据点到其所属类别中心的...
"每天分享几个python项目 —— guess a word game",这表明这个项目是Python编程系列教程的一部分,旨在通过实际操作帮助学习者巩固基础知识,提高编程技能。猜词游戏通常涉及到随机选择单词、用户输入猜测、错误...
在提供的压缩包文件中,"Python——机器学习实战——Logistic回归"可能包含详细的代码示例,展示了如何运用以上概念来构建和评估一个Logistic回归模型。通过学习这个实战案例,你可以更好地理解和应用Logistic回归到...
在机器学习实战中,Python的`scikit-learn`(简称`sklearn`)库是不可或缺的,它提供了许多机器学习算法,包括AdaBoost。 **AdaBoost工作原理**: 1. **初始化**:首先,AdaBoost分配相同的权重给每一个训练样本。 ...
这将涉及到更多的Python编程技巧,如字符串格式化、列表操作以及类和对象的概念。 此外,为了使代码更整洁和易于维护,我们可以考虑将游戏逻辑封装在一个函数中,甚至可以创建一个简单的类来代表游戏。这样,我们...
通过这个项目,学习者不仅可以巩固Python编程技能,还能了解网络编程、并发处理、图形界面设计等更高级的概念,对提升编程综合能力大有裨益。同时,参与多人游戏项目有助于提高团队协作和项目管理能力。
Xray是一个开源的渗透测试框架,它的Pro版本通常包含了更多高级功能,如自动化漏洞扫描、深度漏洞挖掘等。Xray-Pro的爬虫功能允许用户对目标网站进行全面的爬取,以便查找可能的安全漏洞。通过自定义的扫描参数,...
【Python项目实战——ChatApp_0详解】 在Python开发领域,实战项目是提升技能和理解应用的绝佳方式。"ChatApp_0"就是一个基于Python构建的简单聊天应用程序,旨在帮助初学者和进阶者理解如何利用Python进行后端开发...
2. 多人模式:允许两个或更多玩家参与,增加游戏趣味性。 3. 高分榜:保存和显示最佳成绩,增加竞争性。 4. 不同难度级别:调整卡片数量和打乱算法,实现不同难度级别的游戏。 通过这个Python项目,不仅可以巩固...
通过实践这个项目,你不仅能学习到Python编程,还能掌握游戏开发的基本技巧,这将对你的编程技能提升大有裨益。记住,实践是检验理论的最好方式,动手编写代码并不断调试,你将能更好地理解和掌握这些知识。
Python有多个库支持代理管理,如proxybroker,可以自动获取和更换代理。 8. **定时任务**:如果需要定期爬取微博热门评论,可以结合crontab(Linux)或Task Scheduler(Windows)设置定时任务,或者使用Python的...
标题中的“Python爬虫——快速批量抓取表格数据并保存至Excel中”表明这是一个关于使用Python编程语言进行网络爬虫的教程,旨在教授如何高效地抓取网页上的表格数据,并将这些数据存储到Excel文件中。这个过程通常...
C语言和VB也有大量资料,但可能需要更多指导。 5. **兴趣**:个人兴趣也是选择编程语言的重要考量,兴趣是最好的老师,选择自己喜欢的语言会更愿意投入时间和精力。 综上所述,高校在为非计算机专业学生选择编程...