|
第一次接觸深拷貝和淺拷貝是在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
|