2011-12-21 27 views
17

Câu hỏi đơn giản và ngắn gọn. Trao đổi hai biến trong Python rất dễ dàng: a, b = b, a. Đó là ok, tôi không có phản đối :) Nhưng tôi quan tâm làm thế nào nó hoạt động nội bộ? Liệu nó tạo ra một số biến tạm thời của chính nó hoặc nó là một cái gì đó thú vị hơn (tôi đặt cược như vậy)?Cách hoán đổi biến hoạt động trong nội bộ?

Trả lời

31

Mã nguồn Python được chuyển thành bytecode trước khi được thực thi. Bạn có thể thấy cách hoán đổi các công trình trong nội bộ bằng cách sử dụng các bộ phận phân tách dis để xem những gì các bytecode trông giống như:

import dis 
>>> def f(a,b): a, b = b, a 
>>> dis.dis(f) 
    1   0 LOAD_FAST    1 (b) 
       3 LOAD_FAST    0 (a) 
       6 ROT_TWO    
       7 STORE_FAST    0 (a) 
      10 STORE_FAST    1 (b) 
      13 LOAD_CONST    0 (None) 
      16 RETURN_VALUE 

Trong thuật ngữ đơn giản, nó đẩy các giá trị của a và b trên stack, xoay (swaps) hàng đầu hai yếu tố, sau đó bật lại các giá trị.

Xem thêm:

+0

Awesome! Vì vậy, lừa là ROT_TWO ... Cảm ơn bạn rất nhiều! –

Các vấn đề liên quan