用Python程序執行討論Python實現基本的框架與結構
執行Python程序的相關過程中時,你會發現你其功能非常簡單,例如從1加到10再打印出來而雜File模式,執行Python程序和交互都歸在此類。以下就是文章的相關內容的詳細介紹。忘你會有所收獲。
Python源碼分析2 - 一個簡單的Python程序執行 收藏
本文主要通過跟蹤一個非常簡單的Python程序的執行,簡單討論Python實現的基本框架和結構。
要執行Python程序如下,功能非常簡單:從1加到10再打印出來
- # test program
- sum = 0
- for i in range(1, 11):
- sumsum = sum + i
- print sum
如果想要在Windows下面用VS 2005調試Python,可以通過下面步驟設置:
把Startup Project設置成Python,這樣就可以直接通過F5來啟動Python 右鍵單擊Python這個Project,選擇Properties。在對話框中的Configuration Properties->Debugging下面,把Command Arguments設置為-d test.py。其中test.py就是我們所要調試程序的名字。-d表示打開調試開關,可以看到額外的調試信息。
好了,設置完畢之后可以直接按下F10來單步追蹤該程序的執行了。
首先,F10,啟動Python程序,可以看到Python的main函數中沒有什么內容,只是簡單的調用Py_Main。Py_Main顧名思義自然是主函數了,分幾大部分:
分析命令行和環境變量
調用Py_Initialize初始化
根據命令行的內容執行進入不同的執行模式
- if (command) {
- sts = PyRun_SimpleStringFlags(command, &cf) != 0;
- free(command);
- } else if (module) {
- sts = RunModule(module);
- free(module);
- }
- else {
- if (filename == NULL && stdin_is_interactive) {
- RunStartupFile(&cf);
- }
- /* XXX */
- sts = PyRun_AnyFileExFlags(
- fp,
- filename == NULL ? "<stdin>" : filename,
- filename != NULL, &cf) != 0;
- }
從上面的代碼可以很容易看出,一共有3種執行方式:
Command模式,執行單條Python語句。通過-c指定。語句內容存放在command變量中。調用PyRun_SimpleStringFlags來執行。
Module模式,執行整個Module。通過-m指定。調用RunModule來執行。
File模式,執行Python程序和交互都歸在此類。可以看到,如果未指定文件名并且stdin是交互的話,會執行一個PYTHONSTARTUP所指定的源程序。
【編輯推薦】