Hướng dẫn can you declare a variable in an if statement python? - bạn có thể khai báo một biến trong một câu lệnh if python không?

Tôi là người mới đến Python, vì vậy đây có lẽ là một câu hỏi phạm vi đơn giản. Mã sau trong tệp Python (mô -đun) đang làm tôi khó hiểu:

if __name__ == '__main__':
    x = 1

print x

Trong các ngôn ngữ khác mà tôi đã làm việc, mã này sẽ ném một ngoại lệ, vì biến x là cục bộ cho câu lệnh if và không nên tồn tại bên ngoài nó. Nhưng mã này thực thi và in 1. Có ai có thể giải thích hành vi này không? Có phải tất cả các biến được tạo trong một mô -đun toàn cầu/có sẵn cho toàn bộ mô -đun?

Hướng dẫn can you declare a variable in an if statement python? - bạn có thể khai báo một biến trong một câu lệnh if python không?

nbro

14.3K27 Huy hiệu vàng104 Huy hiệu bạc188 Huy hiệu đồng27 gold badges104 silver badges188 bronze badges

Khi được hỏi ngày 13 tháng 5 năm 2010 lúc 19:07May 13, 2010 at 19:07

2

Các biến Python được phân chia theo hàm, lớp hoặc mô -đun trong cùng trong đó chúng được gán. Các khối điều khiển như các khối ifwhile không được tính, do đó, một biến được gán bên trong if vẫn được giới thiệu vào một hàm, lớp hoặc mô -đun.

.

user2357112

242K26 Huy hiệu vàng393 Huy hiệu bạc471 Huy hiệu Đồng26 gold badges393 silver badges471 bronze badges

Đã trả lời ngày 13 tháng 5 năm 2010 lúc 19:21May 13, 2010 at 19:21

Luke Maurerluke MaurerLuke Maurer

7.2752 Huy hiệu vàng23 Huy hiệu bạc24 Huy hiệu đồng2 gold badges23 silver badges24 bronze badges

4

Có, chúng trong cùng một "phạm vi địa phương" và thực sự mã như thế này là phổ biến trong Python:

if condition:
  x = 'something'
else:
  x = 'something else'

use(x)

Lưu ý rằng x không được khai báo hoặc khởi tạo trước điều kiện, ví dụ như ở C hoặc Java.

Nói cách khác, Python không có phạm vi cấp độ khối. Tuy nhiên, cẩn thận với các ví dụ như

if False:
    x = 3
print(x)

mà rõ ràng sẽ tăng một ngoại lệ

if condition:
  x = 'something'
else:
  x = 'something else'

use(x)
2.

nbro

14.3K27 Huy hiệu vàng104 Huy hiệu bạc188 Huy hiệu đồng27 gold badges104 silver badges188 bronze badges

Khi được hỏi ngày 13 tháng 5 năm 2010 lúc 19:07May 13, 2010 at 19:10

Các biến Python được phân chia theo hàm, lớp hoặc mô -đun trong cùng trong đó chúng được gán. Các khối điều khiển như các khối ifwhile không được tính, do đó, một biến được gán bên trong if vẫn được giới thiệu vào một hàm, lớp hoặc mô -đun.Eli Bendersky

.87 gold badges344 silver badges406 bronze badges

1

242K26 Huy hiệu vàng393 Huy hiệu bạc471 Huy hiệu Đồng

  • Đã trả lời ngày 13 tháng 5 năm 2010 lúc 19:21

  • Luke Maurerluke Maurer

  • 7.2752 Huy hiệu vàng23 Huy hiệu bạc24 Huy hiệu đồng

  • Có, chúng trong cùng một "phạm vi địa phương" và thực sự mã như thế này là phổ biến trong Python:

(source)

Lưu ý rằng x không được khai báo hoặc khởi tạo trước điều kiện, ví dụ như ở C hoặc Java.

Nói cách khác, Python không có phạm vi cấp độ khối. Tuy nhiên, cẩn thận với các ví dụ nhưMay 13, 2010 at 19:13

mà rõ ràng sẽ tăng một ngoại lệ

if condition:
  x = 'something'
else:
  x = 'something else'

use(x)
2.Daniel G

nbro7 gold badges41 silver badges41 bronze badges

Đã trả lời ngày 13 tháng 5 năm 2010 lúc 19:10

int x;
if(something)
    x = 1;
else
    x = 2;

Eli Benderskyeli Bendersky

253K87 Huy hiệu vàng344 Huy hiệu bạc406 Huy hiệu đồng

Phạm vi trong Python tuân theo thứ tự này:May 13, 2010 at 19:14

Tìm kiếm phạm vi địa phươngSkilldrick

Tìm kiếm phạm vi của bất kỳ chức năng bao quanh33 gold badges172 silver badges227 bronze badges

Tìm kiếm phạm vi toàn cầu

Tìm kiếm các bản dựng

Lưu ý rằng if và các cấu trúc vòng lặp/phân nhánh khác không được liệt kê - chỉ các lớp, chức năng và mô -đun cung cấp phạm vi trong Python, do đó, bất cứ điều gì được khai báo trong một khối if đều có phạm vi giống như mọi thứ được xử lý bên ngoài khối. Các biến không được kiểm tra tại thời điểm biên dịch, đó là lý do tại sao các ngôn ngữ khác ném một ngoại lệ. Trong Python, miễn là biến tồn tại tại thời điểm bạn yêu cầu, không có ngoại lệ nào được ném.May 13, 2010 at 19:33

Hướng dẫn can you declare a variable in an if statement python? - bạn có thể khai báo một biến trong một câu lệnh if python không?

Đã trả lời ngày 13 tháng 5 năm 2010 lúc 19:13Paul Stephenson

Daniel Gdaniel g9 gold badges49 silver badges51 bronze badges

1

64.3K7 Huy hiệu vàng41 Huy hiệu bạc41 Huy hiệu đồng

Như Eli đã nói, Python không yêu cầu khai báo biến. Trong C bạn sẽ nói:

Khi được hỏi ngày 13 tháng 5 năm 2010 lúc 19:07May 13, 2010 at 19:10

Các biến Python được phân chia theo hàm, lớp hoặc mô -đun trong cùng trong đó chúng được gán. Các khối điều khiển như các khối ifwhile không được tính, do đó, một biến được gán bên trong if vẫn được giới thiệu vào một hàm, lớp hoặc mô -đun.Olivier Verdier

.26 gold badges97 silver badges90 bronze badges

242K26 Huy hiệu vàng393 Huy hiệu bạc471 Huy hiệu Đồng

>>> if False:
    y = 42


>>> y
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    y
NameError: name 'y' is not defined

Khi được hỏi ngày 13 tháng 5 năm 2010 lúc 19:07May 13, 2010 at 19:10

Các biến Python được phân chia theo hàm, lớp hoặc mô -đun trong cùng trong đó chúng được gán. Các khối điều khiển như các khối ifwhile không được tính, do đó, một biến được gán bên trong if vẫn được giới thiệu vào một hàm, lớp hoặc mô -đun.SilentGhost

.64 gold badges301 silver badges291 bronze badges

Bạn có thể đặt một biến trong một câu lệnh IF trong Python không?

Trong C, C ++, Perl và vô số ngôn ngữ khác, đó là một biểu thức, và bạn có thể đặt nó vào IF hoặc một thời gian hoặc bất cứ điều gì bạn thích, nhưng không phải trong Python, bởi vì những người tạo ra Python nghĩ rằng điều này quá dễ dàng bị lạm dụng ( hoặc bị lạm dụng) để viết mã "thông minh" (như bạn đang cố gắng).you can put it in an if or a while or whatever you like, but not in Python, because the creators of Python thought that this was too easily misused (or abused) to write "clever" code (like you're trying to).

Bạn có thể khai báo các biến trong một câu lệnh IF không?

Phạm vi biến đổi.Java cho phép bạn khai báo các biến trong phần thân của một thời gian hoặc nếu câu lệnh, nhưng điều quan trọng là phải nhớ những điều sau đây: một biến chỉ có sẵn từ tuyên bố của nó cho đến cuối niềng răng mà nó được khai báo.Java allows you to declare variables within the body of a while or if statement, but it's important to remember the following: A variable is available only from its declaration down to the end of the braces in which it is declared.

Chúng ta có thể khởi tạo một biến trong điều kiện nếu điều kiện?

Bây giờ có thể cung cấp điều kiện ban đầu trong chính câu lệnh IF.Cú pháp mới này được gọi là "nếu câu lệnh với bộ khởi tạo".Tăng cường này đơn giản hóa các mẫu mã phổ biến và giúp người dùng giữ cho phạm vi chặt chẽ.Mà lần lượt tránh bị rò rỉ biến đổi ngoài phạm vi.it is possible to provide initial condition within if statement itself. This new syntax is called "if statement with initializer". This enhancement simplifies common code patterns and helps users keep scopes tight. Which in turn avoids variable leaking outside the scope.

Là các biến trong một câu lệnh if toàn cầu?

Re: Sử dụng các biến toàn cầu trong các hàm với các câu lệnh IF có các biến toàn cầu và cục bộ.Tất cả các biến được khai báo trong không gian tên đầu tiên (toàn cầu) là toàn cầu.Tất cả các biến khác (được khai báo trong một hàm) là cục bộ trong hàm.All variables declared in the first (global) namespace are global. All other variables (declared in a function) are local in the function.