Người dân địa phương () trong python là gì?

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ào

Phạ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ình

Chú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

  1. Bảng ký hiệu toàn cầu
  2. 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ố 8

Python 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
0

Khi đượ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

Facebook

Twitter

Pinterest

WhatsApp

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]

Sự khác biệt giữa toàn cầu [] địa phương [] và VARS [] là gì?

globals[] luôn trả về từ điển của không gian tên mô-đun. locals[] luôn trả về một từ điển của không gian tên hiện tại. vars[] trả về từ điển của không gian tên hiện tại [nếu được gọi mà không có đối số] hoặc từ điển của đối số

Địa phương và toàn cầu trong Python là gì?

Các hàm globals[],locals[] và reload[] trong Python . Nếu globals[] được gọi từ bên trong một hàm, nó sẽ trả về tất cả các tên có thể được truy cập trên toàn cầu từ hàm đó

Python phát hiện các biến cục bộ như thế nào?

Chúng ta có thể sử dụng hàm co_nlocals[] để trả về số lượng biến cục bộ mà hàm sử dụng để nhận được kết quả mong muốn.

Phạm vi cục bộ và phạm vi toàn cầu trong Python là gì?

Các biến được xác định bên trong thân hàm có phạm vi cục bộ và các biến được xác định bên ngoài có phạm vi toàn cục . Điều này có nghĩa là các biến cục bộ chỉ có thể được truy cập bên trong hàm mà chúng được khai báo, trong khi các biến toàn cục có thể được truy cập trong toàn bộ thân chương trình bởi tất cả các hàm.

Chủ Đề