|
第一次接触深拷贝和浅拷贝是在c++语言中,python中,也存在着深拷贝和浅拷贝。 浅拷贝,就是给你一个引用,当源数据改变的时候,你以前获取的引用所指向的数据也会跟着变化;深拷贝,也是给你一个引用,不同的是它拷贝了份资源,给你的引用指向这份拷贝的资源,与源数据无任何联系。 以代码说明一切: - >>> ls = [2,7, 'ac', ['2a', 45,10], {'a' : 'a1', 'b':123, 'z': 4, 'r' : 33}, 0]
- >>> ls2 = ls
- >>> ls3 = ls[:]
- >>> import copy
- >>> ls4 = copy.deepcopy(ls)
- >>> ls
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls2
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls3
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls4
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls.append(2008)
- >>> print ls
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0, 2008]
- >>> print ls2
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0, 2008]
- >>> print ls3
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> print ls4
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
第1行,初始化一个list 第2—5行,浅拷贝与深拷贝 第6—13行,源数据发生变化前,打印出源数据以及浅拷贝和深拷贝的数据 第14行,源数据增加一个新数据 第15—22,打印出浅拷贝与深拷贝数据 看到结果,就明白浅拷贝与深拷贝了
operator提供了常用的数字操作,如: - >>> import operator
- >>> operator.add(2,5)
- 7
round函数: - >>> round(3.2344,2)
- 3.23
- >>> round(3.2354,2)
- 3.2400000000000002
- >>>
random模块中包含了许多随机函数,如: random() ,返回[0.0, 1.0]范围中的浮点数 uniform(),返回[0.0, 1.0)范围中的浮点数 randint(a,b) 返回[a,b]之间的一个随机整数 randrange()和randint类似 choice([a,b,c])返回序列[a,b,c]中的一项 decimal模块中包含了许多十进制的整数算法: - >>> import decimal
- >>> d1 = decimal.Decimal('2.3456')
- >>> d1.to_integral()
- Decimal("2")
- >>> d1 = decimal.Decimal('2.53456')
- >>> d1.to_integral()
- Decimal("3")
- >>>
通常情况下,在其他语言中,包括在python中,除法一般都是如下计算: 但是,在数学计算中,应该不是这样的,正确的结果应该是 1/2=0.5, 1/4=0.25才对,简洁而强大的python也为程序员考虑了这一点: - >>> from __future__ import division
- >>> 1/2
- 0.5
- >>> 1/4
- 0.25
嗯……,这才是真正的除法。
python本来就是动态语言,做一些动态的东西,应该说是得心应手吧,下面咱们看看先: 有时候可能会有这种需求,动态的声明变量,变量声明还可以动态啊?感觉似乎比较炫。 那么变量标识符来自哪里呢?比如说可能来自配置文件,数据库,调用接口等等,不管标识符来自,我们先得把它们保存到一个数据结构中,如下例,假如保存到一个list中: - >>> ls = ['a1', 'a2', 'a3']
- >>> for i in ls:
- ... exec(i + '=None')
- ...
- >>> a1 is None
- True
- >>> a1
- >>> a2 is not None
- False
- >>> a3
- >>> a3 is None
- True
- >>>
上面的代码中,第1行是来自外部的变量标识符,第2—3行是变量的动态声明,第5—12是对声明后的变量进行一下测试,声明是否成功
模态对话框就是指在子对话框弹出时,焦点被强行集中于该子对话框,子对话框不关闭,用户将无法操作其他的窗口。非模态相反,用户仍然可以操作其他的窗口,包括该子对话框的父对话框。 如果从线程角度来讲,模态对话框实际上是线程阻塞的,也就是子对话框是一个线程,但是在创建这个子线程之后,父窗口就阻塞了;模态对话框则不是阻塞型的线程模型,父子线程可以并行运行。 和所有流行的图形类库一样,Qt也提供了创建模态和非模态对话框的机制。 在Qt中创建模态对话框,主要用到了QDialog的exec函数: SonDialog dlg(this); int res = dlg.exec(); if (res == QDialog::Accepted) { QMessageBox::information(this, "INFORMATION", "You clicked OK button!"); } if (res == QDialog::Rejected) { QMessageBox::information(this, "INFORMATION", "You clicked CANCEL button!"); } 正如上面代码所显示的,可以通过exec函数的返回值来判断用户点击了哪个按钮使得模态对话框退出的,这可以使得我们能够根据用户的不同行为在推出退出模态对话框之后采取不同的处理方法。 在Qt中创建非模态对话框,主要用到了QDialog的show函数: SonDialog *dlg; dlg = new SonDialog(this); dlg->show(); 由上面代码,细心的读者可能就会问了,既然new了,如果不delete,那么内存不就存在了泄露的问题了吗?确实如此!所以,我们希望该Qt窗口在退出时自动能够delete掉自己,因此,我们在SonDialog的构造函数里,添加这样的一句代码: setAttribute (Qt::WA_DeleteOnClose); 这样,我们的SonDialog就能够在它退出时自动的delete掉自己了,不会再造成内存泄漏问题。
QPainter默认只能在paintEvent里面调用,但是: 在其他事件中绘制窗体,提示信息如下: QPainter::begin: Paint device returned engine == 0, type: 1
绘制操作应该在paintEvent中完成.
有一个属性值,在构造函数中设置可以在paintEvent()之外进行绘制: this->setAttribute(Qt::WA_PaintOutsidePaintEvent);
但是只支持X11,对于 Windows, Mac OS X or Embedded Linux。。。。不予支持 void xx::paintEvent(QPaintEvent *p) { painter.begin(this); painter.drawImage(image); painter.end(); }
快手(AAuto Quicker)是一鹤软件历时五年倾情打造 - 专用于小型桌面工具、自动模拟软件快速开发,可一键发布为数百K的独立EXE程序,快速开发网站提交机器人,全面支持游戏辅助工具技术,一句代码实现CALL外部程序函数。 完美支持静态类型、动态类型,完美支持COM、DLL API、REMOTE EXE CALL API。 主要面向小型轻量快速开发应用,专用于模拟自动化、web自动化、自动化测试、机器人程序开发。 AAuto广泛吸收各种语言中的优秀语法特性,抛弃另类怪异的设计风格,广泛兼容通用标准,易学易用、支持快速开发,你几乎可以将任何主流编程语言中的代码作很少的修改就可以在AAuto中更稳定快速的执行。 当前第1张截图 ( 点击上图查看所有截图)
用记事本打开:Setup–>setup.sdb文件,将 [Product Key] YR3W8FCM2B7BKF9HMQFTCH7WK 改成 [Product Key] YCFHQ9DWCYDKV88T2TMHG7BHP 安装的时候就默认是这个正版的序列号了。 还有一种方法就是,不改这个文件,安装后,再添加删除程序的时候可以输入序列号: YCFHQ-9DWCY-DKV88-T2TMH-G7BHP 也可以变成正版。 安装完成后,下载安装Windows 自动化 API 3.0,Visual Studio 2010 的智能提示运行速度更快 http://support.microsoft.com/kb/981741/zh-cn
git://gitorious.org/qt-labs/doxygen2qthelp.git
|