专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Python » python教程:简明 Python 教程 -- 第15章 更多Python的内容 »正文

python教程:简明 Python 教程 -- 第15章 更多Python的内容

来源: 发布时间:星期四, 2009年1月8日 浏览:14次 评论:0
  到目前为止我们已经学习了绝大多数常用Python知识在这章中我们将要学习另外些方面Python知识从而使我们对Python了解更加 完整

特殊思路方法  在类中有些特殊思路方法具有特殊意义比如__init____del__思路方法它们重要性我们已经学习过了

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

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

  表15.1 些特殊思路方法

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

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

>>> flag = True
>>> flag: pr 'Yes'
...
Yes
  就如你所看见单个语句被直接使用而不是作为个独立块使用虽然这样做可以使你变得 小但是除了检验的外我强烈建议你不要使用这种缩略思路方法不使用它个主要理由是旦你使用了恰当缩进你就可以很方便地添加个额外语句

  另外注意在使用交互模式Python解释器时候它会通过恰当地改变提示符来帮助你输入语句在上面这个例子中当你输入了关键字的后Python解释器把提示符改变为...以表示语句还没有结束在这种情况下我们按回车键用来确认语句已经完整了然后Python完成整个语句执行并且返回原来提示符并且等待下句输入

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

使用列表综合  例15.1 使用列表综合

#!/usr/bin/python
# Filename: list_comprehension.py
listone = [
2
,
3
,
4
]
listtwo = [
2
*i
for
i
in
listone

i >
2
]
pr
listtwo
  (源文件:code/list_comprehension.py)

输出$ python list_comprehension.py
[6, 8]
它如何工作  这里我们为满足条件( i > 2)数指定了个操作(2*i)从而导出个新列表注意原来列表并没有发生变化在很多时候我们都是使用循环来处理列表中个元素而使用列表综合可以用种更加精确、简洁、清楚思路方法完成相同工作

中接收元组和列表  当要使接收元组或字典形式参数时候种特殊思路方法它分别使用***前缀这种思路方法在需要获取可变数量参数时候特别有用

>>> def powersum(power, *args):
...  '''Return the sum of each argument raised to specied power.'''
...  total = 0
...  for i in args:
...     total pow(i, power)
...   total
...
>>> powersum(2, 3, 4)
25
>>> powersum(2, 10)
100
  由于在args变量前有*前缀所有多余参数都会作为个元组存储在args如果使用**前缀多余参数则会被认为是个字典键/值对

lambda形式lambda语句被用来创建新对象并且在运行时返回它们

  例15.2 使用lambda形式

#!/usr/bin/python
# Filename: lambda.py
def
make_repeater
(n):
   lambda
s: s*n
twice = make_repeater(
2
)
pr
twice(
'word'
)
pr
twice(
5
)
  (源文件:code/lambda.py)

输出$ python lambda.py
wordword
10
它如何工作  这里我们使用了make_repeater在运行时创建新对象并且返回它lambda语句用来创建对象本质上lambda需要个参数后面仅跟单个表达式作为而表达式值被这个新建返回注意即便是pr语句也不能用在lambda形式中只能使用表达式

exec和eval语句exec语句用来执行储存在串或文件中Python语句例如我们可以在运行时生成个包含Python代码然后使用exec语句执行这些语句下面是个简单例子

>>> exec 'pr "Hello World"'
Hello World
eval
语句用来计算存储在串中有效Python表达式下面是个简单例子

>>> eval('2*3')
6
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


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

>>> i =
>>> i.append('item')
>>> `i`
"['item']"
>>> repr(i)
"['item']"
  基本上repr和反引号用来获取对象可打印表示形式你可以通过定义类__repr__思路方法来控制你对象在被repr时候返回内容

概括  在这章中我们又学习了些Python特色然而你可以肯定我们并没有学习完Python所有特色不过到目前为止我们确实已经学习了绝大多数你在实际中会使用内容这些已经足以让你去创建任何

  接下来我们会讨论下如何进步深入探索Python

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: