在下面的 for 回圈中,x創建了多少次(即分配了多少次新記憶體)- 每次迭代只創建一次還是一次?我假設是前者,但我想確定一下。
for _ in range(10):
x = 3
uj5u.com熱心網友回復:
反匯編生成的位元組碼是有指導意義的:
Python 3.8.2 (default, May 18 2021, 11:47:11)
[Clang 12.0.5 (clang-1205.0.22.9)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import dis
>>> dis.dis('''for _ in range(10):
... x = 3''')
1 0 LOAD_NAME 0 (range)
2 LOAD_CONST 0 (10)
4 CALL_FUNCTION 1
6 GET_ITER
>> 8 FOR_ITER 8 (to 18)
10 STORE_NAME 1 (_)
2 12 LOAD_CONST 1 (3)
14 STORE_NAME 2 (x)
16 JUMP_ABSOLUTE 8
>> 18 LOAD_CONST 2 (None)
20 RETURN_VALUE
也許注意這LOAD_CONST不會創建新的記憶體分配;但STORE_NAMEforx確實在回圈內。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/383702.html
上一篇:如何將回圈轉換為應用函式
