易截截图软件、单文件、免安装、纯绿色、仅160KB

被疏忽的一段Python语法

    python提供了有序(sequence)类型(字符串,元组,列表都是有序类型),并且提供了特殊的语法来方便对这些类型进行操作,最常用的有切片操作。同一有序类型的对象之间支持”+”操作符,用来连成一个新的有序对象,有序对象也可以与一个整数进行相乘,得到一个新的有序对象。在调试的时候,我经常使用这样的语句来打印一个分割行:print ‘-‘ * 50。在对有序类型进行“*” 或者 “+”操作的时候,要千万小心。今天,我的同事就遇到了非常郁闷的问题。看下面一段代码: #coding=gbk
class Point(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return '(%d, %d)' % (self.x, self.y)
itemList = [Point(-1, -1)] * 5
# 对列表元素进行赋值
for i in range(5):
itemList[i].x = i
itemList[i].y = i

print itemList
上面的代码创建一个包含5个Point对象的列表,然后在一个for循环中对列表中的每个对象的属性进行赋值。运行上面的代码,在屏幕上显示的结果是什么?是 [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)] 吗? 这段代码把我们都欺骗了。结果是:[(4, 4), (4, 4), (4, 4), (4, 4), (4, 4)]。为什么会这样呢?答案在于引用类型与值类型。[Point(-1, –1)] * 5,返回一个包含五个元素的列表,列表中的元素其实引用的是同一个对象,使用for循环在对列表进行初始化的时候,修改的其实是同一个对象的值。所以,结果就…… 一开始,我们郁闷了很长时候,谁也没意识到这个问题。在调试了许久之后才发现,哦,原来上帝在这里。只要作简单的修改,结果就会是我们想要的:
# ...
# itemList = [Point(-1, -1)] * 5
itemList = [Point(-1, -1) for i in range(5)]
# ...


相关文档:

python学习

3、Lists 数据类型
 
    在python中,lists是序列容器,它可以容纳任何类型的对象。和strings不同,Lists支持原地修改(mutalbe in place),通过下标引用的方式,可以修改Lists的内容,如p是Lists对象, 则可以通过p[1] = '123'这种的方式改变p的内容。
   Lists是序列容器,支持任何序列 ......

转:Python的sort()

之前学习第九章的排序小结的时候,对sort()排序方法不理解,因为括号里面带了自定义的比较函数。
后来查手册,才发现sort()里面本来就带了这样的参数。能够自定义比较方法,确实很灵活。
不仅如此,在网上查到一个博客,作者不单停留在这表面,还查究了sort()的排序算法,确实有意思。
全文抄录如下:
http://blog.done ......

python学习

3. Dictionaries 字典类型
     Python中,字典类型并不是顺序容器,而类似c++中的关联容器(map),Dictionaries中存储的是键/值 对,和map不同的是,Python的Dictionaries中可以存任意对象类型。Dictionaries类型也是可变的,和Lists一样,可以原地修改(通过下标修改)。
    下面通 ......

Python 3.x (1):入门

 
1 你好
#打开新窗口,输入:
#! /usr/bin/python
# -*- coding: utf8 -*- 
s1=input("Input your name:")
print("你好,%s" % s1)
'''
知识点:
    * input("某字符串")函数:显示"某字符串",并等待用户输入.
    ......

python rss解析与生成

 PyRSS2Gen :rss生成 
下载地址:http://www.dalkescientific.com/Python/PyRSS2Gen-1.0.0.tar.gz 
例子:
Java代码 
import datetime  
import PyRSS2Gen  
  
rss = PyRSS2Gen.RSS2(  
   title = " ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号