python怎么输入程序代码_学习用 Thonny 写代码: 一个面向初学者的Python IDE
學習編程很難。即使當你最終怎么正確使用你的冒號和括號,但仍然有很大的可能你的程序不會如果所想的工作。 通常,這意味著你忽略了某些東西或者誤解了語言結構,你需要在代碼中找到你的期望與現實存在分歧的地方。
程序員通常使用被叫做調試器debugger的工具來處理這種情況,它允許一步一步地運行他們的程序。不幸的是,大多數調試器都針對專業用途進行了優化,并假設用戶已經很好地了解了語言結構的語義(例如:函數調用)。
Thonny 是一個適合初學者的 Python IDE,由愛沙尼亞的 Tartu 大學 開發,它采用了不同的方法,因為它的調試器是專為學習和教學編程而設計的。
雖然 Thonny 適用于像小白一樣的初學者,但這篇文章面向那些至少具有 Python 或其他命令式語言經驗的讀者。
開始
從第 Fedora 27 開始,Thonny 就被包含在 Fedora 軟件庫中。 使用 sudo dnf install thonny 或者你選擇的圖形工具(比如“軟件Software”)安裝它。
當第一次啟動 Thonny 時,它會做一些準備工作,然后呈現一個空白的編輯器和 Python shell 。將下列程序文本復制到編輯器中,并將其保存到文件中(Ctrl+S)。n = 1while n < 5:
print(n * "*") n = n + 1
我們首先運行該程序。 為此請按鍵盤上的 F5 鍵。 你應該看到一個由星號組成的三角形出現在 shell 窗格中。
Python 分析了你的代碼并理解了你想打印一個三角形了嗎?讓我們看看!
首先從“查看View”菜單中選擇“變量Variables”。這將打開一張表格,向我們展示 Python 是如何管理程序的變量的。現在通過按 Ctrl + F5(在 XFCE 中是 Ctrl + Shift + F5)以調試模式運行程序。在這種模式下,Thonny 使 Python 在每一步所需的步驟之前暫停。你應該看到程序的第一行被一個框包圍。我們將這稱為焦點,它表明 Python 將接下來要執行的部分代碼。
你在焦點框中看到的一段代碼段被稱為賦值語句。 對于這種聲明,Python 應該計算右邊的表達式,并將值存儲在左邊顯示的名稱下。按 F7 進行下一步。你將看到 Python 將重點放在語句的正確部分。在這個例子中,表達式實際上很簡單,但是為了通用性,Thonny 提供了表達式計算框,它允許將表達式轉換為值。再次按 F7 將文字 1 轉換為值 1。現在 Python 已經準備好執行實際的賦值—再次按 F7,你應該會看到變量 n 的值為 1 的變量出現在變量表中。
繼續按 F7 并觀察 Python 如何以非常小的步驟前進。它看起來像是理解你的代碼的目的或者更像是一個愚蠢的遵循簡單規則的機器?
函數調用
函數調用Function Call是一種編程概念,它常常給初學者帶來很大的困惑。從表面上看,沒有什么復雜的事情——給代碼命名,然后在代碼中的其他地方引用它(調用它)。傳統的調試器告訴我們,當你進入調用時,焦點跳轉到函數定義中(然后稍后神奇地返回到原來的位置)。這是整件事嗎?這需要我們關心嗎?
結果證明,“跳轉模型” 只對最簡單的函數是足夠的。理解參數傳遞、局部變量、返回和遞歸都得理解堆棧框架的概念。幸運的是,Thonny 可以直觀地解釋這個概念,而無需在厚厚的掩蓋下搜索重要的細節。
將以下遞歸程序復制到 Thonny 并以調試模式(Ctrl+F5 或 Ctrl+Shift+F5)運行。def factorial(n): if n == 0: return 1
else: return factorial(n-1) * nprint(factorial(4))
重復按 F7,直到你在對話框中看到表達式 factorial(4)。 當你進行下一步時,你會看到 Thonny 打開一個包含了函數代碼、另一個變量表和另一個焦點框的新窗口(移動窗口以查看舊的焦點框仍然存在)。
此窗口表示堆棧幀,即用于解析函數調用的工作區。幾個放在彼此頂部的這樣的窗口稱為調用堆棧call stack。注意調用位置的參數 4 與 “局部變量” 表中的輸入 n 之間的關系。繼續按 F7 步進, 觀察在每次調用時如何創建新窗口并在函數代碼完成時被銷毀,以及如何用返回值替換了調用位置。
值與參考
現在,讓我們在 Python shell 中進行一個實驗。首先輸入下面屏幕截圖中顯示的語句:
正如你所看到的, 我們追加到列表 b, 但列表 a 也得到了更新。你可能知道為什么會發生這種情況, 但是對初學者來說,什么才是最好的解釋呢?
當教我的學生列表時,我告訴他們我一直欺騙了他們關于 Python 內存模型。實際上,它并不像變量表所顯示的那樣簡單。我告訴他們重新啟動解釋器(工具欄上的紅色按鈕),從“查看View”菜單中選擇“堆Heap”,然后再次進行相同的實驗。如果這樣做,你就會發現變量表不再包含值——它們實際上位于另一個名為“堆Heap”的表中。變量表的作用實際上是將變量名映射到地址(或稱 ID),地址又指向了堆Heap表中的行。由于賦值僅更改變量表,因此語句 b = a 只復制對列表的引用,而不是列表本身。這解釋了為什么我們通過這兩個變量看到了變化。
(為什么我要在教列表的主題之前推遲說出內存模型的事實?Python 存儲的列表是否有所不同?請繼續使用 Thonny 的堆模式來找出結果!在評論中告訴我你認為怎么樣!)
如果要更深入地了解參考系統, 請將以下程序通過打開堆表復制到 Thonny 并進行小步調試(F7) 中。def do_something(lst, x):
lst.append(x)
a = [1,2,3]
n = 4
do_something(a, n)
print(a)
即使“堆模式”向我們顯示真實的圖片,但它使用起來也相當不方便。 因此,我建議你現在切換回普通模式(取消選擇“查看View”菜單中的“堆Heap”),但請記住,真實模型包含變量、參考和值。
結語
我在這篇文章中提及到的特性是創建 Thonny 的主要原因。很容易對函數調用和引用形成錯誤的理解,但傳統的調試器并不能真正幫助減少混淆。
除了這些顯著的特性,Thonny 還提供了其他幾個初學者友好的工具。 請查看 Thonny的主頁 以了解更多信息!
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的python怎么输入程序代码_学习用 Thonny 写代码: 一个面向初学者的Python IDE的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ char 转 string_4.
- 下一篇: stl源码剖析_STL之set源码剖析