Hàm
x = 5 # global scope
def myfunc[]:
x = 10 # local scope
print['x inside function is', x]
myfunc[]
# Prints x inside function is 10
print['x outside function is', x]
# Prints x outside function is 5
1 trả về bảng ký hiệu cục bộ dưới dạng từ điển. Nó chứa thông tin về tất cả các biến cục bộMỗi khóa trong từ điển chứa tên của biến. Ví dụ,
# global variables
a = 10
b = 20
def myfunc[]:
# local variables
c = 30
d = 40
print[locals[]]
myfunc[]
# Prints {'c': 30, 'd': 40}
cú pháp
người dân địa phương []
Bảng ký hiệu là gì?
Một bảng ký hiệu được duy trì bởi một trình biên dịch. Nó chứa thông tin cần thiết về chương trình hiện tại
Có hai loại bảng ký hiệu
- Bảng ký hiệu cục bộ – chứa thông tin liên quan đến phạm vi cục bộ của chương trình
- Bảng ký hiệu toàn cầu – chứa thông tin liên quan đến phạm vi toàn cầu của chương trình
Tại sao nó cần thiết?
Python cung cấp cho lập trình viên một số lượng lớn các công cụ để xem xét nội tâm môi trường đang chạy.
x = 5 # global scope
def myfunc[]:
x = 10 # local scope
print['x inside function is', x]
myfunc[]
# Prints x inside function is 10
print['x outside function is', x]
# Prints x outside function is 5
1 chỉ là một trong số đó và nó có thể rất hữu ích trong phiên gỡ lỗi để xem phạm vi cục bộ thực sự chứa những đối tượng nàoPhạm vi Toàn cầu và Địa phương
Một biến được khai báo bên ngoài hàm có Phạm vi toàn cục và có thể được truy cập bên trong hoặc bên ngoài hàm
Tuy nhiên, một biến được khai báo trong một hàm có Phạm vi cục bộ và chỉ có thể được truy cập trong hàm đó
x = 5 # global scope
def myfunc[]:
x = 10 # local scope
print['x inside function is', x]
myfunc[]
# Prints x inside function is 10
print['x outside function is', x]
# Prints x outside function is 5
Ở đây, giá trị của biến toàn cục
x = 5 # global scope
def myfunc[]:
x = 10 # local scope
print['x inside function is', x]
myfunc[]
# Prints x inside function is 10
print['x outside function is', x]
# Prints x outside function is 5
3 không thay đổi. Bởi vì, Python đã tạo một biến cục bộ mới có tên x = 5 # global scope
def myfunc[]:
x = 10 # local scope
print['x inside function is', x]
myfunc[]
# Prints x inside function is 10
print['x outside function is', x]
# Prints x outside function is 5
3; Truy cập các biến cục bộ
Khi phương thức
x = 5 # global scope
def myfunc[]:
x = 10 # local scope
print['x inside function is', x]
myfunc[]
# Prints x inside function is 10
print['x outside function is', x]
# Prints x outside function is 5
1 trả về một từ điển, bạn có thể thực hiện bất kỳ thao tác nào mà từ điển hỗ trợ, như lập chỉ mục, lặp lại, v.v. Bảng ký hiệu là cấu trúc dữ liệu được duy trì bởi trình biên dịch chứa tất cả thông tin cần thiết về chương trìnhChúng bao gồm tên biến, phương thức, lớp, v.v.
Chủ yếu có hai loại bảng ký hiệu
- Bảng ký hiệu toàn cầu
- Bảng ký hiệu cục bộ
Một Bảng ký hiệu chung lưu trữ tất cả thông tin liên quan đến phạm vi toàn cầu của chương trình và được truy cập trong Python bằng phương thức globals[]
Phạm vi toàn cục chứa tất cả các hàm, biến không liên quan đến bất kỳ lớp hoặc hàm nào
Tương tự như vậy, bảng biểu tượng Cục bộ lưu trữ tất cả thông tin liên quan đến phạm vi cục bộ của chương trình và được truy cập bằng Python bằng phương thứclocal[]
Phạm vi cục bộ có thể nằm trong hàm, trong một lớp, v.v.
cú pháp
Xem cú pháp sau
locals[]
Phương thứclocal[] không nhận bất kỳ tham số nào
Phương thức local[] cập nhật và trả về từ điển được liên kết với bảng ký hiệu cục bộ hiện tại
Bảng biểu tượng globals[] vàlocals[] cho môi trường toàn cầu giống nhau
Xem ví dụ sau
# app.py def collab[]: return locals[] def localscollab[]: cross = True return locals[] print['localsNotPresent:', collab[]] print['localsPresent:', localscollab[]]
Trong ví dụ trên, chúng ta đã định nghĩa hai hàm
Trong hàm collab[], chúng tôi không xác định bất kỳ biến nào. Vì vậy, hàm đó không chứa bất kỳ biến cục bộ nào
Trong hàmlocalcollab[] , chúng ta đã xác định một biến cục bộ có tên là cross. Vì vậy, khi hàm trả về locals[], nó sẽ chứa biến chéo
Xem đầu ra sau
➜ pyt python3 app.py localsNotPresent: {} localsPresent: {'cross': True} ➜ pyt
Cập nhật giá trị từ điển của người dân địa phương []
Được rồi, bây giờ hãy thử cập nhật giá trị cục bộ và sau đó đọc giá trị
# app.py def localscollab[]: eleven = 11 print[eleven] locals[]['eleven'] = 15 print[eleven] localscollab[]
Xem đầu ra sau
➜ pyt python3 app.py 11 11 ➜ pyt
Không giống như, từ điển globals[] phản ánh sự thay đổi đối với bảng toàn cầu thực tế, trong khi từ điển locals[] có thể không thay đổi thông tin bên trong bảng local
Lấy tên tệp của chương trình hiện tại
Được rồi, hãy viết mã sẽ trả về tên tệp hiện tại bằng cách sử dụng hàmlocal[]. Tên tệp hiện tại của tôi là ứng dụng. py
# app.py data = locals[] print[data["__file__"]]
Xem đầu ra
________số 8Python locals[] bên trong lớp
Hãy xem kết quả khi hàmlocal[] được gọi bên trong thân lớp
# app.py class Data: eleven = 11 print['\nlocals[] value inside class\n', locals[]]
Xem đầu ra
x = 5 # global scope
def myfunc[]:
x = 10 # local scope
print['x inside function is', x]
myfunc[]
# Prints x inside function is 10
print['x outside function is', x]
# Prints x outside function is 5
0Khi được gọi bên trong thân lớp, các địa phương [] chứa tên mô-đun, tên lớp và các biến lớp
Sự khác biệt giữa người dân địa phương [] và toàn cầu []
Không có sự khác biệt bởi vì chúng tôi đang thực hiện các địa phương [] và toàn cầu [] trong chính mô-đun hiện tại
Chúng ta có thể thấy sự khác biệt khi chúng ta gọi các hàm này bên trong một phương thức hoặc lớp
Trong ngữ cảnh và phạm vi nào chúng tôi đang sử dụng để quyết định giá trị của các chức năng này
Ngoài ra còn có chức năng thứ ba được gọi là vars[]
Nếu locals[] được gọi bên trong một hàm, nó sẽ tạo một từ điển của không gian tên hàm tại thời điểm đó và trả về nó, mọi phép gán tên khác sẽ không được phản ánh trong từ điển được trả về và mọi phép gán cho một từ điển không được phản ánh trong thực tế
Cuối cùng, Hướng dẫn ví dụ về Python local[] đã kết thúc
Bài viết trước Python toàn cục. Cách sử dụng phương thức globals[] trong Python
Bài viết tiếp theo Ví dụ PHP Strlen. Hướng dẫn hàm strlen[]
kranal
https. //appdividend. com/
Krunal Lathiya là một kỹ sư công nghệ thông tin. Theo chuyên môn, anh ấy là một nhà phát triển web có kiến thức về nhiều nền tảng back-end [e. g. , PHP, Nút. js, Python] và các khung JavaScript giao diện người dùng [e. g. , Góc, Phản ứng và Vue]