Sự khác biệt giữa / và toán tử trong Python là gì?

Chào Hari,

Quy tắc cho các toán tử gán tăng cường như

mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
65 là, như

các toán tử khác, họ gọi một phương thức "dunder" [dấu gạch dưới kép] đặc biệt

để cho phép các lớp tùy chỉnh những gì hoạt động thực hiện

Nếu hoạt động dunder đặc biệt không tồn tại, thì tăng cường

phép gán rơi vào toán tử bình thường

Vì vậy hoạt động

obj += x

biến thành một cái gì đó như thế này trong trình thông dịch

  1. Liệu

    mylist = [10, 20]
    
    new = mylist + [30, 40]  # Can only add list to list.
    
    print[new]
    
    66 có phương pháp đặc biệt
    mylist = [10, 20]
    
    new = mylist + [30, 40]  # Can only add list to list.
    
    print[new]
    
    67?

  2. Nếu vậy, hãy chạy

    mylist = [10, 20]
    
    new = mylist + [30, 40]  # Can only add list to list.
    
    print[new]
    
    68

  3. Nếu không, hãy chạy

    mylist = [10, 20]
    
    new = mylist + [30, 40]  # Can only add list to list.
    
    print[new]
    
    69

Đối với số nguyên, không có phương pháp

mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
67 đặc biệt nào, và do đó, phương pháp
mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
65

hoạt động chỉ là đường cú pháp cho

mylist + x
2. Tương tự cho chuỗi

Nhưng các danh sách xác định một phương thức

mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
67 đặc biệt, làm cho nó trở thành một phương thức thay thế

nối

Đối với danh sách,

mylist + x
4 không nối danh sách

mylist + x

yêu cầu x phải là một danh sách và nó trả về một danh sách mới được tạo bởi

nối tất cả các mục của mylist và các mục của x

mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]

in một danh sách mới,

mylist + x
5 trong khi rời khỏi danh sách ban đầu

hoang sơ

Nhưng bài tập tăng cường

mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
65 thực hiện nối tại chỗ

mylist += x

và x có thể là bất kỳ dãy nào, không chỉ là một danh sách và nó nối chuỗi

các mục của x vào danh sách của tôi tại chỗ. Nó không tạo ra một danh sách mới

mylist = [10, 20]

mylist += [30, 40]  # mylist is now [10, 20, 30, 40]

mylist += [50, 60]  # tuples are okay, not just lists

mylist += "xyz"  # strings are sequences too!

print[mylist]

sẽ in

mylist + x
7

Vì vậy,

mylist + x
4 và
mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
65 cho các danh sách vẫn là nối, chỉ một chút

phiên bản khác nhau

  • mylist + x
    
    4 là phép nối danh sách với danh sách và trả về một danh sách mới

  • mylist = [10, 20]
    
    new = mylist + [30, 40]  # Can only add list to list.
    
    print[new]
    
    65 nối các mục của bất kỳ trình tự hoặc trình lặp nào với

    danh sách hiện có, tại chỗ

Sau khi hoàn thành hướng dẫn trước của chúng tôi về các biến Python trong loạt bài này, bây giờ bạn đã nắm vững cách tạo và đặt tên cho các đối tượng Python thuộc các loại khác nhau. Hãy làm một số công việc với họ

Đây là những gì bạn sẽ học trong hướng dẫn này. Bạn sẽ thấy cách tính toán có thể được thực hiện trên các đối tượng trong Python. Đến cuối hướng dẫn này, bạn sẽ có thể tạo các biểu thức phức tạp bằng cách kết hợp các đối tượng và toán tử

Lấy bài kiểm tra. Kiểm tra kiến ​​thức của bạn với bài kiểm tra tương tác “Các toán tử và biểu thức Python” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian

Lấy bài kiểm tra "

Trong Python, các toán tử là các ký hiệu đặc biệt chỉ định rằng một số loại tính toán sẽ được thực hiện. Các giá trị mà toán tử tác động lên được gọi là toán hạng

Đây là một ví dụ

>>>

mylist + x
1

Trong trường hợp này, toán tử

mylist + x
29 cộng các toán hạng
mylist + x
30 và
mylist + x
31 lại với nhau. Toán hạng có thể là một giá trị bằng chữ hoặc một biến tham chiếu đến một đối tượng

>>>

mylist + x
5

Một chuỗi các toán hạng và toán tử, như

mylist + x
32, được gọi là một biểu thức. Python hỗ trợ nhiều toán tử để kết hợp các đối tượng dữ liệu thành các biểu thức. Chúng được khám phá dưới đây

toán tử số học

Bảng sau liệt kê các toán tử số học được hỗ trợ bởi Python

Toán tửExampleMeaningResult

mylist + x
29[unary]
mylist + x
34Unary positive
mylist + x
30
Nói cách khác, nó không thực sự làm gì cả. Nó chủ yếu tồn tại vì mục đích hoàn chỉnh, để bổ sung cho Phủ định đơn nhất.
mylist + x
29[nhị phân]
mylist + x
37 Phép cộngTổng của
mylist + x
30 và
mylist + x
31
mylist + x
40[đơn vị]
mylist + x
41Giá trị phủ định đơn vị bằng
mylist + x
30 nhưng ngược dấu
mylist + x
40 [nhị phân]
mylist + x
44Phép trừ
mylist + x
31 trừ đi từ
mylist + x
30
mylist + x
47
mylist + x
48Phép nhân Tích của
mylist + x
30 và
mylist + x
31
mylist + x
51
mylist + x
52Dung chia cho
mylist + x
1 chia cho
mylist + x
1.
Kết quả luôn có kiểu
mylist + x
55.
mylist + x
56
mylist + x
57Số dư mô đun khi
mylist + x
30 chia cho
mylist + x
31
mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
40
mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
41Phép chia tầng [còn gọi là phép chia số nguyên]Thương khi
mylist + x
30 chia cho
mylist + x
31, làm tròn thành số nguyên nhỏ nhất tiếp theo
mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
44
mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
45Lũy thừa
mylist + x
30 nâng lên lũy thừa của
mylist + x
31

Dưới đây là một số ví dụ về các toán tử này được sử dụng

>>>

mylist + x
2

Kết quả của phép chia tiêu chuẩn [

mylist + x
51] luôn là
mylist + x
55, ngay cả khi số bị chia chia hết cho số chia

>>>

mylist + x
5

Khi kết quả của phép chia sàn [

mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
40] là dương, thì như thể phần phân số bị cắt bớt, chỉ để lại phần nguyên. Khi kết quả là âm, kết quả được làm tròn xuống số nguyên nhỏ nhất tiếp theo [âm lớn hơn]

>>>

mylist + x
2

Nhân tiện, xin lưu ý rằng trong phiên REPL, bạn có thể hiển thị giá trị của một biểu thức bằng cách chỉ cần nhập biểu thức đó tại dấu nhắc

mylist + x
81 mà không cần
mylist + x
82, giống như bạn có thể làm với giá trị bằng chữ hoặc biến

>>>

mylist + x
3

Loại bỏ các quảng cáo

Toán tử so sánh

Toán tửExampleMeaningResult

mylist + x
83
mylist + x
84Bằng với
mylist + x
85 nếu giá trị của
mylist + x
30 bằng giá trị của
mylist + x
31
mylist + x
88 ngược lại
mylist + x
89
mylist + x
500Không bằng
mylist + x
85 nếu
mylist + x
30 không bằng
mylist + x
31
mylist + x
88 ngược lại
mylist + x
505_____s___1506
mylist + x
88 otherwise
mylist + x
511
mylist + x
512Less than or equal to
mylist + x
85 if
mylist + x
30 is less than or equal to
mylist + x
31
mylist + x
88 otherwise
mylist + x
517
mylist + x
518Greater than
mylist + x
85 if
mylist + x
30 is greater than
mylist + x
31
mylist + x
88 otherwise
mylist + x
523
mylist + x
524Greater than or equal to
mylist + x
85 if
mylist + x
30 is greater than or equal to
mylist + x
31
mylist + x
88 otherwise

Dưới đây là ví dụ về các toán tử so sánh được sử dụng

>>>

mylist + x
4

Các toán tử so sánh thường được sử dụng trong ngữ cảnh Boolean như câu lệnh điều kiện và vòng lặp để điều hướng luồng chương trình, như bạn sẽ thấy sau

So sánh đẳng thức trên các giá trị dấu phẩy động

Nhớ lại từ cuộc thảo luận trước đó về các số dấu phẩy động mà giá trị được lưu trữ bên trong đối tượng

mylist + x
55 có thể không chính xác như bạn nghĩ. Vì lý do đó, việc so sánh các giá trị dấu phẩy động với sự bằng nhau chính xác là một cách làm kém. Hãy xem xét ví dụ này

>>>

mylist + x
5

Rất tiếc. Biểu diễn bên trong của toán hạng cộng không chính xác bằng

mylist + x
530 và
mylist + x
531, vì vậy bạn không thể dựa vào
mylist + x
532 để so sánh chính xác với
mylist + x
533

Cách ưa thích để xác định xem hai giá trị dấu phẩy động có “bằng nhau” hay không là tính toán xem chúng có gần nhau hay không, với một số dung sai. Hãy xem ví dụ này

>>>

mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
4

mylist + x
534 trả về giá trị tuyệt đối. Nếu giá trị tuyệt đối của chênh lệch giữa hai số nhỏ hơn dung sai đã chỉ định, thì chúng đủ gần nhau để được coi là bằng nhau

Toán tử logic

Các toán tử logic

mylist + x
535,
mylist + x
536 và
mylist + x
537 sửa đổi và kết hợp các biểu thức được đánh giá trong ngữ cảnh Boolean để tạo ra các điều kiện phức tạp hơn

Biểu thức logic liên quan đến toán hạng Boolean

Như bạn đã thấy, một số đối tượng và biểu thức trong Python thực sự thuộc kiểu Boolean. Nghĩa là, chúng bằng với một trong các đối tượng Python

mylist + x
85 hoặc
mylist + x
88. Hãy xem xét những ví dụ này

>>>

mylist + x
8

Trong các ví dụ trên,

mylist + x
540,
mylist + x
541 và
mylist + x
542 đều là các đối tượng hoặc biểu thức Boolean

Diễn giải các biểu thức logic liên quan đến

mylist + x
535,
mylist + x
536 và
mylist + x
537 rất đơn giản khi các toán hạng là Boolean

Toán tửExampleMeaning

mylist + x
535
mylist + x
547
mylist + x
85 nếu
mylist + x
532 là
mylist + x
88
mylist + x
88 nếu
mylist + x
532 là
mylist + x
85
[Đảo ngược nghĩa của
mylist + x
532 một cách logic]
mylist + x
536
mylist + x
556 nếu một trong hai ____
mylist + x
85 nếu một trong hai
mylist + x
532 hoặc
mylist + x
559 là
mylist + x
85>>
mylist + x
53

Chuỗi

Một chuỗi rỗng là sai.
Một chuỗi khác rỗng là true.

>>>

mylist + x
54

Đối tượng dữ liệu tổng hợp tích hợp

Python cung cấp các kiểu dữ liệu tổng hợp tích hợp có tên là

mylist + x
215,
mylist + x
216,
mylist + x
217 và
mylist + x
218. Đây là các loại “container” chứa các đối tượng khác. Một đối tượng thuộc một trong các loại này được coi là sai nếu nó trống và đúng nếu nó không trống

Các ví dụ dưới đây chứng minh điều này cho loại

mylist + x
215. [Danh sách được định nghĩa bằng Python với dấu ngoặc vuông. ]

Để biết thêm thông tin về các loại

mylist + x
215,
mylist + x
216,
mylist + x
217 và
mylist + x
218, hãy xem các hướng dẫn sắp tới

>>>

mylist + x
55

Từ khóa “
mylist + x
210”

mylist + x
210 luôn sai

>>>

mylist + x
56

Biểu thức logic liên quan đến toán hạng không phải Boolean

Các giá trị không phải Boolean cũng có thể được sửa đổi và nối bởi

mylist + x
535,
mylist + x
536 và,
mylist + x
537. Kết quả phụ thuộc vào “độ trung thực” của các toán hạng

“______1535” và toán hạng không phải Boolean

Đây là những gì xảy ra với một giá trị không phải Boolean

mylist + x
532

Nếu

mylist + x
532 là
mylist + x
547 là “sự thật”
mylist + x
88“giả dối”
mylist + x
85

Dưới đây là một số ví dụ cụ thể

>>>

mylist + x
57

“______1536” và các toán hạng không phải Boolean

Đây là những gì xảy ra với hai giá trị không phải Boolean

mylist + x
532 và
mylist + x
559

Nếu

mylist + x
532 là
mylist + x
556 là thật
mylist + x
532 là giả dối
mylist + x
559

Lưu ý rằng trong trường hợp này, biểu thức

mylist + x
556 không đánh giá thành
mylist + x
85 hoặc
mylist + x
88, mà thay vào đó là một trong số
mylist + x
532 hoặc
mylist + x
559

>>>

mylist + x
58

Mặc dù vậy, vẫn có trường hợp biểu thức

mylist + x
556 sẽ đúng nếu
mylist + x
532 hoặc
mylist + x
559 đúng và sai nếu cả
mylist + x
532 và
mylist + x
559 đều sai

“______1537” và các toán hạng không phải Boolean

Đây là những gì bạn sẽ nhận được cho hai giá trị không phải Boolean

mylist + x
532 và
mylist + x
559

Nếu

mylist + x
532 là
mylist + x
563 là “sự thật”
mylist + x
559“giả dối”
mylist + x
532

>>>

mylist + x
59

Như với

mylist + x
536, biểu thức
mylist + x
563 không ước tính thành
mylist + x
85 hoặc
mylist + x
88, mà thay vào đó là một trong hai số
mylist + x
532 hoặc
mylist + x
559.
mylist + x
563 sẽ là true nếu cả
mylist + x
532 và
mylist + x
559 đều là true, ngược lại là false

Loại bỏ các quảng cáo

Biểu thức logic tổng hợp và đánh giá ngắn mạch

Cho đến giờ, bạn đã thấy các biểu thức chỉ có một toán tử

mylist + x
536 hoặc
mylist + x
537 và hai toán hạng

mylist + x
20

Nhiều toán tử logic và toán hạng có thể được xâu chuỗi lại với nhau để tạo thành các biểu thức logic phức hợp

Biểu thức hợp chất “
mylist + x
536”

Xét biểu thức sau

x1

mylist + x
536 x2
mylist + x
536 x3
mylist + x
536 … xn

Biểu thức này là đúng nếu bất kỳ xi nào là đúng

Trong một biểu thức như thế này, Python sử dụng một phương pháp gọi là đánh giá ngắn mạch, còn được gọi là đánh giá McCarthy để vinh danh nhà khoa học máy tính John McCarthy. Các toán hạng xi được đánh giá theo thứ tự từ trái sang phải. Ngay khi một biểu thức được tìm thấy là đúng, toàn bộ biểu thức được biết là đúng. Tại thời điểm đó, Python dừng lại và không có thuật ngữ nào được đánh giá. Giá trị của toàn bộ biểu thức là của xi đã chấm dứt đánh giá

Để giúp chứng minh việc đánh giá ngắn mạch, giả sử rằng bạn có một hàm “nhận dạng” đơn giản

mylist + x
274 hoạt động như sau

  • mylist + x
    
    274 nhận một đối số duy nhất
  • Nó hiển thị đối số cho bàn điều khiển
  • Nó trả về đối số được truyền cho nó dưới dạng giá trị trả về của nó

[Bạn sẽ thấy cách định nghĩa một hàm như vậy trong hướng dẫn sắp tới về Hàm. ]

Một số lệnh gọi ví dụ tới

mylist + x
274 được hiển thị bên dưới

>>>

mylist + x
21

Bởi vì

mylist + x
274 chỉ đơn giản trả về đối số được truyền cho nó, nên chúng ta có thể đặt biểu thức
mylist + x
278 thành true hoặc false khi cần bằng cách chỉ định một giá trị cho
mylist + x
279 là true hoặc false một cách thích hợp. Ngoài ra,
mylist + x
274 hiển thị đối số của nó với bảng điều khiển, xác nhận trực quan liệu nó có được gọi hay không

Bây giờ, hãy xem xét biểu thức logic hợp chất sau

>>>

mylist + x
22

Trước tiên, trình thông dịch đánh giá

mylist + x
281, là
mylist + x
207. Giá trị số của
mylist + x
207 là sai. Biểu thức chưa đúng, vì vậy việc đánh giá tiến hành từ trái sang phải. Toán hạng tiếp theo,
mylist + x
284, trả về
mylist + x
88. Điều đó cũng sai, vì vậy đánh giá tiếp tục

Tiếp theo là

mylist + x
286. Điều đó đánh giá là
mylist + x
287, đó là sự thật. Tại thời điểm đó, trình thông dịch dừng lại vì bây giờ nó biết toàn bộ biểu thức là đúng.
mylist + x
287 được trả về dưới dạng giá trị của biểu thức và các toán hạng còn lại,
mylist + x
289 và
mylist + x
290, không bao giờ được đánh giá. Bạn có thể thấy từ màn hình rằng các cuộc gọi
mylist + x
289 và
mylist + x
290 không xảy ra

Biểu thức hợp chất “
mylist + x
537”

Một tình huống tương tự tồn tại trong một biểu thức có nhiều toán tử

mylist + x
537

x1

mylist + x
537 x2
mylist + x
537 x3
mylist + x
537 … xn

Biểu thức này là đúng nếu tất cả xi đều đúng

Trong trường hợp này, đánh giá ngắn mạch yêu cầu trình thông dịch ngừng đánh giá ngay khi bất kỳ toán hạng nào được phát hiện là sai, bởi vì tại thời điểm đó, toàn bộ biểu thức được biết là sai. Khi đó là trường hợp, không có toán hạng nào nữa được đánh giá và toán hạng giả đã kết thúc đánh giá được trả về dưới dạng giá trị của biểu thức

>>>

mylist + x
23

Trong cả hai ví dụ trên, việc đánh giá dừng ở thuật ngữ đầu tiên sai—

mylist + x
284 trong trường hợp đầu tiên,
mylist + x
299 trong trường hợp thứ hai—và cả lệnh gọi
mylist + x
289 và
mylist + x
290 đều không xảy ra.
mylist + x
88 và
mylist + x
208, tương ứng, được trả về dưới dạng giá trị của biểu thức

Nếu tất cả các toán hạng là trung thực, tất cả chúng đều được đánh giá và toán hạng cuối cùng [ngoài cùng bên phải] được trả về dưới dạng giá trị của biểu thức

>>>

mylist + x
24

Loại bỏ các quảng cáo

Thành ngữ khai thác đánh giá ngắn mạch

Có một số mẫu thành ngữ phổ biến khai thác đánh giá ngắn mạch để diễn đạt ngắn gọn

Tránh một ngoại lệ

Giả sử bạn đã xác định hai biến

mylist + x
30 và
mylist + x
31, và bạn muốn biết liệu
mylist + x
506

>>>

mylist + x
25

Nhưng bạn cần tính đến khả năng

mylist + x
30 có thể là
mylist + x
207, trong trường hợp đó, thông dịch viên sẽ đưa ra một ngoại lệ

>>>

mylist + x
26

Bạn có thể tránh lỗi với một biểu thức như thế này

>>>

mylist + x
27

Khi

mylist + x
30 là
mylist + x
207, thì
mylist + x
511 là sai. Đánh giá ngắn mạch đảm bảo rằng đánh giá dừng tại điểm đó.
mylist + x
512 không được đánh giá và không có lỗi nào được nêu ra

Nếu thực tế, bạn có thể thậm chí còn ngắn gọn hơn thế. Khi

mylist + x
30 là
mylist + x
207, bản thân biểu thức
mylist + x
30 là sai. Không cần so sánh rõ ràng
mylist + x
511

>>>

mylist + x
28

Chọn một giá trị mặc định

Một thành ngữ khác liên quan đến việc chọn một giá trị mặc định khi một giá trị được chỉ định bằng 0 hoặc trống. Ví dụ: giả sử bạn muốn gán một biến

mylist + x
517 cho giá trị chứa trong một biến khác có tên là
mylist + x
518. Nhưng nếu
mylist + x
518 trống, bạn muốn cung cấp giá trị mặc định

Đây là một cách ngắn gọn để thể hiện điều này bằng cách sử dụng đánh giá ngắn mạch

mylist + x
29

Nếu

mylist + x
518 khác rỗng, nó đúng và biểu thức
mylist + x
521 sẽ đúng tại thời điểm đó. Quá trình đánh giá dừng lại và giá trị của
mylist + x
518 được trả về và gán cho
mylist + x
517

>>>

mylist + x
50

Mặt khác, nếu

mylist + x
518 là một chuỗi rỗng, nó là sai. Đánh giá của
mylist + x
521 tiếp tục với toán hạng tiếp theo,
mylist + x
526, được trả về và gán cho
mylist + x
517

>>>

mylist + x
51

Loại bỏ các quảng cáo

So sánh chuỗi

Các toán tử so sánh có thể được nối với nhau theo độ dài tùy ý. Ví dụ, các biểu thức sau gần như tương đương

mylist + x
52

Cả hai sẽ đánh giá cùng một giá trị Boolean. Sự khác biệt tinh tế giữa hai loại này là trong so sánh chuỗi

mylist + x
528,
mylist + x
559 chỉ được đánh giá một lần. Biểu thức dài hơn
mylist + x
530 sẽ khiến
mylist + x
559 được đánh giá hai lần

Ghi chú. Trong trường hợp

mylist + x
559 là một giá trị tĩnh, đây sẽ không phải là một sự khác biệt đáng kể. Nhưng hãy xem xét những biểu hiện này

mylist + x
53

Nếu

mylist + x
274 là một hàm khiến dữ liệu chương trình bị sửa đổi, sự khác biệt giữa việc nó được gọi một lần trong trường hợp đầu tiên và hai lần trong trường hợp thứ hai có thể quan trọng

Tổng quát hơn, nếu op1, op2, …, opn là các toán tử so sánh, thì các toán tử sau đây có cùng giá trị Boolean

x1 op1 x2 op2 x3 … xn-1 opn xn

x1 op1 x2

mylist + x
537 x2 op2 x3
mylist + x
537 … xn-1 opn xn

Trong trường hợp trước, mỗi xi chỉ được đánh giá một lần. Trong trường hợp sau, mỗi cái sẽ được đánh giá hai lần ngoại trừ lần đầu tiên và lần cuối cùng, trừ khi việc đánh giá ngắn mạch gây ra kết thúc sớm

toán tử Bitwise

Toán tử bitwise coi toán hạng là chuỗi các chữ số nhị phân và thao tác trên chúng từng chút một. Các toán tử sau được hỗ trợ

Toán tửVí dụÝ nghĩaKết quả

mylist + x
536
mylist + x
537bitwise ANDMỗi vị trí bit trong kết quả là AND logic của các bit ở vị trí tương ứng của toán hạng. [
mylist + x
287 nếu cả hai đều là
mylist + x
287, nếu không thì là
mylist + x
207. ]
mylist + x
541
mylist + x
542bitwise ORMỗi vị trí bit trong kết quả là OR logic của các bit ở vị trí tương ứng của toán hạng. [
mylist + x
287 nếu một trong hai là
mylist + x
287, ngược lại là
mylist + x
207. ]
mylist + x
546
mylist + x
547 phủ định theo bit Mỗi vị trí bit trong kết quả là phủ định logic của bit ở vị trí tương ứng của toán hạng. [________ 5287 của ________ 5207, ________ 5207 nếu ________ 5287. ]
mylist + x
552
mylist + x
553bitwise XOR [độc quyền OR]Mỗi vị trí bit trong kết quả là phép XOR logic của các bit ở vị trí tương ứng của toán hạng. [
mylist + x
287 nếu các bit trong toán hạng khác nhau,
mylist + x
207 nếu chúng giống nhau. ]
mylist + x
556
mylist + x
557Shift phải ________ 5558 vị trí Mỗi bit được dịch chuyển sang phải ________ 5558 vị trí.
mylist + x
560
mylist + x
561 Dịch sang trái ______ 5558 vị trí Mỗi bit được dịch sang trái _______ 5558 vị trí

Dưới đây là một số ví dụ

>>>

mylist + x
54

Ghi chú. Mục đích của

mylist + x
564 là định dạng đầu ra dạng số của các phép toán theo bit, để làm cho chúng dễ đọc hơn. Bạn sẽ thấy phương pháp
mylist + x
565 chi tiết hơn sau này. Hiện tại, chỉ cần chú ý đến toán hạng của phép toán bit và kết quả

toán tử nhận dạng

Python cung cấp hai toán tử,

mylist + x
566 và
mylist + x
567, xác định xem các toán hạng đã cho có cùng một danh tính hay không — nghĩa là tham chiếu đến cùng một đối tượng. Điều này không giống với đẳng thức, có nghĩa là hai toán hạng tham chiếu đến các đối tượng chứa cùng một dữ liệu nhưng không nhất thiết phải là cùng một đối tượng

Dưới đây là một ví dụ về hai đối tượng bằng nhau nhưng không giống nhau

>>>

mylist + x
55

Ở đây,

mylist + x
532 và
mylist + x
559 đều đề cập đến các đối tượng có giá trị là
mylist + x
570. Họ đều bình đẳng. Nhưng chúng không tham chiếu cùng một đối tượng, như bạn có thể xác minh

>>>

mylist + x
56

mylist + x
532 và
mylist + x
559 không có cùng một danh tính và
mylist + x
573 trả về
mylist + x
88

Trước đây bạn đã thấy rằng khi bạn thực hiện một phép gán như

mylist + x
575, Python chỉ tạo một tham chiếu thứ hai cho cùng một đối tượng và bạn có thể xác nhận thực tế đó bằng hàm
mylist + x
576. Bạn cũng có thể xác nhận nó bằng toán tử
mylist + x
566

>>>

mylist + x
57

Trong trường hợp này, vì

mylist + x
30 và
mylist + x
31 tham chiếu đến cùng một đối tượng, nên có lý do là
mylist + x
30 và
mylist + x
31 cũng sẽ bằng nhau

Không ngạc nhiên, đối lập của

mylist + x
566 là
mylist + x
567

>>>

mylist + x
58

Loại bỏ các quảng cáo

ưu tiên điều hành

Hãy xem xét biểu thức này

>>>

mylist + x
59

Có sự mơ hồ ở đây. Python có nên thực hiện phép cộng

mylist + x
584 trước rồi nhân tổng với
mylist + x
585 không?

Rõ ràng, vì kết quả là

mylist + x
588, nên Python đã chọn cái sau; . Đây là thủ tục đại số tiêu chuẩn, được tìm thấy phổ biến trong hầu hết các ngôn ngữ lập trình

Tất cả các toán tử mà ngôn ngữ hỗ trợ được gán quyền ưu tiên. Trong một biểu thức, tất cả các toán tử có mức ưu tiên cao nhất được thực hiện trước. Sau khi thu được các kết quả đó, các toán tử có mức độ ưu tiên cao nhất tiếp theo được thực hiện. Vì vậy, nó tiếp tục, cho đến khi biểu thức được đánh giá đầy đủ. Bất kỳ toán tử nào có mức độ ưu tiên như nhau đều được thực hiện theo thứ tự từ trái sang phải

Đây là thứ tự ưu tiên của các toán tử Python mà bạn đã thấy cho đến nay, từ thấp nhất đến cao nhất

OperatorDescriptionlowest precedence

mylist + x
536Boolean OR
mylist + x
537Boolean AND
mylist + x
535Boolean NOT
mylist + x
83,
mylist + x
89,
mylist + x
505,
mylist + x
511,
mylist + x
517,
mylist + x
523,
mylist + x
566,
mylist + x
567comparisons, identity
mylist + x
541bitwise OR
mylist + x
552bitwise XOR
mylist + x
536bitwise AND
mylist + x
560,
mylist + x
556bit shifts
mylist + x
29,
mylist + x
40addition, subtraction
mylist + x
47,
mylist + x
51,
mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
40,
mylist + x
56multiplication, division, floor division, modulo
mylist + x
212,
mylist + x
213,
mylist + x
214unary positive,

Toán tử ở đầu bảng có mức ưu tiên thấp nhất và toán tử ở cuối bảng có mức ưu tiên cao nhất. Bất kỳ toán tử nào trong cùng một hàng của bảng đều có quyền ưu tiên như nhau

Rõ ràng tại sao phép nhân được thực hiện đầu tiên trong ví dụ trên. phép nhân có quyền ưu tiên cao hơn phép cộng

Tương tự như vậy, trong ví dụ bên dưới, trước tiên,

mylist + x
216 được nâng lên lũy thừa của
mylist + x
217, bằng với
mylist + x
218, sau đó các phép nhân được thực hiện theo thứ tự từ trái sang phải [
mylist + x
219]

>>>

mylist + x
20

Quyền ưu tiên của toán tử có thể được ghi đè bằng cách sử dụng dấu ngoặc đơn. Các biểu thức trong ngoặc đơn luôn được thực hiện trước, trước các biểu thức không được đặt trong ngoặc đơn. Vì vậy, những điều sau đây xảy ra

>>>

mylist + x
21

>>>

mylist + x
22

Trong ví dụ đầu tiên,

mylist + x
584 được tính trước, sau đó kết quả được nhân với
mylist + x
585. Trong ví dụ thứ hai,
mylist + x
222 được tính trước, sau đó
mylist + x
216 được nâng lên lũy thừa đó, sau đó kết quả được nhân với
mylist + x
224

Không có gì sai khi sử dụng dấu ngoặc đơn một cách tự do, ngay cả khi chúng không cần thiết để thay đổi thứ tự đánh giá. Trên thực tế, nó được coi là một thực hành tốt, bởi vì nó có thể làm cho mã dễ đọc hơn và nó giúp người đọc không phải nhớ lại thứ tự ưu tiên của toán tử từ bộ nhớ. Hãy xem xét những điều sau đây

mylist + x
23

Ở đây, dấu ngoặc đơn hoàn toàn không cần thiết, vì các toán tử so sánh có mức độ ưu tiên cao hơn so với

mylist + x
537 và dù sao đi nữa cũng sẽ được thực hiện trước. Nhưng một số người có thể coi mục đích của phiên bản có dấu ngoặc đơn rõ ràng hơn phiên bản không có dấu ngoặc đơn này

mylist + x
24

Mặt khác, có lẽ có những người thích cái sau hơn; . Vấn đề là, bạn luôn có thể sử dụng dấu ngoặc đơn nếu bạn cảm thấy nó làm cho mã dễ đọc hơn, ngay cả khi chúng không cần thiết để thay đổi thứ tự đánh giá

Loại bỏ các quảng cáo

Toán tử gán tăng cường

Bạn đã thấy rằng một dấu bằng duy nhất [______1226] được sử dụng để gán giá trị cho một biến. Tất nhiên, giá trị ở bên phải của phép gán là một biểu thức chứa các biến khác là hoàn toàn khả thi.

>>>

mylist + x
25

Trên thực tế, biểu thức ở bên phải của phép gán có thể bao gồm các tham chiếu đến biến đang được gán cho

>>>

mylist + x
26

Ví dụ đầu tiên được hiểu là “

mylist + x
30 được gán giá trị hiện tại của
mylist + x
30 cộng với
mylist + x
229,” tăng giá trị của
mylist + x
30 lên một cách hiệu quả là
mylist + x
229. Lần đọc thứ hai “
mylist + x
31 được gán giá trị hiện tại của
mylist + x
31 nhân với
mylist + x
216,” làm tăng giá trị của
mylist + x
31 gấp ba lần một cách hiệu quả

Tất nhiên, kiểu gán này chỉ có ý nghĩa nếu biến được đề cập trước đó đã được gán một giá trị.

>>>

mylist + x
27

Python hỗ trợ ký hiệu gán tăng tốc tốc ký cho các toán tử số học và bitwise này

ArithmeticBitwise

mylist + x
29
_______240
mylist + x
47
mylist + x
51
mylist + x
56
mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
40
mylist = [10, 20]

new = mylist + [30, 40]  # Can only add list to list.

print[new]
44
mylist + x
536
mylist + x
541
mylist + x
552
mylist + x
556
mylist + x
560

Đối với các toán tử này, những điều sau đây là tương đương

mylist + x
28

Hãy xem những ví dụ này

Tăng cường
Tiêu chuẩn bài tập
Bài tập

mylist + x
248 tương đương với
mylist + x
249
mylist + x
250tương đương với
mylist + x
251
mylist + x
252tương đương với
mylist + x
253

Phần kết luận

Trong hướng dẫn này, bạn đã tìm hiểu về các toán tử đa dạng mà Python hỗ trợ để kết hợp các đối tượng thành biểu thức

Hầu hết các ví dụ bạn đã thấy cho đến nay chỉ liên quan đến dữ liệu nguyên tử đơn giản, nhưng bạn đã thấy phần giới thiệu ngắn gọn về kiểu dữ liệu chuỗi. Hướng dẫn tiếp theo sẽ khám phá các đối tượng chuỗi chi tiết hơn

Lấy bài kiểm tra. Kiểm tra kiến ​​thức của bạn với bài kiểm tra tương tác “Các toán tử và biểu thức Python” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian

Lấy bài kiểm tra "

« Biến trong Python

Toán tử và biểu thức trong Python

Chuỗi trong Python »

Đánh dấu là đã hoàn thành

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về John Sturtz

John là một Pythonista cuồng nhiệt và là thành viên của nhóm hướng dẫn Real Python

» Thông tin thêm về John

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Đan

Joanna

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Sự khác biệt giữa toán tử và và OR trong Python là gì?

Khoa học dữ liệu thực tế sử dụng Python . Cả hai đều yêu cầu hai toán hạng có thể đánh giá là đúng hoặc sai. Toán tử and chỉ trả về True nếu cả hai toán hạng đều True. Toán tử or trả về True nếu một trong hai toán hạng là true .

Toán tử and trong Python là gì?

Python và toán tử cho phép bạn xây dựng các biểu thức Boolean phức hợp mà bạn có thể sử dụng để quyết định tiến trình hành động của chương trình . Bạn có thể sử dụng toán tử and để giải quyết một số vấn đề cả trong ngữ cảnh Boolean hoặc không phải Boolean.

Đâu là sự khác biệt giữa và operator?

Giải pháp. Toán tử / được sử dụng để chia trong khi toán tử % được sử dụng để tìm phần còn lại .

Sự khác biệt giữa '/' và '/' trong Python là gì?

Trả lời. '/' là toán tử chia. '//' là toán tử chia tầng .

Chủ Đề