官术网_书友最值得收藏!

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之后會忘記ba之間的任何關系。它只記得現在賦給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的狀態。

主站蜘蛛池模板: 伊吾县| 曲靖市| 育儿| 桂东县| 勃利县| 加查县| 鹤壁市| 类乌齐县| 项城市| 塘沽区| 玉山县| 和静县| 冕宁县| 富平县| 肇州县| 贵港市| 六枝特区| 芦溪县| 新密市| 济阳县| 新邵县| 永川市| 兰州市| 买车| 乌鲁木齐市| 红安县| 桐柏县| 滨海县| 阳高县| 察雅县| 湖州市| 壶关县| 德惠市| 若羌县| 石渠县| 阳朔县| 南靖县| 扎兰屯市| 黄龙县| 林口县| 衡阳市|