Nếu không Python

Để gán kết quả của hàm

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
5 cho biến
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
6 nếu nó khác với
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
7, hãy sử dụng toán tử Walrus
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
8 trong khối if một dòng. Toán tử Walrus gán giá trị trả về của hàm cho biến
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
9 và trả về giá trị đó cùng lúc, để bạn có thể kiểm tra và gán giá trị đó cho biến
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
6 sau đó

Vấn đề. Làm cách nào để gán giá trị cho một biến nếu nó không bằng

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
7—chỉ sử dụng một dòng mã Python?

Thí dụ. Giả sử, bạn muốn gán giá trị trả về của một hàm

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
5, nhưng chỉ khi nó không trả về
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
7. Nếu không, bạn muốn để nguyên giá trị

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

import random


def get_value[]:
    if random.random[]>0.5:
        return None
    return 1

# Naive approach:
x = 42
tmp = get_value[]
if tmp != None:
    x = tmp
print[tmp]

Trong khi điều này hoạt động, bạn cần thực hiện chức năng

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
5 hai lần, điều này không tối ưu. Một cách khác là gán kết quả của hàm
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
5 cho một biến tạm thời để tránh thực hiện hàm lặp lại

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]

Tuy nhiên, điều này có vẻ rắc rối và không hiệu quả. Có cách nào tốt hơn?

Chúng ta hãy có một cái nhìn tổng quan về các lớp lót gán một giá trị có điều kiện cho một biến nhất định

Tập thể dục. Chạy mã. Có phải nó luôn luôn tạo ra kết quả tương tự?

Phương pháp 1. Toán tử 3 ngôi + Dấu chấm phẩy

Toán tử bậc ba cơ bản nhất

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
6 bao gồm ba toán hạng
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
6,
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
8 và
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
9. Nó là một biểu thức có giá trị trả về. Toán tử bậc ba trả về
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
6 nếu biểu thức Boolean
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
8 có giá trị là
# Method 1
tmp = get_value[]; x = tmp if tmp else x
2. Ngược lại, nếu biểu thức
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
8 có giá trị là
# Method 1
tmp = get_value[]; x = tmp if tmp else x
4, thì toán tử bậc ba trả về giá trị thay thế là
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
9

Bạn có thể sử dụng toán tử bậc ba để giải quyết vấn đề này kết hợp với dấu chấm phẩy để viết nhiều dòng mã dưới dạng một lớp lót Python

# Method 1
tmp = get_value[]; x = tmp if tmp else x

Bạn không thể chạy hàm

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
5 hai lần—để kiểm tra xem nó có trả về
# Method 1
tmp = get_value[]; x = tmp if tmp else x
2 hay không và để gán giá trị trả về cho biến
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
6. Tại sao?

Do đó, đoạn mã sau sẽ là một sai lầm thẳng thừng

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
2

Biến

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
6 vẫn có thể là
x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
7—ngay cả sau khi toán tử bậc ba dường như đã kiểm tra điều kiện

Toán tử Ternary Python – Và một vụ hack một lớp đáng ngạc nhiên


Xem video này trên YouTube

Những bài viết liên quan

  • Python Ternary
  • Câu lệnh If một dòng trong Python
  • Dấu chấm phẩy Python

Phương pháp 2. Hải mã + Một dòng-Nếu

Một phần mở rộng tuyệt đẹp của Python 3. 8 là toán tử Walrus. Toán tử Walrus

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
21 là toán tử gán có giá trị trả về. Do đó, nó cho phép bạn kiểm tra một điều kiện và gán một giá trị cùng một lúc

x = 42
temp = get_value[]
if temp != None:
    x = temp
print[x]
4

Đây là một cách rất rõ ràng, dễ đọc và Pythonic. Ngoài ra, bạn không có phép gán danh tính dự phòng trong trường hợp điều kiện if không được đáp ứng

Trăn 3. 8 Toán tử hải mã [Biểu thức gán]


Xem video này trên YouTube

Bài viết liên quan. Toán tử hải mã trong Python 3. 8

Sách Python One-Liners. Làm chủ một dòng đầu tiên

Các lập trình viên Python sẽ cải thiện các kỹ năng khoa học máy tính của họ với những lời khuyên hữu ích này

Python One-Liners sẽ dạy bạn cách đọc và viết “one-liners”. tuyên bố ngắn gọn về chức năng hữu ích được gói gọn trong một dòng mã. Bạn sẽ học cách giải nén một cách có hệ thống và hiểu bất kỳ dòng mã Python nào, đồng thời viết Python được nén mạnh mẽ, hùng hồn như một chuyên gia

Năm chương của cuốn sách bao gồm [1] mẹo và thủ thuật, [2] biểu thức chính quy, [3] học máy, [4] chủ đề khoa học dữ liệu cốt lõi và [5] thuật toán hữu ích

Giải thích chi tiết về một lớp giới thiệu các khái niệm khoa học máy tính quan trọng và nâng cao kỹ năng mã hóa và phân tích của bạn. Bạn sẽ tìm hiểu về các tính năng nâng cao của Python như khả năng hiểu danh sách, cắt lớp, hàm lambda, biểu thức chính quy, hàm ánh xạ và rút gọn cũng như các bài tập cắt lát

Bạn cũng sẽ học cách

  • Tận dụng cấu trúc dữ liệu để giải quyết các vấn đề trong thế giới thực, chẳng hạn như sử dụng lập chỉ mục Boolean để tìm các thành phố có ô nhiễm trên mức trung bình
  • Sử dụng các khái niệm cơ bản về NumPy như mảng, hình dạng, trục, loại, phát sóng, lập chỉ mục nâng cao, cắt, sắp xếp, tìm kiếm, tổng hợp và thống kê
  • Tính toán số liệu thống kê cơ bản của mảng dữ liệu đa chiều và thuật toán K-Means cho học không giám sát
  • Tạo các biểu thức chính quy nâng cao hơn bằng cách sử dụng nhóm và nhóm được đặt tên, giao diện phủ định, ký tự thoát, khoảng trắng, bộ ký tự [và bộ ký tự phủ định] và toán tử tham lam/không tham lam
  • Hiểu một loạt các chủ đề khoa học máy tính, bao gồm đảo chữ cái, đối xứng, siêu bộ, hoán vị, giai thừa, số nguyên tố, số Fibonacci, xáo trộn, tìm kiếm và sắp xếp theo thuật toán

Đến cuối cuốn sách, bạn sẽ biết cách viết Python ở mức tinh tế nhất và tạo ra những tác phẩm “nghệ thuật Python” ngắn gọn, đẹp mắt chỉ trong một dòng

Nhận Python One-Liners của bạn trên Amazon

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Nếu Không có trong Python là gì?

Từ khóa Không có được sử dụng để xác định giá trị rỗng hoặc không có giá trị nào . Không có gì không giống như 0, Sai hoặc một chuỗi rỗng.

Là Không và == Không có Python?

None là một đối tượng đơn lẻ [chỉ tồn tại duy nhất một None ]. là kiểm tra xem đối tượng có phải là cùng một đối tượng hay không, trong khi == chỉ kiểm tra xem chúng có tương đương hay không . Nhưng vì chỉ có một None nên chúng sẽ luôn giống nhau và is sẽ trả về True.

Không có hay không có trong Python?

Python sử dụng từ khóa Không để xác định các đối tượng và biến null . Mặc dù Không có gì phục vụ một số mục đích giống như null trong các ngôn ngữ khác, nhưng nó hoàn toàn là một con thú khác. Là null trong Python, Không có giá trị nào không được xác định là 0 hoặc bất kỳ giá trị nào khác. Trong Python, Không ai là một đối tượng và là công dân hạng nhất.

Không có int trong Python?

int[None] đưa ra một ngoại lệ vì None không thể được chuyển thành int . Câu trả lời cho câu hỏi của bạn là nó không thể được thực hiện. Bạn có thể thay thế một cái gì đó, chẳng hạn như 0, hoặc 2771, hoặc một con voi màu hồng, nhưng bất kể bạn thay thế gì, bạn vẫn không thể chuyển đổi Không thành số nguyên.

Chủ Đề