Quy tắc LEGB trong ví dụ về Python

Chuyển đến nội dung chính

Giới thiệu về Python

Nắm vững kiến ​​thức cơ bản về phân tích dữ liệu với Python chỉ trong bốn giờ. Khóa học trực tuyến này sẽ giới thiệu giao diện Python và khám phá các gói phổ biến

Python trung gian

Nâng cao kỹ năng khoa học dữ liệu của bạn bằng cách tạo trực quan hóa bằng Matplotlib và thao tác với DataFrames bằng gấu trúc

Không gian tên python là một vùng chứa nơi các tên được ánh xạ tới các đối tượng, chúng được sử dụng để tránh nhầm lẫn trong trường hợp các tên giống nhau tồn tại trong các không gian tên khác nhau. Chúng được tạo bởi các mô-đun, hàm, lớp, v.v.  

Phạm vi trong Python là gì

Một phạm vi xác định thứ tự phân cấp trong đó các không gian tên phải được tìm kiếm để có được ánh xạ của tên-đối tượng(biến). Đó là một bối cảnh trong đó các biến tồn tại và từ đó chúng được tham chiếu. Nó xác định khả năng truy cập và thời gian tồn tại của một biến. Hãy để chúng tôi lấy một ví dụ đơn giản như hình dưới đây.  

Python3




inner pi variable
1
inner pi variable
2
inner pi variable
3

inner pi variable
4

inner pi variable
5
inner pi variable
0

inner pi variable
1____51____52
inner pi variable
4

_______01____06____07

inner pi variable
4

inner pi variable
9

inner pi variable
6
inner pi variable
7

đầu ra

inner pi variable
outer pi variable

Chương trình trên cho các kết quả đầu ra khác nhau vì cùng một tên biến pi nằm trong các không gian tên khác nhau, một bên trong hàm print_pi và một bên ở cấp cao hơn. Khi print_pi() được thực thi, ' biến số pi bên trong ' được in vì đó là giá trị pi bên trong không gian tên hàm. Giá trị ‘biến pi bên ngoài‘ được in khi pi được tham chiếu trong không gian tên bên ngoài. Từ ví dụ trên, chúng ta có thể đoán rằng chắc chắn có một quy tắc được tuân theo, để quyết định một biến phải được chọn từ không gian tên nào.   

Độ phân giải phạm vi Quy tắc LEGB Trong Python

Trong Python, quy tắc LEGB được sử dụng để quyết định thứ tự tìm kiếm các không gian tên để phân giải phạm vi. Các phạm vi được liệt kê bên dưới theo thứ bậc (cao nhất đến thấp nhất/hẹp nhất đến rộng nhất)

  • địa phương(L). Được định nghĩa bên trong hàm/lớp
  • kèm theo(E). Được xác định bên trong các hàm kèm theo (Khái niệm hàm lồng nhau)
  • Toàn cầu(G). Được xác định ở mức cao nhất
  • Tích hợp(B). Tên dành riêng trong mô-đun dựng sẵn Python

Quy tắc LEGB trong ví dụ về Python

 

Phạm vi cục bộ trong Python

Phạm vi cục bộ đề cập đến các biến được xác định trong hàm hiện tại. Luôn luôn, một hàm trước tiên sẽ tra cứu một tên biến trong phạm vi cục bộ của nó. Chỉ khi nó không tìm thấy nó ở đó, phạm vi bên ngoài mới được kiểm tra.  

Python3




inner pi variable
02

inner pi variable
1
inner pi variable
2
inner pi variable
05

inner pi variable
5
inner pi variable
07

inner pi variable
1____51____52
inner pi variable
4

_______01____06____07

inner pi variable
4

inner pi variable
86

đầu ra

inner pi variable

Khi chạy chương trình trên, việc thực thi hàm bên trong sẽ in giá trị của biến pi cục bộ (mức ưu tiên cao nhất trong quy tắc LEGB) vì nó được xác định và có sẵn trong phạm vi cục bộ.  

Phạm vi cục bộ và toàn cầu trong Python

Nếu một biến không được xác định trong phạm vi cục bộ, thì nó sẽ được kiểm tra ở phạm vi cao hơn, trong trường hợp này là phạm vi toàn cầu.  

Python3




inner pi variable
87

inner pi variable
1
inner pi variable
2
inner pi variable
05

inner pi variable
5
inner pi variable
07

inner pi variable
1____51____52
inner pi variable
4

_______01____06____07

inner pi variable
4

inner pi variable
86

inner pi variable
6
inner pi variable
7

đầu ra

inner pi variable
0

Do đó, như mong đợi, chương trình sẽ in ra giá trị trong phạm vi cục bộ khi thực thi hàm trong(). Đó là bởi vì nó được định nghĩa bên trong hàm và đó là nơi đầu tiên mà biến được tra cứu. Giá trị pi trong phạm vi toàn cầu được in khi thực thi print(pi) trên dòng 9.   

Phạm vi cục bộ, kèm theo và toàn cầu trong Python

Đối với phạm vi kèm theo, chúng ta cần định nghĩa một hàm bên ngoài bao quanh hàm bên trong, nhận xét biến cục bộ pi của hàm bên trong và tham chiếu đến pi bằng cách sử dụng từ khóa nonlocal.  

Python3




inner pi variable
14

inner pi variable
1
inner pi variable
2
inner pi variable
05

inner pi variable
4

inner pi variable
5
inner pi variable
20

inner pi variable
1____51____52
inner pi variable
3

inner pi variable
1
inner pi variable
5
inner pi variable
07

inner pi variable
28
inner pi variable
29

inner pi variable
28
inner pi variable
31

inner pi variable
28
inner pi variable
6
inner pi variable
7

inner pi variable
1
inner pi variable
86

inner pi variable
4

inner pi variable
38

inner pi variable
6
inner pi variable
7

đầu ra

inner pi variable
8

Khi bên ngoài () được thực thi, bên trong () và do đó, các hàm in được thực thi, in giá trị của biến số pi kèm theo. Câu lệnh trong dòng 10 tìm kiếm biến trong phạm vi cục bộ bên trong, nhưng không tìm thấy nó ở đó. Vì pi được tham chiếu với từ khóa nonlocal, điều đó có nghĩa là pi cần được truy cập từ hàm bên ngoài (i. e phạm vi bên ngoài). Tóm lại, biến pi không được tìm thấy trong phạm vi cục bộ, vì vậy các phạm vi cao hơn sẽ được tra cứu. Nó được tìm thấy trong cả phạm vi kèm theo và toàn cầu. Nhưng theo hệ thống phân cấp LEGB, biến phạm vi kèm theo được xem xét mặc dù chúng ta đã xác định một biến trong phạm vi toàn cầu.  

Phạm vi cục bộ, kèm theo, toàn cầu và tích hợp

Kiểm tra cuối cùng có thể được thực hiện bằng cách nhập pi từ mô-đun toán học và nhận xét về các biến pi toàn cục, kèm theo và cục bộ như hình bên dưới.  

Python3




inner pi variable
41

inner pi variable
42
inner pi variable
43____544
inner pi variable
1

inner pi variable
4

inner pi variable
47

inner pi variable
4

inner pi variable
5
inner pi variable
20

_______01____552

inner pi variable
1
inner pi variable
5
inner pi variable
07

inner pi variable
28
inner pi variable
29

inner pi variable
28
inner pi variable
6
inner pi variable
7

inner pi variable
1
inner pi variable
86

inner pi variable
4

inner pi variable
38

đầu ra

inner pi variable
0

Vì, pi không được xác định trong phạm vi cục bộ, kèm theo hoặc toàn cầu, nên phạm vi tích hợp được tra cứu i. e giá trị pi được nhập từ mô-đun toán học. Vì chương trình có thể tìm thấy giá trị của pi trong phạm vi ngoài cùng, nên sẽ thu được đầu ra sau,

Biến phạm vi trong Python với ví dụ là gì?

Phạm vi biến trong Python là gì? . Các biến này chỉ có thể được truy cập trong khu vực mà chúng được xác định , đây được gọi là phạm vi. Bạn có thể coi đây là một khối nơi bạn có thể truy cập các biến.

Ý nghĩa của L trong quy tắc LEGB đối với độ phân giải phạm vi là gì?

Trong Python, quy tắc LEGB được sử dụng để quyết định thứ tự tìm kiếm các vùng tên để phân giải phạm vi. Các phạm vi được liệt kê bên dưới theo thứ bậc (cao nhất đến thấp nhất/hẹp nhất đến rộng nhất). địa phương(L). Được định nghĩa bên trong hàm/lớp .

Ví dụ về độ phân giải phạm vi trong Python là gì?

Độ phân giải phạm vi trong Python tuân theo quy tắc LEGB. L, Local — Các tên được gán theo bất kỳ cách nào trong một hàm (hoặc lambda) và không được khai báo toàn cầu trong hàm đó. E, Các hàm cục bộ kèm theo - Tên trong phạm vi cục bộ của bất kỳ và tất cả các hàm (hoặc lambdas) tĩnh kèm theo, từ bên trong ra bên ngoài

Hình thức đầy đủ của LEGB là gì?

Các chữ cái trong từ viết tắt LEGB là viết tắt của Phạm vi cục bộ, Bao quanh, Toàn cầu và Tích hợp .