- Python物理建模初學者指南(第2版)
- (美)杰西·M.金德 (美)菲利普·納爾遜
- 571字
- 2025-05-19 16:00:19
1.1.4 符號與數字
在數學中,即使讀者還不知道a的值,也可以“設b=a2-a”,然后開始推導。在該語句中,不管a的值是什么,都可以用a來定義b。
但如果你啟動Python并立即輸入等價的語句b=a**2-a
,結果將是一條錯誤消息[3]。每次按下<Return>
,Python都會嘗試計算每個賦值語句的值。如果變量a
還沒有被賦值,則計算失敗,Python會報錯。雖然其他計算機數學包可以接受這樣的輸入,跟蹤符號關系,并在以后對其進行計算,但原生Python是不能的[4]。
[3] 符號**表示冪運算。見1.4.2節。
[4] SymPy庫使Python中的符號計算成為可能。見10.3.2節。
“設b=a2-a”這樣的定義將在整個討論過程中保持不變,這是理所當然的。如果我們說,“在a=1的情況下……”,那么讀者知道b等于零;如果我們稍后說,“在a=2的情況下……”,那么我們就不必重申b的定義,讀者也會知道這個符號現在代表值22-2=2。
相反,像Python這樣的數值系統在執行賦值b=a**2-a
之后會忘記b
和a
之間的任何關系。它只記得現在賦給b
的值。如果后面改變a
的值,b
的值不會發生改變[5]。
[5] 在數學中,語句b=a2-a本質上將b定義為a的函數。Python當然也可以實現這一點,方法是定義一個返回值為a2-a的函數并將該函數賦給名稱b(見6.1節),但“=”的作用并非如此。
在數學證明過程中改變符號關系通常是不可取的。然而,在Python中,如果開始宣稱b=a**2-a
,那么沒有什么能阻止后面把它改成b=2**a
。第二個賦值語句丟棄了第一個賦值語句中計算的值,并用新計算的值替換它,從而更新了Python的狀態。
推薦閱讀
- Puppet 4 Essentials(Second Edition)
- Oracle WebLogic Server 12c:First Look
- FreeSWITCH 1.6 Cookbook
- INSTANT MinGW Starter
- C語言程序設計案例精粹
- 零基礎Java學習筆記
- Scala Reactive Programming
- Scala for Machine Learning(Second Edition)
- Python Digital Forensics Cookbook
- SEO教程:搜索引擎優化入門與進階(第3版)
- Java高級程序設計
- Joomla!Search Engine Optimization
- Learning iOS Penetration Testing
- Computer Vision with Python 3
- 精通Oracle 12c 數據庫管理