A. 如何用 Python 執行常見的 Excel 和 sql 任務
你可以導入.sql 資料庫並用 SQL 查詢中處理它們。在Excel中,你可以雙擊一個文件,然後在電子表格模式下開始處理它。在 Python 中,有更多復雜的特性,得益於能夠處理許多不同類型的文件格式和數據源的。
使用一個數據處理庫 Pandas,你可以使用 read 方法導入各種文件格式。,使用這個方法所能導入完整的文件格式清單是在 Pandas 文檔中。你可以導入從 CSV 和 Excel 文件到 HTML 文件中的所有內容!
B. python 執行sql語句,在for循環裡面 寫sql語句,出錯了
數據長不是py的數據長,是資料庫報錯,表的欄位超長了。
C. 如何用python寫sql
python可以利用pymysql模塊操作資料庫。
什麼是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用於連接 MySQL 伺服器的一個庫,Python2中則使用mysqldb。
PyMySQL 遵循 Python 資料庫 API v2.0 規范,並包含了 pure-Python MySQL 客戶端庫。
PyMySQL 安裝
在使用 PyMySQL 之前,我們需要確保 PyMySQL 已安裝。
PyMySQL 下載地址:https://github.com/PyMySQL/PyMySQL。
如果還未安裝,我們可以使用以下命令安裝最新版的 PyMySQL:
$ pip3 install PyMySQL
如果你的系統不支持 pip 命令,可以使用以下方式安裝:
1、使用 git 命令下載安裝包安裝(你也可以手動下載):
$ git clone https://github.com/PyMySQL/PyMySQL$ cd PyMySQL/$ python3 setup.py install
2、如果需要制定版本號,可以使用 curl 命令來安裝:
$ # X.X 為 PyMySQL 的版本號$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz$ cd PyMySQL*$ python3 setup.py install
$ # 現在你可以刪除 PyMySQL* 目錄
注意:請確保您有root許可權來安裝上述模塊。
安裝的過程中可能會出現"ImportError: No mole named setuptools"的錯誤提示,意思是你沒有安裝setuptools,你可以訪問https://pypi.python.org/pypi/setuptools找到各個系統的安裝方法。
Linux 系統安裝實例:
$ wget https://bootstrap.pypa.io/ez_setup.py$ python3 ez_setup.py
資料庫連接
連接資料庫前,請先確認以下事項:
您已經創建了資料庫 TESTDB.
在TESTDB資料庫中您已經創建了表 EMPLOYEE
EMPLOYEE表欄位為 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
連接資料庫TESTDB使用的用戶名為 "testuser" ,密碼為 "test123",你可以可以自己設定或者直接使用root用戶名及其密碼,Mysql資料庫用戶授權請使用Grant命令。
在你的機子上已經安裝了 Python MySQLdb 模塊。
如果您對sql語句不熟悉,可以訪問我們的SQL基礎教程
- Database version : 5.5.20-log
- ..................................user_id = "test123"password = "password"con.execute('insert into Login values( %s, %s)' % (user_id, password))..................................
fetchone():該方法獲取下一個查詢結果集。結果集是一個對象
fetchall():接收全部的返回結果行.
rowcount:這是一個只讀屬性,並返回執行execute()方法後影響的行數。
- fname=Mac, lname=Mohan, age=20, sex=M, income=2000
原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。
一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。
持久性(rability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
實例:
以下實例鏈接 Mysql 的 TESTDB 資料庫:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法創建一個游標對象 cursorcursor = db.cursor()
# 使用 execute() 方法執行 SQL 查詢 cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法獲取單條數據.data = cursor.fetchone()
print ("Database version : %s " % data)
# 關閉資料庫連接db.close()
執行以上腳本輸出結果如下:
創建資料庫表
如果資料庫連接存在我們可以使用execute()方法來為資料庫創建表,如下所示創建表EMPLOYEE:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法創建一個游標對象 cursorcursor = db.cursor()
# 使用 execute() 方法執行 SQL,如果表存在則刪除cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用預處理語句創建表sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
# 關閉資料庫連接db.close()
資料庫插入操作
以下實例使用執行 SQL INSERT 語句向表 EMPLOYEE 插入記錄:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標 cursor = db.cursor()
# SQL 插入語句sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""try: # 執行sql語句
cursor.execute(sql)
# 提交到資料庫執行
db.commit()except: # 如果發生錯誤則回滾
db.rollback()
# 關閉資料庫連接db.close()
以上例子也可以寫成如下形式:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標 cursor = db.cursor()
# SQL 插入語句sql = "INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('%s', '%s', %s, '%s', %s)" % ('Mac', 'Mohan', 20, 'M', 2000)try: # 執行sql語句
cursor.execute(sql)
# 執行sql語句
db.commit()except: # 發生錯誤時回滾
db.rollback()
# 關閉資料庫連接db.close()
以下代碼使用變數向SQL語句中傳遞參數:
資料庫查詢操作
Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
實例:
查詢EMPLOYEE表中salary(工資)欄位大於1000的所有數據:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標 cursor = db.cursor()
# SQL 查詢語句sql = "SELECT * FROM EMPLOYEE
WHERE INCOME > %s" % (1000)try: # 執行SQL語句
cursor.execute(sql)
# 獲取所有記錄列表
results = cursor.fetchall()
for row in results: fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# 列印結果
print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % (fname, lname, age, sex, income ))except: print ("Error: unable to fetch data")
# 關閉資料庫連接db.close()
以上腳本執行結果如下:
資料庫更新操作
更新操作用於更新數據表的的數據,以下實例將 TESTDB 表中 SEX 為 'M' 的 AGE 欄位遞增 1:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標 cursor = db.cursor()
# SQL 更新語句sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')try: # 執行SQL語句
cursor.execute(sql)
# 提交到資料庫執行
db.commit()except: # 發生錯誤時回滾
db.rollback()
# 關閉資料庫連接db.close()
刪除操作
刪除操作用於刪除數據表中的數據,以下實例演示了刪除數據表 EMPLOYEE 中 AGE 大於 20 的所有數據:
實例(Python 3.0+)
#!/usr/bin/python3
import pymysql
# 打開資料庫連接db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法獲取操作游標 cursor = db.cursor()
# SQL 刪除語句sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)try: # 執行SQL語句
cursor.execute(sql)
# 提交修改
db.commit()except: # 發生錯誤時回滾
db.rollback()
# 關閉連接db.close()
執行事務
事務機制可以確保數據一致性。
事務應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。
Python DB API 2.0 的事務提供了兩個方法 commit 或 rollback。
實例
實例(Python 3.0+)
# SQL刪除記錄語句sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)try: # 執行SQL語句
cursor.execute(sql)
# 向資料庫提交
db.commit()except: # 發生錯誤時回滾
db.rollback()
對於支持事務的資料庫, 在Python資料庫編程中,當游標建立之時,就自動開始了一個隱形的資料庫事務。
commit()方法游標的所有更新操作,rollback()方法回滾當前游標的所有操作。每一個方法都開始了一個新的事務。
錯誤處理
DB API中定義了一些資料庫操作的錯誤及異常,下表列出了這些錯誤和異常:
異常
描述
Warning 當有嚴重警告時觸發,例如插入數據是被截斷等等。必須是 StandardError 的子類。
Error 警告以外所有其他錯誤類。必須是 StandardError 的子類。
InterfaceError 當有資料庫介面模塊本身的錯誤(而不是資料庫的錯誤)發生時觸發。 必須是Error的子類。
DatabaseError 和資料庫有關的錯誤發生時觸發。 必須是Error的子類。
DataError 當有數據處理時的錯誤發生時觸發,例如:除零錯誤,數據超范圍等等。 必須是DatabaseError的子類。
OperationalError 指非用戶控制的,而是操作資料庫時發生的錯誤。例如:連接意外斷開、 資料庫名未找到、事務處理失敗、內存分配錯誤等等操作資料庫是發生的錯誤。 必須是DatabaseError的子類。
IntegrityError 完整性相關的錯誤,例如外鍵檢查失敗等。必須是DatabaseError子類。
InternalError 資料庫的內部錯誤,例如游標(cursor)失效了、事務同步失敗等等。 必須是DatabaseError子類。
ProgrammingError 程序錯誤,例如數據表(table)沒找到或已存在、SQL語句語法錯誤、 參數數量錯誤等等。必須是DatabaseError的子類。
NotSupportedError 不支持錯誤,指使用了資料庫不支持的函數或API等。例如在連接對象上 使用.rollback()函數,然而資料庫並不支持事務或者事務已關閉。 必須是DatabaseError的子類。
D. python執行sql,並保存到excel,很慢
你在伺服器上直接查詢,只是讀取一次數據到內存中。
你現在的代碼,首先要從資料庫讀出,然後要寫入df,df可以看做一個內存資料庫,寫入需要做一些相關的處理,例如索引之類的。
然後又要從df讀出,再寫入excel,這個步驟是寫入磁碟,也是花費時間最多的。
E. python pymysql 執行比較時間的sql語句,在mysql中可以順了執行,但是在python中執行為何報錯
你上面的sql如果換行寫的話,你試試看用三個點括起來,像
sql = '''XXX
XXX'''
看看是不是這個問題導致的。
F. python調用mysql命令行執行sql語句的問題
我以前遇到過
你看看
目錄名稱是不是有空格 MySQL\MySQL Server 5.0\
去掉空格
G. python tornado 進行大量sql寫入操作 導致其他請求全部阻塞 是我方法有問題還是確實
tornado是單進程單線程的伺服器,如果是同步請求,一個長時間的請求沒結束,就不能去處理其他的請求,可是tornado支持非同步請求,就是當我們在等待結果的時候不阻塞,增加一個回調函數作為參數,在有結果的時候通過回調函數進行通知。這樣,伺服器就可以去接受其他的請求了。
至於php,可以看看php-fpm的配置文件,那個是多進程來出處理請求的
H. python批量執行sql語句並列印結果到一個文件中
推薦使用「Office批量列印精靈」——Office文檔批量列印軟體,支持Word、Excel、Powerpoint、PDF等文檔的批量列印,且可使用虛擬列印機,將多個Office文檔轉換為PDF文件。
下載地址:http://www.yiyunsoftware.com
使用教程:http://jingyan..com/article/f00622280e4dd4fbd3f0c80e.html
I. 現在還有沒有人用python編程
面對珍珠(Perl)奪目之光、靈蛇(Python)更具有上天入地之能。它可以在 MS-DOS,Amiga,BeOS, OS/2,VMS,QNX等多種OS上運行;比 Perl 和 VB更快更好,比 C 和 C++ 語言更具擴充性;不僅在「星球大戰」、 「星球之旅(Star Trek)」等超級大片中當綱特技和動畫製作,還闖入了美國航天航空局控制室。真相如何,請看報道。
對 Perl (珍珠) 語言,互聯網開發人員可以說是無人不知、無人不曉;它運行迅捷、操作簡單,而且可以讓用戶在使用時感到其樂無窮。但它也有不竟如人意的時候:它的開放性同時帶來了它的復雜性,用它處理大項目時尤其會使人無從下手。
盡管如此,大部分互聯網項目仍得靠著 Perl 這員「功臣」來搭建。
但也並非別無選擇。最新推薦的軟體叫 Python (靈蛇),它的歷史僅有 Perl 的1/4,有著許多相似的特徵。
Python 的名字源於著名的滑稽團 Monty Python,它擁有許多廣為人知的演員,並塑造了許多婦孺皆知的銀屏形象。
那麼,互聯網世界中的 Python 又是怎樣的一個形象呢?
更快更好的 Python
與 Perl 一樣, Python 也是一種解釋語言,它完全採用面向對象的方式,語言結構介於 C 語言和 Perl 語言之間。雖然它被視作一種高極語言,但它的內置解釋器的功能卻非常基本,僅有幾種功能、操作符和關鍵詞便構成了整個程序語言。它的優勢可不僅如此,它還能通過一系列的模塊進行擴充。它既比 Perl 和 VB 語句更快更好,又比 C 和 C++ 語言更有擴充性。
同樣,Python 對程序語句的處理首先通過一個解釋和編譯系統轉換成為一系列的位元組代碼,然後再由 Python 的虛擬機進行處理。Python 設計得非常有效,主要歸功於它龐大的功能庫,因此用戶不用進入系統環境或是操作系統,也不用引用模塊。用 Python 編程,小程序還是小程序,不必勞費太多的成本和時間。
除了它的 Core 平台外, Python 還能在 MS-DOS,Amiga,BeOS, OS/2,VMS,QNX 以及其它許多操作系統上運行。甚至還可以在掌上電腦上運行 Python 程序。
面對珍珠(Perl)奪目之光、靈蛇(Python)更具有上天入地之能。
除了它的 Core 平台外, Python 還能在 MS-DOS,Amiga,BeOS, OS/2,VMS,QNX 以及其它許多操作系統上運行。甚至還可以在掌上電腦上運行 Python 程序。
Python 還有以下顯著的特徵:
超強的適應性
Python 可以由一系列的平台支持。它編譯完備的格式可以在 Windows 和 MacOS 及其自身 Tk 擴充平台上運行,並可用於開發對用戶友好的界面。在 UNIX 和其它平台上, Python 可以作為源代碼由程序員自行編譯,或者與其它預編的二進制編碼共同使用。它超強的適應性更能讓它有跨平台適用的能力:用它在 UNIX 平台上書寫的程序段95%的情況下無須作任何修改就可用於 Mac 和 PC 機。擴充 Tk 平台對它的支持,甚至可以讓基於GUI 格式的應用程序不用大動筋骨就可在上述三種平台上做自由切換,還保持著統一的界面。
正因為這種天然生就的跨平台運行能力,Python 還能支持一些平台的擴充平台,從而簡化和免除了對其它語言和環境的適應過程。與 SunOS / Solaris 工具帶有 Sun 音頻設備及 SGI版本帶有視音頻介面(包括 OpenGL)一樣,Windows Pytyon 解釋器也同樣帶有 Visual C++ 類庫和 Windows 音頻驅動介面。此外還有與 COM 對象進行通訊的功能。
超大的功能性
Python 幾乎無所不能。它的內核很小,但卻擁有足夠的基本程序塊用於設計大部分應用軟體。而且在某些情況下該程序語言還可以擴充與 C,C++ 和 Java 語言並用,因此沒有它編不了的程序。 Python 解釋器還帶有極為強大的補充模塊庫,用於擴充語言能力,進行網路通訊、文本處理和規則表達式匹配。
雖然 Python 的主要特點是隱去程序員的許多低級復雜工作,它還能支持鉤、擴充程序以及其它功能對某些操作系統進行低級接入。正因為這種高低兼行的特點,Python 可以視作和 C,Visual Basic 同等級別的語言,或是介於二者間的其它級別的語言。
超凡的擴容性
因為 Python 本身用 C 語言寫成(某些擴充平台採用C++語言編寫),而且它採用開放式的源代碼,這樣可以對程序本身進行主動擴充。另外該程序語言的許多模塊由 C 和 C++ 界面支持,包括一些諸如網路和DBM資料庫接入等基本構件,以及其它如 Tk 等許多先進工具。
此外,Python 還能融入 C 或 C++ 語言,從而可以使用 Python 語言為應用程序提供編程界面。也正基於它的跨語言開發的支持能力,還可以使用 Python 設計應用程序後再輸送到為 C 語言環境而無須將程序用 C 語言重寫,因為兩種語言均可同時使用。
JPython 是一個完全採用 Java 語言編寫的 Python 解釋器,這就意味著任何 Python 程序都可與一個 Java 對象或是使用 Python 對象的應用程序相聯結。
超常的簡易性
了解了 Python 以上幾個基本特點後,再對程序語言它內容進行了解就相對容易了。該語言內核很小,而且格式和文體簡明。由於所有其它的組件和擴充部分都使用完全一樣的句法結構,利用 Python 編程會很快讓人速成。
但這並不意味著 Python 語言就沒有復雜的地方。對其許多擴充部分和內庫都必需經過深思熟慮後方可進行有效的利用。
超強的功能性
擁有如此廣泛的支持和博採眾長的特徵,Python 在處理一系列問題上都顯得特別有效。以下為它的功能簡介:
計算器:
由 Python 支持的一個擴充程序叫 NumPy,它可以提供與許多標准數學庫相連的介面。Python 語言還擁有無限精確的特性,可以單獨處理100位數字的算術。
文字處理器:
Python 能夠對任何數據進行分割、累加和總結。它的模塊可以對日誌文件行中的元素進行分割,並根據內置的數據種類對其信息進行記錄和總結,最後才進行輸出。它的規則表達式庫使程序員可以使用 emacs,Perl 等等。 這再次證明 Python 的無所不能,曾經有程序員還利用 Python 編製成非常復雜的 SGML 處理工具。
便捷的應用開發:
Python對程序員而言一目瞭然,用它編程迅速有效。它博大的模塊庫可以提供針對不同協議、工具和庫的介面。免除重新開發之苦。
由於Python 還支持 Tk 工具,所以可以在幾個小時內完成一個應用軟體,而用 Perl 語言可能會需要2到3天,用 C 語言甚至要幾個星期。
跨平台開發:
Python 以中立方式支持不同的一系列平台,如果用戶使用的系統包含不同的平台,使用 Python 開發應用程序則再好不過;它這種適應性也可以為系統預留使用其它工具的可能。對於頻繁更換平台用戶,Python 是個理想的選擇。
為最終用戶提供軟體服務時,Python 也是個備選方案,可以避免同時用不同應用軟體編程的時間和費用。
系統設備
Python旨在避免操作系統中低級部分的滋擾,但如若需要主動進入這些低級部分時也完全可以通過相應的工具和擴充件來實現。與操作系統一樣, Python 可以進入相同的的功能,並予以備份和擴充,而且備份和擴充後的功能會增加 Python 的所有的適應性和介面能力。
互聯網程序設計
Python 帶有的標准模塊可以對網路插槽進行初級和協議級別的通訊,比如,如果要從 POP 伺服器上讀取電子郵件,Python 隨帶的庫模塊可以做到。另外, Python 還支持 XML、HTML和 CGI 庫文件,所以利用它可以解析用戶輸入的需求,並通過網路伺服器產生最佳質量的成果。
程序員還可為擁有 Python 內置解釋器的 Apache、Unix 和 Windows 網路伺服器編譯模塊。基於 CGI 程序的功效,可以很方便地執行 Python 語句而不用單獨裝載。
資料庫編程
Python 中有無數的擴充模塊可以連接如 Orcle、Informix 、mySOL和PostgreSql等通用的資料庫系統;還有稱作 Gadfly 的工具可以獨立Python 提供完全的SQL環境。Python 有強大的文本和數據處理能力,可以用它作為不同資料庫間的連接,比起那些資料庫附帶的總結和匯報工具顯得更有優勢。同時,由於它支持不同系統,用同樣的介面也可以連接任何資料庫。可以用 Tk 在支持平台上建立前端,馬上就可獲得高速跨平台、獨立資料庫的查詢工具。
其它
Python 應用范圍廣泛,幾乎沒有它不適配的語言;憑籍它的微小內核、豐富功能、多樣數據,Python 提供了一個良好的程序構建基礎。綜合了C 和 C++二者的優點,只要採用合適的結構和方式,便可對 Python 程序進行無限的擴充。除了一大堆顯著的優點,Python 也有缺點。
要列出 Python 的缺點確實不太容易。Python 在其擴充模塊中提供了大部分的功能,並充分顯示了對其增加功能有多容易,一旦用它還不能解決問題,那麼也僅需要利用 C 或 C++ 語言重新編寫一個擴充程序便可。
批評 Python 的人往往不是說Python 缺乏某種功能,而是對這種功能並不了解。通常還有一種抱怨說 Python 缺少規則表達式的支持-但實際上有兩個模塊可以用來處理規則表達式,其中之一還可以完全用來支持 Perl 語言的句式句法。對規則表達式的處理並沒有編進該語言中,但並不等於它作不到。
針對 Perl、Rebol 和 Java 語句而言, Python 的優勢在於它的內核很小。這減少了執行的時間,因為在運行時需要裝載的代碼較少,而且這個特點也使它有著更廣的適應性。
一旦熟悉了 Python 語句的簡明風格,它的強大優勢頓時便會凸現出來。用它編就的程序歷久不衰。
Python 的理想用戶群
它適合不同類型的用戶以解決不同類型的問題。大部分時候這些問題一般不為人所知,因為它們有著較高的保密性。也有大型公司用它進行商用開發,並展示開發所獲的成果。
紅帽 (Red Hat )曾用 Python 和 Tk 一起成功開發配置和管理操作系統的可視界面。整個系統可以全面控制 Linux 操作系統,並根據用戶選擇對配置文件作自動更新。
Infoseek 在其公用搜索引擎使用了Python。該公司還用 Python 對其軟體進行定製,使最終用戶能對該網站內容進行方便下栽。
美國航空航天局也在不少領域中用到 Python 程序語言,最出名的莫過於在任務控制中心將 Python 用於任務計劃;對 Python 在其它方面的使用例如用其計算天體方位和設計衛星的路徑等等都充分體現了 Python 的超強計算能力。
以在「星球大站」、「阿貝斯 (Abyss)」、 「星球之旅 (Star Trek)」、 「印地安那瓊斯 (Indiana Jones)」超級大片中當綱特技和動畫製作的工業光魔公司 (Instrial Light)也採用 Python 製作商業動畫。
什麼是Python?
Python是一種即譯式的,互動的,面向對象的編程語言,它包含了模組式的操作,異常處理,動態資料形態,十分高層次的動態資料結構,以及類別的使用。Python揉合了簡單的語法和強大的功能。它的語法表達優美易讀。它具有很多優秀的腳本語言的特點:解釋的,面向對象的,內建的高級數據結構,支持模塊和包,支持多種平台,可擴展。而且它還支持互動式方式運行,圖形方式運行。它擁有眾多的編程界面支持各種操作系統平台以及眾多的各類函數庫。利用C和C++可以對它進行擴充。個別的應用軟體如果需要有一個可程序化界面也可以利用它來做為擴展語言用。最後,Python的可移植度非常高:它可以在許多的Unix類平台上運行,在Mac,MS-DOS,視窗Windows,Windows NT,OS/2,BeOS,以至RISCOS上都有相關的Python版本。
簡單的說它具有以下一些特徵:
l 是一種解釋性的,面向對象的,具有動態語義的程序設計語言。
l 適合快速開發。
l 能集成到其他流行的伺服器,也自帶伺服器。
l 提供清晰的數據/邏輯/表示的分離。
l 帶有可擴展的內置對象和強大的集成安全模塊。
Python的歷史
Python的創始人為Guido van Rossum。1989年聖誕節期間,在阿姆斯特丹,Guido為了打發聖誕節的無趣,決心開發一個新的腳本解釋程序,做為ABC語言的一種繼承。之所以選中Python(大蟒蛇的意思)作為程序的名字,是因為他是一個Monty 大蟒蛇飛行馬戲團的愛好者。
ABC是由Guido參加設計的一種教學語言(沒聽說過)。就Guido本人看來,ABC這種語言非常優美和強大,是專門為非專業程序員設計的。但是ABC語言並沒有成功,究其原因,Guido認為是非開放造成的。Guido決心在Python中避免這一錯誤(的確如此,Python與其它的語言如C,C++和Java結合的非常好)。同時,他還想實現在ABC中閃現過但未曾實現的東西。
就這樣,Python在Guido手中誕生了(真要感謝他)。實際上,第一個實現是在Mac機上。可以說,Python是從ABC發展起來,主要受到了Mola-3(另一種相當優美且強大的語言,為小型團體所設計的)的影響。並且結合了Unix Shell和C的習慣。
Python可用在哪些地方?
Python可以用在許多場合。當你需要大量的動態調整,要容易使用,功能強大並且富有彈性的情況,Python可以發揮很好的功效。
在處理文字方面,Python的核心功能(不需要任何擴充庫的情況下)比別的編程語言更為易用而且速度相當。這使Python在需要處理字元串的工作(包括系統管理,CGI編程)上成為高效的語言。
當Python加上它的標准擴充庫(如PIL,COM,Numeric,Oracledb,kjbuckets,tkinter,win32api,等等)或是特別擴充庫(你自己寫的,或是用SWING做的,或是利用ILU/COBRA/com的)後,它可以變成一個很好的「膠合語言」或者叫「指導語言」。就是指把不同的編程環境和互不相關的軟體功能整合的工具。例如把Numeric和Oracledb透過Python結合起來你就可以替你的資料庫數據做系統分析。Python的簡單、易用以及方便而強大的c/c++擴展方面使它成為一種十分優秀的「膠合語言」。
許多開發人員也在寫圖形用戶界面時廣泛的採用了Python。如果在Windows下,如果想做一個圖形界面程序,那麼Python可以勝任。可以去wxPython.org看一下,它是一個Python的擴展庫,可以用來實現跨平台的圖形編程,它支持windows和unix/linux。在那個網站上有一些演示,可以學習一下。Python可以做CGI。有些主頁提供了對Python的CGI支持。現在還有一些用Python做的游戲。如果想了解更多的Python可以做什麼,可以去SourceForge上查找有關Python的項目,上面有很多東西。
運行方式
Python可以以命令行方式運行,也可以互動式方式運行,還具有圖形集成環境,這樣開發Python就相當方便。現在已經出現了許多用Python編寫的可視化編程軟體,用於實現象Delphi一樣的功能。
面向對象
Python是一個真正的面向對象語言。它甚至支持異常的處理。如果學過Java,應該對這個不陌生。但其它的腳本語言,如PHP,好象就沒有。這使得程序的編寫更加清晰,而不需要許多的錯誤檢查了。
模塊和包
這一點更象是Java。對於Java的支持,大家可以了解JPython。JPython是用Java寫的Python,它完全支持Java,在這個環境下使用Python可以隨意地使用Java的類庫。語言擴展可以用C、C++或Java為Python編寫新的新言模塊,如函數。或者與Python直接編譯在一起,或者採用動態庫裝入方式實現。也專門有人編寫了一個工具,可以實現為Python自動實現函數介面封裝,這就是SWIG(Simplified Wrapper and Interface Generator),或稱做簡單封裝和介面生成器(可以在http://sourceforge.net/projects/swig/)。
有趣的語法
Guido認為Python的語法是非常優美的。其中一點就是,塊語句的表示不是C語言常用的{}對,或其它符號對,而是採用縮近表示法!有趣吧。就這一點來說,Guido的解釋是:首先,使用縮近表示法減少了視覺上的混亂,並且使程序變短,這樣就減少了需要對基本代碼單元注意的范圍;其次,它減少了程序員的自由度,更有利於統一風格,使得閱讀別人的程序更容易。感覺還是不錯的,就C語言來說,在if語句後面大括弧的寫法就好幾種,不同的人喜歡不同的樣子,還不如統一起來,都不會看得別扭。
在每個類或函數的定義後面,第一行可以是說明語句,根本不需要注釋符標記。對於後面跟塊語句的語句,後面應跟上一個冒號。一行語句不能太長,因為沒有行結束符,如果超長則要使用續行符(\\)。還有一些有趣的比如說,象下面的一個比較處理,用C語言為:
if (2
用Python可以表示為
if (2
什麼是Zope?
Zope是一個開放源代碼的Web應用伺服器,採用Python語言開發,使用它您可以方便的構建內容管理、內部網、門戶網站、和其他的定製應用。
l 高度面向對象的Web開發平台,採用Python語言開發。
l 可以運行在幾乎所有流行的操作系統上,支持多語言。
l 能集成到其他流行的伺服器,也自帶伺服器。
l 提供清晰的數據/邏輯/表示的分離 。
l 帶有可擴展的內置對象和強大的集成安全模塊。
什麼是Plone?
Pone是一個Zope上的一個用戶友好、功能強大的開放源代碼內容管理系統。Plone適合用作內部網/外部網的伺服器、文檔發布系統、門戶伺服器和異地協同群件工具,到目前,Plone其實已經發展成為了一個應用開發平台。
l 是一種功能強大的開放源碼(Open Source)內容管理系統(CMS) 。
l 通過Web瀏覽器來訪問、編輯內容和管理,易於更新內容 。
l 無需編程,即可創建新的內容類型 。
l 協同的編輯和發布機制 。