這是歷史版本頁面 — 看 Python (32-bit) 最新版本

想學寫程式但不知從何開始?Python 能做什麼

Python (32-bit) 軟體圖示 Python (32-bit) 3.3.2 (32-bit) 資料更新 2013-05-16 閱讀約 8 分鐘

你大概遇過這種時刻:手邊有一份重複的表格要整理、幾百個檔案要重新命名、或是想從網路上抓點資料下來分析,但靠手動一個一個處理,弄到半夜還沒結束。你心想「這一定有辦法自動化吧」,於是開始搜尋「寫程式入門」、「自動化處理檔案」,結果看到一堆專業術語,還沒開始就先放棄了。你需要的不是一個複雜的開發環境,而是一個能讓你快速寫出第一行程式、馬上解決眼前問題的工具。

很多人以為學程式一定要先搞懂變數、迴圈、物件這些抽象概念,才能開始寫出有用的東西。但實際上,入門的關鍵在於「語法夠不夠直覺」以及「套件夠不夠多」。如果一個語言光是印出「Hello World」就要設定一堆環境,或是連讀取一個 CSV 檔案都要自己寫幾十行程式,那學習曲線就會把人嚇跑。這類工具的切入點,是讓你把注意力放在「想解決的問題」上,而不是花時間跟編譯器或環境設定搏鬥。

01Python (32-bit) 到底能拿來做什麼?

它能做的事情很廣,從最基本的「把兩個數字加起來」到「抓取網頁資料」、「整理 Excel 表格」、「訓練機器學習模型」都涵蓋在內。官方文件列出的應用領域包含網頁開發、資料分析、科學計算、人工智慧、自動化腳本與桌面應用程式。你可以用 Django 或 Flask 寫網站,用 NumPy 和 Pandas 處理資料,用 PyQt 或 Tkinter 做桌面軟體。它本質上是一套通用的程式語言,不是只為了解決單一問題而存在。

02我完全沒寫過程式,這套軟體適合當作第一門語言嗎?

官方說明中明確提到它「對初學者友善」、「學習曲線平緩」,語法強調可讀性,用縮排取代大括號,讓程式碼看起來接近英文敘述。這表示你不需要先懂一堆底層觀念,就能寫出簡單的程式。它的動態型別機制讓你在宣告變數時不用指定型別,減少初學者常犯的型別錯誤。不過,這並不代表完全沒有門檻,你還是需要花時間熟悉基本語法、變數、流程控制這些概念,只是相較於其他語言,起步會順一些。

03它跟其他程式語言比起來,最大的特色是什麼?

官方文件強調兩點:一是「標準函式庫龐大」,內建處理字串、檔案、網路、網頁開發、資料處理的模組,很多功能不用額外安裝就能直接用;二是「生態系豐富」,透過 pip 套件管理工具可以安裝 NumPy、Pandas、TensorFlow 等專門函式庫。這代表你不需要從零開始寫所有東西,很多常見需求都有現成的套件可以呼叫。另外,它跨平台,在 Windows、macOS、Linux 上寫的程式碼通常可以直接搬過去用,不需要大幅修改。

04我想用 Python 寫一個自動化腳本,例如批次重新命名檔案,該怎麼開始?

安裝完成後,用任何文字編輯器(官方建議 Visual Studio Code、PyCharm、Atom 或 Sublime Text)建立一個 .py 檔案,寫入你的程式碼,然後在命令提示字元或終端機執行 `python 檔名.py` 即可。針對批次重新命名,你可以使用標準函式庫中的 `os` 模組來操作檔案與資料夾,不需要安裝任何額外套件。官方文件也建議,先從簡單的「Hello World」開始,再逐步學習變數、資料型別、if-else、迴圈與函式,之後就能組合出你要的自動化工具。

05這套軟體在 Windows 7 或 Windows 8 上跑得動嗎?

根據提供的資料,它支援 Windows 7、Windows 8 與 Windows 10,所以這三個系統都能安裝執行。不過要注意,官方文件提到它「跨平台」,但沒有特別說明舊版 Windows 的效能表現或相容性細節。如果你的系統是 Windows 7,建議安裝前先確認你的電腦硬體規格是否符合需求,並到官方網站查看該版本是否有特別的系統要求。另外,微軟早已停止支援 Windows 7,這可能影響某些依賴系統更新的功能。

06它的介面是英文的,我看不懂英文會不會很難用?

這套軟體本身是程式語言,不是圖形化介面軟體,所以「介面語系」指的是官方文件與安裝程式的語言,都是英文。但實際使用上,你主要面對的是程式碼編輯器(如 Visual Studio Code),那些編輯器通常有中文介面或中文化套件。Python 的關鍵字(如 `if`、`for`、`def`)都是英文,但數量不多,學起來很快。如果你完全不懂英文,最大的障礙會是查閱官方文件與錯誤訊息,這部分可以靠線上中文教學資源補足,但官方文件本身沒有中文版。

07我該不該選這套軟體,還是直接學其他類似的開發工具?

這取決於你的目標。官方資料列出功能相近的軟體包括 Komodo IDE、Processing、DrJava、Code::Blocks 與 CodeLobster PHP Edition,但這些都是「整合開發環境(IDE)」或特定用途的語言,不是同一類的東西。Python 是語言本身,你需要另外搭配編輯器或 IDE 來寫程式。如果你是想學「寫程式」這件事,Python 的入門門檻較低、社群資源多,是合理的選擇。但如果你已經確定要走網頁前端或 C++ 遊戲開發,那 Python 就不是最直接的路徑。

08它更新這麼頻繁,會不會學到一半語法就變了?

從版本紀錄來看,它近 12 個月更新了 12 次,近 24 個月更新了 20 次,代表維護相當活躍。但 Python 的語法穩定性很高,核心語法多年來沒有劇烈變動,更新通常是在標準函式庫新增功能或修正錯誤。你學的基本語法在未來幾年內不會失效。不過,如果你使用第三方套件,套件本身可能有自己的更新節奏,偶爾會出現新版不相容舊版的狀況,這在安裝套件時需要注意版本相容性。

09我聽說 Python 在機器學習和人工智慧領域很紅,這是真的嗎?

官方文件確實列舉了 TensorFlow、PyTorch、scikit-learn 等函式庫,並說明它們被廣泛用於開發 AI 與機器學習模型。這表示 Python 在這些領域有完整的生態系,從資料前處理、模型訓練到部署都有對應的工具。但要注意,這些套件本身需要另外安裝,而且對電腦硬體(尤其是 GPU)有一定要求。如果你只是好奇想試試,可以先從安裝套件、跑官方範例開始;但如果你是想做專業的深度學習,可能需要評估自己的硬體是否足夠。

10什麼樣的人不適合用這套軟體?

如果你需要的是「開啟即用」的圖形化工具,例如想用滑鼠點一點就完成資料分析或報表製作,那 Python 不適合你,因為它需要寫程式碼。另外,如果你對英文介面與英文文件感到極度排斥,學習過程會比較痛苦。還有,如果你的目標是開發 iOS 或 Android 原生手機應用程式,Python 不是主流選擇,官方文件也沒有提到手機開發的支援。最後,如果你需要的是整合開發環境(IDE),Python 本身不包含 IDE,你需要另外安裝編輯器,這對不想自行設定環境的人來說是個門檻。

11這套軟體是免費的嗎?還是有試用期限制?

它的授權型式是 Open Source(開放原始碼),代表你可以免費下載、安裝、使用,甚至修改原始碼。沒有提到試用期或付費版本,官方網站提供安裝檔供任何人下載。不過,開放原始碼不等於「不用學」,你還是需要花時間學習語法與工具鏈。另外,雖然軟體本身免費,但如果你使用某些雲端服務或付費的編輯器(如 PyCharm 專業版),那部分可能需要付費,但這與 Python 本身無關。

下載與官方連結

前往官方網站 下載 Python (32-bit)

python-3.3.2.msi · 19.3 MB · 連結指向軟體原廠

版本紀錄

再看 5 筆

看完整版本清單

這一版改了什麼

What's new in this version:

Core and Builtins:
- Issue #17237: Fix crash in the ASCII decoder on m68k.
- Issue #17408: Avoid using an obsolete instance of the copyreg module when the interpreter is shutdown and then started again.
- Issue #17863: In the interactive console, don’t loop forever if the encoding can’t be fetched from stdin.
- Issue #17867: Raise an ImportError if __import__ is not found in __builtins__.
- Issue #17857: Prevent build failures with pre-3.5.0 versions of sqlite3, such as was shipped with Centos 5 and Mac OS X 10.4.
- Issue #17413: sys.settrace callbacks were being passed a string instead of an exception instance for the ‘value’ element of the arg tuple if the exception originated from C code; now an exception instance is always provided.
- Issue #17782: Fix undefined behaviour on platforms where struct timespec‘s “tv_nsec” member is not a C long.
- Issue #17715: Fix segmentation fault from raising an exception in a __trunc__ method.
- Issue #16447: Fixed potential segmentation fault when setting __name__ on a class.
- Issue #17669: Fix crash involving finalization of generators using yield from.
- Issue #17619: Make input() check for Ctrl-C correctly on Windows.
- Issue #17610: Don’t rely on non-standard behavior of the C qsort() function.
- Issue #17357: Add missing verbosity output when using -v/-vv.

Library:
- Issue #17606: Fixed support of encoded byte strings in the XMLGenerator
- .characters() and ignorableWhitespace() methods. Original patch by Sebastian
- Ortiz Vasquez.
- Issue #17732: Ignore distutils.cfg options pertaining to install paths if a virtual environment is active.
- Issue #1159051: Back out a fix for handling corrupted gzip files that broke backwards compatibility.
- Issue #17915: Fix interoperability of xml.sax with file objects returned by codecs.open().
- Issue #16601: Restarting iteration over tarfile no more continues from where it left off. Patch by Michael Birtwell.
- Issue #17289: The readline module now plays nicer with external modules or applications changing the rl_completer_word_break_characters global variable. Initial patch by Bradley Froehle.
- Issue #12181: select module: Fix struct kevent definition on OpenBSD 64-bit platforms. Patch by Federico Schwindt.
- Issue #14173: Avoid crashing when reading a signal handler during interpreter shutdown.
- Issue #16316: mimetypes now recognizes the .xz and .txz (.tar.xz) extensions.
- Issue #15902: Fix imp.load_module() accepting None as a file when loading an extension module.
- Issue #17802: Fix an UnboundLocalError in html.parser. Initial tests by Thomas Barlow.
- Issue #15535: Fix namedtuple pickles which were picking up the OrderedDict instead of just the underlying tuple.
- Issue #17192: Restore the patch for Issue #11729 which was ommitted in 3.3.1 when updating the bundled version of libffi used by ctypes. Update many libffi files that were missed in 3.3.1’s update to libffi-3.0.13.
- Issue #17358: Modules loaded by imp.load_source() and load_compiled() (and by extention load_module()) now have a better chance of working when reloaded.
- Issue #17353: Plistlib emitted empty data tags with deeply nested datastructures
- Issue #11714: Use ‘with’ statements to assure a Semaphore releases a condition variable. Original patch by Thomas Rachel.
- Issue #17795: Reverted backwards-incompatible change in SysLogHandler with Unix domain sockets.
- Issue #17555: Fix ForkAwareThreadLock so that size of after fork registry does not grow exponentially with generation of process.
- Issue #17707: multiprocessing.Queue’s get() method does not block for short timeouts.
- Isuse #17720: Fix the Python implementation of pickle.Unpickler to correctly process the APPENDS opcode when it is used on non-list objects.
- Issue #17012: shutil.which() no longer fallbacks to the PATH environment variable if empty path argument is specified. Patch by Serhiy Storchaka.
- Issue #17710: Fix pickle raising a SystemError on bogus input.
- Issue #17341: Include the invalid name in the error messages from re about invalid group names.
- Issue #17702: os.environ now raises KeyError with the original environment variable name (str on UNIX), instead of using the encoded name (bytes on UNIX).
- Issue #16163: Make the importlib based version of pkgutil.iter_importers work for submodules. Initial patch by Berker Peksag.
- Issue #16804: Fix a bug in the ‘site’ module that caused running ‘python -S -m site’ to incorrectly throw an exception.
- Issue #17016: Get rid of possible pointer wraparounds and integer overflows in the re module. Patch by Nickolai Zeldovich.
- Issue #16658: add missing return to HTTPConnection.send() Patch by Jeff Knupp.
- Issue #14971: unittest test discovery no longer gets confused when a function has a different __name__ than its name in the TestCase class dictionary.
- Issue #17678: Fix DeprecationWarning in the http/cookiejar.py by changing the usage of get_origin_req_host() to origin_req_host.
- Issue #17666: Fix reading gzip files with an extra field.
- Issue #17502: Process DEFAULT values in mock side_effect that returns iterator. Patch by Michael Foord.
- Issue #17572: Avoid chained exceptions while passing bad directives to time.strptime(). Initial patch by Claudiu Popa.
- Issue #17435: threading.Timer’s __init__ method no longer uses mutable default values for the args and kwargs parameters.
- Issue #17526: fix an IndexError raised while passing code without filename to inspect.findsource(). Initial patch by Tyler Doyle.
- Issue #16550: Update the opcode descriptions of pickletools to use unsigned integers where appropriate. Initial patch by Serhiy Storchaka.

IDLE:
- Issue #17838: Allow sys.stdin to be reassigned.
- Issue #13495: Avoid loading the color delegator twice in IDLE.
- Issue #17798: Allow IDLE to edit new files when specified on command line.
- Issue #14735: Update IDLE docs to omit “Control-z on Windows”.
- Issue #17585: Fixed IDLE regression. Now closes when using exit() or quit().
- Issue #17657: Show full Tk version in IDLE’s about dialog. Patch by Todd Rovito.
- Issue #17613: Prevent traceback when removing syntax colorizer in IDLE.
- Issue #1207589: Backwards-compatibility patch for right-click menu in IDLE.
- Issue #16887: IDLE now accepts Cancel in tabify/untabify dialog box.
- Issue #17625: In IDLE, close the replace dialog after it is used.
- Issue #14254: IDLE now handles readline correctly across shell restarts.
- Issue #17614: IDLE no longer raises exception when quickly closing a file.
- Issue #6698: IDLE now opens just an editor window when configured to do so.
- Issue #8900: Using keyboard shortcuts in IDLE to open a file no longer raises an exception.
- Issue #6649: Fixed missing exit status in IDLE. Patch by Guilherme Polo.

Tests:
- Issue #17833: Fix test_gdb failures seen on machines where debug symbols for glibc are available (seen on PPC64 Linux).
- Issue #7855: Add tests for ctypes/winreg for issues found in IronPython. Initial patch by Dino Viehland.
- Issue #17712: Fix test_gdb failures on Ubuntu 13.04.
- Issue #17835: Fix test_io when the default OS pipe buffer size is larger than one million bytes.
- Issue #17065: Use process-unique key for winreg tests to avoid failures if test is run multiple times in parallel (eg: on a buildbot host).
- Issue #12820: add tests for the xml.dom.minicompat module. Patch by John Chandler and Phil Connell.
- Issue #17790: test_set now works with unittest test discovery. Patch by Zachary Ware.
- Issue #17789: test_random now works with unittest test discovery. Patch by Zachary Ware.
- Issue #17779: test_osx_env now works with unittest test discovery. Patch by Zachary Ware.
- Issue #17766: test_iterlen now works with unittest test discovery. Patch by Zachary Ware.
- Issue #17690: test_time now works with unittest test discovery. Patch by Zachary Ware.
- Issue #17692: test_sqlite now works with unittest test discovery. Patch by Zachary Ware.
- Issue #17843: Removed bz2 test data file that was triggering false-positive virus warnings with certain antivirus software.

Documentation:
- Issue #15940: Specify effect of locale on time functions.
- Issue #6696: add documentation for the Profile objects, and improve profile/cProfile docs. Patch by Tom Pinckney.
- Issue #17915: Fix interoperability of xml.sax with file objects returned by codecs.open().

Build:
- Issue #17547: In configure, explicitly pass -Wformat for the benefit for GCC 4.8.
- Issue #17962: Build with OpenSSL 1.0.1e on Windows.