Có một phiên bản Python trong các cách sau if
-else
tuyên bố trong C++ hoặc tuyên bố tương tự như thế này:Python tuyên bố ngắn 'if-else'
int t = 0;
int m = t==0?100:5;
Có một phiên bản Python trong các cách sau if
-else
tuyên bố trong C++ hoặc tuyên bố tương tự như thế này:Python tuyên bố ngắn 'if-else'
int t = 0;
int m = t==0?100:5;
m = 100 if t == 0 else 5 # Requires Python version >= 2.5
m = (5, 100)[t == 0] # Or [5, 7][t == 0]
Cả hai dòng trên sẽ gây ra điều tương tự.
Dòng đầu tiên sử dụng phiên bản Python của "toán tử ba năm" có sẵn kể từ phiên bản 2.5, mặc dù tài liệu Python đề cập đến nó là Conditional Expressions
.
Dòng thứ hai là một chút hack để cung cấp chức năng nội tuyến theo nhiều cách (quan trọng) tương đương với ?:
bằng nhiều ngôn ngữ khác (chẳng hạn như C và C++).
Tài liệu của Python - 5.11. Conditional Expressions
Tôi tìm thấy cách viết tắt này "m = (5, 100) [t == 0]" hơi lạ một chút về mặt định vị giá trị, nhưng nó hoạt động tho –
t = 0
if t == 0:
m = 100
else:
m = 5
Đẹp tốt hơn là xấu xí.
Rõ ràng là tốt hơn là ẩn.
Đơn giản hơn là phức tạp.
Từ PEP 20.
Hoặc nếu bạn thực sự, thực sự phải (công trình bằng Python> = 2.5):
t = 0
m = 100 if t == 0 else 5
-1. Toán tử bậc ba là * ít xấu xí hơn * dài nếu cho các phép toán đơn giản như thế này, khá rõ ràng và * cách * đơn giản hơn. Dogma là xấu xí. – naught101
Các cấu trúc bạn đang đề cập đến được gọi là ternary operator. Python có một phiên bản của nó (kể từ phiên bản 2.5), như thế này:
x if a > b else y
Ngoài ra còn có:
m = t==0 and 100 or 5
Từ 0 là một giá trị falsy, chúng ta có thể viết:
m = t and 5 or 100
này tương đương với một trong những đầu tiên .
bản sao có thể có của [python? (điều hành/ternary) nhà điều hành cho các bài tập] (http://stackoverflow.com/questions/3091316/python-conditional-ternary-operator-for-assignments) –
có thể trùng lặp của [Python Ternary Operator] (http: // stackoverflow. com/questions/394809/python-ternary-operator) – kay