原始碼閱讀隨想

2021-06-18 02:54:30 字數 1712 閱讀 1963

以下文字摘自:笨方法學python41

這裡是我們要討論的**:

cities

['_find']=

find_city

city_found

=cities

['_find'

](cities

,state

)

你要記住乙個函式也可以作為乙個變數,``def find_city`` 比如這一句建立了乙個你可以在任何地方都能使用的變數。在這段**裡,我們首先把函式find_city

放到叫做 cities

的字典中,並將其標記為 '_find'

。這和我們將州和市關聯起來的**做的事情一樣,只不過我們在這裡放了乙個函式的名稱。

好了,所以一旦我們知道 find_city

是在字典中 _find

的位置,這就意味著我們可以去呼叫它。第二行**可以分解成如下步驟:

python 看到 city_found

= 於是知道了需要建立乙個變數。

然後它讀到 cities

,然後知道了它是乙個字典

然後看到了 ['_find']

,於是 python 就從索引找到了字典 cities

中對應的位置,並且獲取了該位置的內容。

['_find']

這個位置的內容是我們的函式 find_city

,所以 python就知道了這裡表示乙個函式,於是當它碰到 (

就開始了函式呼叫。

cities,

state

這兩個引數將被傳遞到函式 find_city

中,然後這個函式就被執行了。

find_city

接著從 cities

中尋找 states

,並且返回它找到的內容,如果什麼都沒找到,就返回乙個資訊說它什麼都沒找到。

python find_city

接受返回的資訊,最後將該資訊賦值給一開始的city_found

這個變數。

state

和 city

是...

作為引數傳遞給...

乙個函式,位置在...

'_find'

然後尋找,目的地為...

cities

這個位置...

最後賦值給 city_found.

還有一種方法讀它,這回是「由里向外」。

找到表示式的中心位置,此次為 ['_find']

.逆時針追溯,首先看到的是乙個叫 cities

的字典,這樣就知道了 cities 中的_find

元素。上一步得到乙個函式。繼續逆時針尋找,看到的是引數。

引數傳遞給函式後,函式會返回乙個值。然後再逆時針尋找。

最後,我們到了 city_found

= 的賦值位置,並且得到了最終結果。

數十年的程式設計下來,我在讀**的過程中已經用不到上面的三種方法了。我只要瞟一眼就知道它的意思了。甚至給我一整頁的**,我可以一眼瞄出裡邊的 bug 和錯誤。這樣的技能是花了超乎常人的時間和精力才鍛鍊得來的。在磨練的過程中,我學會了下面三種讀**的方法,它們是使用者幾乎所有的程式語言:

從前向後。

從後向前。

逆時針方向。

在閱讀《c語言程式設計》時候,也有降到怎麼處理複雜表示式的方法,在《the c programming language》中建議的是此處的第3中方法,不過叫的名字是「由里向外---一左一右」的方法

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...