Computer >> Máy Tính >  >> Lập trình >> Python

Không gian tên và phạm vi trong Python

Trong python, chúng tôi xử lý các biến, hàm, thư viện và mô-đun, v.v. Có khả năng tên của biến bạn sẽ sử dụng đã tồn tại dưới dạng tên của một biến khác hoặc là tên của một hàm khác hoặc một phương thức khác. Trong trường hợp như vậy, chúng ta cần tìm hiểu về cách tất cả các tên này được quản lý bởi một chương trình python. Đây là khái niệm về không gian tên.

Sau đây là ba loại không gian tên

  • Không gian tên cục bộ:Tất cả tên của các hàm và biến được khai báo bởi một chương trình được lưu giữ trong không gian tên này. Không gian tên này tồn tại miễn là chương trình chạy.

  • Không gian tên toàn cục:Không gian tên này chứa tất cả tên của các hàm và các biến khác có trong các mô-đun đang được sử dụng trong chương trình python. Nó bao gồm tất cả các tên là một phần của không gian tên cục bộ.

  • Không gian tên dựng sẵn:Đây là cấp cao nhất của không gian tên có sẵn với các tên mặc định có sẵn như một phần của trình thông dịch python được tải dưới dạng môi trường lập trình. Nó bao gồm không gian tên toàn cầu, đến lượt nó lại bao gồm không gian tên cục bộ.

Không gian tên và phạm vi trong Python

Phạm vi trong Python

Không gian tên có thời gian tồn tại khi nó có sẵn. Đó cũng được gọi là phạm vi. Ngoài ra, phạm vi sẽ phụ thuộc vào vùng mã hóa nơi có biến hoặc đối tượng. Bạn có thể thấy trong chương trình dưới đây cách các biến được khai báo trong vòng lặp bên trong có sẵn cho vòng lặp bên ngoài nhưng không ngược lại. Cũng xin lưu ý cách tên của hàm ngoài cũng trở thành một phần của biến toàn cục.

Ví dụ

prog_var = 'Hello'
def outer_func():
   outer_var = 'x'
   def inner_func():
      inner_var = 'y'
      print(dir(), ' Local Variable in Inner function')

      inner_func()
      print(dir(), 'Local variables in outer function')

      outer_func()
      print(dir(), 'Global variables ')

Chạy đoạn mã trên cho chúng ta kết quả sau -

Đầu ra

['inner_var'] Local Variable in Inner function
['inner_func', 'outer_var'] Local variables in outer function
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'outer_func', 'prog_var'] Global variables