Do các quy tắc phạm vi của Python, tất cả các biến khi được khởi tạo trong phạm vi có sẵn sau đó. Vì điều kiện không đưa ra phạm vi mới, nên việc xây dựng bằng các ngôn ngữ khác (như khởi tạo biến trước điều kiện đó) không nhất thiết là cần thiết. Ví dụ, chúng ta có thể có:Cách khởi tạo biến có điều kiện là gì?
def foo(optionalvar = None):
# some processing, resulting in...
message = get_message()
if optionalvar is not None:
# some other processing, resulting in...
message = get_other_message()
# ... rest of function that uses message
hay, chúng ta có thể có thay vì:
def foo(optionalvar = None):
if optionalvar is None:
# processing, resulting in...
message = get_message()
else:
# other processing, resulting in...
message = get_other_message()
# ... rest of function that uses message
Tất nhiên, get_message
và get_other_message
chức năng có thể có nhiều dòng mã và về cơ bản không thích hợp (bạn có thể giả định trạng thái của chương trình sau mỗi đường dẫn giống nhau); mục tiêu ở đây là làm cho message
sẵn sàng để sử dụng ngoài phần này của hàm.
Tôi đã nhìn thấy các cấu trúc sau sử dụng nhiều lần trong các câu hỏi khác, chẳng hạn như:
nào xây dựng sẽ được chấp nhận hơn?
Điều đó có hoàn toàn phụ thuộc vào việc bạn muốn 'get_message' chạy điều kiện hoặc vô điều kiện không? – delnan
Ý tưởng ở đây không phải là chức năng để gọi, mà là việc xây dựng 'thông điệp': bản thân hàm không liên quan. –
Cho dù đó là một chức năng hay không, một sự khác biệt ngữ nghĩa là một trong những chạy một nửa của mã vô điều kiện. Nếu nó tạo ra sự khác biệt, có rất ít điểm trong phong cách tranh luận. – delnan