python 的更多内容

简明 Python 教程
Swaroop, C. H. 著

沈洁元  译

在函数中接收元组和列表

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> def powersum(power,*args):
	total = 0
	for i in args:
		total+=pow(i,power)
	return total

>>> powersum(2,3,4)
25
>>> powersum(2,10)
100
>>> 

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

列表综合:

通过列表综合,可以从一个已有的列表导出一个新的列表。例如,你有一个数的列表,而你想要得到一个对应的列表,使其中所有大于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 

$ python list_comprehension.py
[6, 8] 

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

lambda形式:

lambda语句被用来创建新的函数对象,并且在运行时返回它们。

使用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) 

$ python lambda.py
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

>>> mylist = ['item']
>>> assert len(mylist) >= 1
>>> mylist.pop()
'item'
>>> assert len(mylist) >= 1
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AssertionError 

repr函数用来取得对象的规范字符串表示。反引号(也称转换符)可以完成相同的功能。注意,在大多数时候有 eval(repr(object)) == object
>>> i = []
>>> i.append('item')
>>> `i`
"['item']"
>>> repr(i)
"['item']" 

基本上, repr函数和反引号用来获取对象的可打印的表示形式。你可以通过定义类的 __repr__方法来控制你的对象在被 repr函数调用的时候返回的内容




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值