2016-11-04 14 views
5

Ngày đầu tiên của tôi bằng Python và bị lẫn lộn với một ví dụ rất ngắn. Hy vọng bất cứ ai có thể cung cấp một số lời giải thích về lý do tại sao có một số sự khác biệt giữa các phiên bản này. Xin vui lòng!Sự nhầm lẫn gán nhiều biến số Python

V1: đầu ra là 1, 1, 2, 3, 5, 8

a, b = 0, 1 
while b < 10: 
    print(b) 
    a, b = b, a+b 

V2: đầu ra là 1, 2, 4, 8

a, b = 0, 1 
while b < 10: 
    print(b) 
    a = b 
    b = a+b 

Trả lời

5

Trong phiên bản đầu tiên , Mặt bên phải được đánh giá đầu tiên, do đó, b chưa được tăng lên khi bạn thêm nó.

Để bước qua phiên bản đầu tiên cho một vài lần lặp:

1.

a = 0 
b = 1 
a, b = 1, 1 # b is 1, and a is 0 

2.

a = 1 
b = 1 
a, b = 1, 2 # b is 1 and a is 1 

3.

a = 1 
b = 2 
a, b = 2, 3 # b is 2 and a is 1 

Trong phiên bản thứ hai , b được gán trước khi bạn thêm nó, vì vậy đây là cách phiên bản thứ hai đi:

1.

a = 0 
b = 1 
a = b # a is now 1. 
b = a + b # b is now 2, because both a and b are 1. 

2.

a = 1 
b = 2 
a = b # a is now 2. 
b = a + b # b is now 4, because both a and b are 2. 
+0

Thanks a lot, Morgan. Vì vậy, ưu tiên của biểu thức đúng đi trước tiên, phải không? – Kelvin

+0

@KelvinYe Chính xác. –

+0

Không sao, tôi rất vui được giúp đỡ. –