[問題] 關於賦值
如題,Python 的變數系統至今對我仍然是個謎。
Python 既是動態語言,變數感覺傾向於強型別但又不需要再宣告。因此,直譯器到底是怎
麼判斷型別的?而且,同一個變數名稱前後可能指涉不同型別。
主要想請教的是 dict 和 list 的部分:
# base 讀自 json
def callback(e):
...
data = base
data[...] = ...
這樣好像會改動到原本 base 的值欸?
還有例如:
lst = []
a = [0, 0, 0]
lst.append(a)
for i in range(len(a)):
a[i] += 1
lst.append(a)
結果 lst 的值不是 [[0, 0, 0], [1, 1, 1]] ,而是 [[1, 1, 1], [1, 1, 1]] 欸!
所以,當我作 data = base 這個運算時,感覺只是將 data 參考指向 base 這個實體而已
,而我若 lst.append(a) 也只是把 lst 的尾端指向 a。那麼,Python 的指派究竟何時是
參考,何時是複製呢?
--
Sent from my Sony Xperia XZ1
○ PiTT // PHJCI
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.107.176.158
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1549209158.A.FC6.html
推
02/03 23:58,
6年前
, 1F
02/03 23:58, 1F
→
02/03 23:58,
6年前
, 2F
02/03 23:58, 2F
果然是指標,但是 Python 也沒有什麼傳址傳參考
推
02/04 00:46,
6年前
, 3F
02/04 00:46, 3F
推
02/04 01:30,
6年前
, 4F
02/04 01:30, 4F
感謝兩位,會再研究看看
※ 編輯: nevikw39 (106.107.176.158), 02/04/2019 10:14:29
推
02/04 11:09,
6年前
, 5F
02/04 11:09, 5F
推
02/05 12:34,
6年前
, 6F
02/05 12:34, 6F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章