学习Python7(流程控制)
2015-06-24 11:58
721 查看
迭代链表索引
需要迭代链表索引的话,如下所示结合使用 range() 和 len():>>> a = ['Mary', 'had', 'a', 'little', 'lamb'] >>> for i in range(len(a)): ... print i, a[i] ... 0 Mary 1 had 2 a 3 little 4 lamb
循环中的else
循环可以有一个 else 子句;它在循环迭代完整个列表 (对于 for) 后或执行条件为 false (对于 while) 时执行,但循环被 break 中止的情况下不会执行。以下搜索素数的示例程序演示了这个子句:>>> for n in range(2, 10): ... for x in range(2, n): ... if n % x == 0: ... print n, 'equals', x, '*', n/x ... break ... else: ... # loop fell through without finding a factor ... print n, 'is a prime number' ... 2 is a prime number 3 is a prime number 4 equals 2 * 2 5 is a prime number 6 equals 2 * 3 7 is a prime number 8 equals 2 * 4 9 equals 3 * 3 #(Yes, 这是正确的代码。看仔细: else 语句是属于 for 循环之中, 不是 if 语句。)
函数参数的默认值
默认值在函数 定义 作用域被解析,如下所示:i = 5 def f(arg=i): print arg i = 6 f()
将会输出 5。
重要警告: 默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,比如列表、字典或者大多数类的实例。例如,下面的函数在后续调用过程中会累积(前面)传给它的参数:
def f(a, L=[]): L.append(a) return L print f(1) print f(2) print f(3)
这将会打印:
[1] [1, 2] [1, 2, 3]
如果你不想在随后的调用中共享默认值,可以像这样写函数:
def f(a, L=None): if L is None: L = [] L.append(a) return L
使用元组/字典传递参数
引入一个形如 **name 的参数时,它接收一个字典(参见 typesmapping ),该字典包含了所有未出现在形式参数列表中的关键字参数。这里可能还会组合使用一个形如 *name (下一小节详细介绍)的形式参数,它接收一个元组(下一节中会详细介绍),包含了所有没有出现在形式参数列表中的参数值。( *name 必须在 **name 之前出现)例如,我们这样定义一个函数:def cheeseshop(kind, *arguments, **keywords): print "-- Do you have any", kind, "?" print "-- I'm sorry, we're all out of", kind for arg in arguments: print arg print "-" * 40 keys = sorted(keywords.keys()) for kw in keys: print kw, ":", keywords[kw]
它可以像这样调用:
cheeseshop("Limburger", "It's very runny, sir.", "It's really very, VERY runny, sir.", shopkeeper='Michael Palin', client="John Cleese", sketch="Cheese Shop Sketch")
当然它会按如下内容打印:
-- Do you have any Limburger ? -- I'm sorry, we're all out of Limburger It's very runny, sir. It's really very, VERY runny, sir. ---------------------------------------- client : John Cleese shopkeeper : Michael Palin sketch : Cheese Shop Sketch
相关文章推荐
- windows上 python中安装scrapy
- openstack中nova组件Hypervisors、Floating_ips的所有python API 汇总
- openstack中glance组件images的所有python API 汇总
- openstack中Nova组件images的所有python API 汇总
- 【Python】Python中的引用和赋值
- Python list 常用操作
- Python装饰器使用实例:验证参数合法性
- Python的字符串处理函数split & join的使用一例
- Python函数式编程指南(四):生成器详解
- python + mysql
- Python安装pip的几种方式
- python模块 - re模块使用示例
- python编辑器对比和推荐
- 学习Python6(临时计算器+字符串编码)
- Python函数式编程指南(三):迭代器详解
- MIT python 第二课第四十分钟 取最小值的例子
- Python如何进行中文注释
- Python函数式编程指南(二):从函数开始
- python 中面向对象编程简单总结1
- Python函数式编程指南(一):函数式编程概述