Phạm vi của các biến trong python là gì?

Bản tóm tắt. trong hướng dẫn này, bạn sẽ tìm hiểu cách phạm vi biến Python hoạt động. Sau hướng dẫn, bạn sẽ hiểu rõ về phạm vi tích hợp, cục bộ và toàn cầu

Giới thiệu về phạm vi biến Python

Khi bạn gán một đối tượng cho một biến, biến sẽ tham chiếu đối tượng đó trong bộ nhớ. Và nó nói rằng biến được liên kết với đối tượng

Sau khi gán, bạn có thể truy cập đối tượng bằng cách sử dụng tên biến trong các phần khác nhau của mã của bạn. Tuy nhiên, bạn không thể truy cập biến ở mọi nơi trong mã

Tên biến và ràng buộc của nó [tên và đối tượng] chỉ tồn tại trong các phần cụ thể của mã của bạn

Phần mã nơi bạn xác định tên/liên kết được gọi là phạm vi từ vựng của các biến

Python lưu trữ các ràng buộc này trong một thứ gọi là không gian tên. Mỗi phạm vi có không gian tên riêng của mình

Và bạn có thể nghĩ rằng một không gian tên là một bảng chứa nhãn và tham chiếu mà nhãn được gắn vào

phạm vi toàn cầu

Phạm vi toàn cầu về cơ bản là phạm vi mô-đun. Phạm vi toàn cầu chỉ bao gồm một tệp mã nguồn Python duy nhất

Python không có phạm vi toàn cầu thực sự trải rộng trên tất cả các mô-đun ngoại trừ phạm vi tích hợp sẵn

Phạm vi tích hợp là một phạm vi đặc biệt cung cấp các đối tượng có sẵn trên toàn cầu như

print[counter]

Code language: Python [python]
2,

print[counter]

Code language: Python [python]
3,

print[counter]

Code language: Python [python]
4,

print[counter]

Code language: Python [python]
5 và

print[counter]

Code language: Python [python]
6

Về cơ bản, các biến tích hợp và toàn cục tồn tại ở mọi nơi bên trong một mô-đun

Trong nội bộ, phạm vi toàn cầu được lồng vào bên trong phạm vi tích hợp

Nếu bạn truy cập một biến từ một phạm vi và Python không tìm thấy nó trong không gian tên của phạm vi đó, thì nó sẽ tìm kiếm trong không gian tên của phạm vi kèm theo

Giả sử rằng bạn có câu lệnh sau trong một mô-đun có tên là

print[counter]

Code language: Python [python]
7

print['Hello']

Code language: Python [python]

Trong mô-đun

print[counter]

Code language: Python [python]
7 này, Python tìm kiếm hàm

print[counter]

Code language: Python [python]
2 trong phạm vi mô-đun [

print[counter]

Code language: Python [python]
7]

Vì Python không tìm thấy định nghĩa của hàm

print[counter]

Code language: Python [python]
2 trong phạm vi mô-đun

print[counter]

Code language: Python [python]
7, nên Python đi đến phạm vi kèm theo, là phạm vi tích hợp sẵn và tìm hàm

print[counter]

Code language: Python [python]
2 ở đó. Trong trường hợp này, nó có thể tìm thấy hàm

print[counter]

Code language: Python [python]
2 trong phạm vi tích hợp

Nếu bạn thay đổi câu lệnh thành câu lệnh sau, bạn sẽ gặp lỗi thời gian chạy

print[counter]

Code language: Python [python]

Trong ví dụ này, Python không tìm thấy

print[counter]

Code language: Python [python]
55 trong phạm vi toàn cầu hiện tại. Do đó, Python tìm kiếm nó trong phạm vi kèm theo, là phạm vi tích hợp sẵn

Tuy nhiên, biến

print[counter]

Code language: Python [python]
55 không tồn tại trong phạm vi tích hợp. Do đó, Python đưa ra một ngoại lệ

print[counter]

Code language: Python [python]
57

print[counter]

Code language: Python [python]
5

phạm vi cục bộ

Khi tạo một hàm, bạn có thể xác định các tham số và biến cho hàm. Ví dụ

print[counter]

Code language: Python [python]
9

Khi bạn thực thi mã, Python mang hai giai đoạn. biên soạn và thực hiện

Khi Python biên dịch tệp, nó sẽ thêm hàm

print[counter]

Code language: Python [python]
58 vào phạm vi toàn cầu. Ngoài ra, Python xác định rằng các biến

print[counter]

Code language: Python [python]
55,

print[counter]

Code language: Python [python]
90 và

print[counter]

Code language: Python [python]
91 bên trong hàm

print[counter]

Code language: Python [python]
92 sẽ là cục bộ của hàm

print[counter]

Code language: Python [python]
92. Và Python sẽ không tạo các biến

print[counter]

Code language: Python [python]
55,

print[counter]

Code language: Python [python]
90 và

print[counter]

Code language: Python [python]
91 cho đến khi hàm được thực thi

Mỗi khi bạn gọi một hàm, Python sẽ tạo một phạm vi mới. Python cũng gán các biến được xác định bên trong hàm cho phạm vi đó. Và phạm vi này được gọi là phạm vi chức năng cục bộ hoặc phạm vi cục bộ

Trong ví dụ của chúng ta, khi bạn gọi hàm

print[counter]

Code language: Python [python]
92

print[counter]

Code language: Python [python]
0

… Python tạo phạm vi cục bộ cho lệnh gọi hàm

print[counter]

Code language: Python [python]
92

Ngoài ra, Python tạo các biến cục bộ

print[counter]

Code language: Python [python]
55,

print[counter]

Code language: Python [python]
90 và

print[counter]

Code language: Python [python]
91 trong không gian tên cục bộ và liên kết chúng với các giá trị

print[counter]

Code language: Python [python]
02,

print[counter]

Code language: Python [python]
03 và

print[counter]

Code language: Python [python]
04

Khi chức năng hoàn thành, Python sẽ xóa phạm vi cục bộ. Và tất cả các biến cục bộ như biến

print[counter]

Code language: Python [python]
55,

print[counter]

Code language: Python [python]
90 và

print[counter]

Code language: Python [python]
91 đều nằm ngoài phạm vi. Nếu bạn cố gắng truy cập các biến này từ bên ngoài hàm

print[counter]

Code language: Python [python]
92, bạn sẽ gặp lỗi

Và nếu bạn gọi lại hàm

print[counter]

Code language: Python [python]
92

print[counter]

Code language: Python [python]
3

… Python tạo một phạm vi cục bộ mới và các biến bao gồm

print[counter]

Code language: Python [python]
55,

print[counter]

Code language: Python [python]
90 và

print[counter]

Code language: Python [python]
91, đồng thời liên kết chúng với các giá trị

print[counter]

Code language: Python [python]
33,

print[counter]

Code language: Python [python]
34 và

print[counter]

Code language: Python [python]
35

tra cứu biến

Trong Python, phạm vi được lồng vào nhau. Ví dụ: phạm vi cục bộ được lồng trong phạm vi mô-đun. Và phạm vi mô-đun được lồng bên trong phạm vi tích hợp

Khi bạn truy cập một đối tượng được liên kết với một biến, Python sẽ cố gắng tìm đối tượng

  • trong phạm vi địa phương hiện tại đầu tiên
  • và đi lên chuỗi phạm vi kèm theo nếu Python không tìm thấy đối tượng trong phạm vi hiện tại

Từ khóa toàn cầu

Khi bạn truy xuất giá trị của một biến toàn cục từ bên trong một hàm, Python sẽ tự động tìm kiếm không gian tên của phạm vi cục bộ và lên chuỗi của tất cả các không gian tên phạm vi kèm theo. Ví dụ

print[counter]

Code language: Python [python]
0

Trong ví dụ này, khi hàm

print[counter]

Code language: Python [python]
36 đang chạy, Python sẽ tìm biến

print[counter]

Code language: Python [python]
55 trong phạm vi cục bộ

Vì Python không tìm thấy nó, nên nó tìm kiếm biến trong phạm vi toàn cầu. Và Python có thể tìm thấy biến

print[counter]

Code language: Python [python]
55 trong phạm vi toàn cầu trong trường hợp này

Tuy nhiên, nếu bạn gán một giá trị cho một biến toàn cục từ bên trong một hàm, thay vào đó Python sẽ đặt biến đó vào không gian tên cục bộ. Ví dụ

print[counter]

Code language: Python [python]
4

đầu ra

print[counter]

Code language: Python [python]
5

Tại thời điểm biên dịch, Python hiểu

print[counter]

Code language: Python [python]
55 là một biến cục bộ

Khi chức năng

print[counter]

Code language: Python [python]
00 đang chạy, Python tìm thấy

print[counter]

Code language: Python [python]
55 trong phạm vi cục bộ. Câu lệnh

print[counter]

Code language: Python [python]
02 bên trong hàm

print[counter]

Code language: Python [python]
00 hiển thị giá trị của

print[counter]

Code language: Python [python]
55, bằng 0

Khi chúng tôi in

print[counter]

Code language: Python [python]
55 sau khi chức năng

print[counter]

Code language: Python [python]
00 hoàn thành, thay vào đó, nó hiển thị 10

Trong ví dụ này, biến

print[counter]

Code language: Python [python]
55 cục bộ che dấu biến

print[counter]

Code language: Python [python]
55 toàn cầu

Nếu bạn muốn truy cập một biến toàn cục từ bên trong một hàm, bạn có thể sử dụng từ khóa

print[counter]

Code language: Python [python]
09. Ví dụ

Phạm vi của các biến là gì?

Nói một cách đơn giản, phạm vi của một biến là thời gian tồn tại của nó trong chương trình . Điều này có nghĩa là phạm vi của một biến là khối mã trong toàn bộ chương trình nơi biến được khai báo, sử dụng và có thể được sửa đổi.

4 loại phạm vi biến là gì?

Phạm vi cục bộ, Phạm vi toàn cầu, Phạm vi kèm theo và Phạm vi tích hợp . Phạm vi địa phương. Phạm vi cục bộ đề cập đến các biến được xác định trong hàm hiện tại.

Có bao nhiêu loại phạm vi biến trong Python?

bốn loại chính của phạm vi biến và là cơ sở cho quy tắc LEGB. LEGB là viết tắt của Cục bộ -> Kèm theo -> Toàn cầu -> Tích hợp.

Hai phạm vi cơ bản của biến trong Python là gì?

Biến toàn cục và biến cục bộ .

Chủ Đề