前面我們講變量的時候說過,Python在執(zhí)行自定義代碼的時候,會申請內存空間,然后把值存進去,再把內存地址綁定給變量名。
現在我定義一個變量名,name=‘于謙’。變量定義完了之后是為了以后能用,而變量的引用方式又有兩種,一種方式就是直接引用,就是直接通過變量名引用對應值。另一種就是間接引用,間接引用主要針對是容器類型。
比如我定義一個列表l,第一個值我存一個字符串a,第二個值我存一個字符串b,第三個值我直接寫name,沒有加引號。所以它代表的是就是前面我們定義變量名name。
這個變量名引用到了他的值‘于謙’,也就是說把name放在這里,就等于把‘于謙’的內存地址放在這里了,這就叫間接引用。因為這個l直接指向的是這個列表的內存地址。
然后這個l[2],指向的就是前面我們定義的這個name,所以說這個‘于謙’是用過這個列表簡介引用到的。我現在直接print這個l[2],也是可以訪問到‘于謙的’。
那怎么證明這個l[2]訪問的和前面的‘于謙’是同一個值呢?前門我們學過看它們的id是否一樣是不是就可以直接看出來了。我現在直接打印name的id和l[2]的id。
顯示出來的兩個id都是一樣的,這時候學的好的同學就有人問了,說前面我們學過,這個Pycharm會擴大小整數池,這個‘于謙’Pycharm會給我們做優(yōu)化,所以在Pycharm里面我們看到的id是一樣的。
現在我把這幾行代碼復制一下,到cmd終端里用Ptython交互式環(huán)境看一下。
你會發(fā)現,這兩個id確實是一樣的,證明這兩次訪問name和l[2]取的都是同一個值,只是前面這個我們稱為直接引用,后面這個我們稱為簡介引用。
未經允許不得轉載:445IT之家 » Python直接引用和間接引用