易截截图软件、单文件、免安装、纯绿色、仅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的sort()

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

python 帮助文档查看

 这个代码是基于python3.0写的,有许多不完善的地方,请自已修改。
# coding: utf-8
from tkinter import *
root = Tk()
root.title("python3.0查询")
#root.minsize(800,600)
#填充无用空间
Label(root).grid(ipady=5)
#11面板
class Frame11:
    def __init__(self, root):   # ......

Python笔记(二)——python调用C/C++模块

前一篇讲了简单的C/C++调用Python脚本模块(.py)。既然是用于诸多游戏程序的脚本语言,那肯定是缺不了互调(礼尚往来)。因此,本篇讲一个简单的python调用C/C++写的DLL模块,对Python进行功能扩展。这里写一个简单的例子,主要就为了了解下这么用Python来调用C/C++写的DLL库。好了,切入正题:
 首先,我是用VS2003 ......

python快捷键汇集


Ctrl+3            行注释
Ctr+\               去行注释
Ctrl+Shift+3   去行注释
Ctrl+4            块注释
Ctrl+5         & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号