Hướng dẫn built-in scope in python - phạm vi tích hợp trong python

Việc khai báo và sử dụng biến là một trong những vấn đề rất cơ bản nhưng hay gặp phải lỗi trong quá trình phát triển. Hôm nay chúng ta sẽ cùng nhau tìm hiểu về phạm vi của biến trong Python.

Python có 3 phạm vi (scope) của biến:

  • Local scope
  • Global scope
  • Enclosing scope

Local scope (Biến cục bộ)

Một biến được khai báo bên trong một hàm (xem bài hàm trong Python) thì phạm vi của biến là local scope. Biến được sử dụng trong nội tại hàm, và tồn tài khi hàm thực thi.

def myfunc():
    x = 100      # local scope x
    print(x)

myfunc()        # prints 100

Biến cục bộ được giải phóng khỏi bộ nhớ khi kết thúc lời gọi hàm.

Global scope (Biến toàn cục)

Biến toàn cục được khai báo bên ngoài tất cả các hàm, trong file code. Phạm vi của biến toàn cục là trong tòa bộ file code.

x = 100          # global scope x

def myfunc():
    print(x)    # giá trị của x là 100 bên trong hàm myfunc

myfunc()
print(x)        # giá trị của x là 100 bên ngoài hàm myfunc

Nếu trong hàm chúng ta khai báo biến cục bộ trùng tên với biến toàn cục thì hệ thống sẽ sử dụng biến cụ bộ.

x = 100          # global scope x

def myfunc():
    x= 200      # local scope x
    print(x)    # giá trị của x là 200 bên trong hàm myfunc

myfunc()
print(x)        # giá trị của x là 100 bên ngoài hàm myfunc

Khi muốn thay đổi giá trị của biến toàn cục bên trong lời gọi hàm, chúng ta sử dụng từ khóa global trước biến:

x = 100          # global scope x

def myfunc():
    global x
    x = 200
    print(x)    # giá trị của x là 200 bên trong hàm myfunc

myfunc()
print(x)        # giá trị của x là 200 bên ngoài hàm myfunc

Enclosing Scope

Enclosing function là hàm mà bên trong nó chứa một hàm khác (nested functions).

Khi chúng ta khai báo một biến bên trong Enclosing function thì biến này không có hiêu lực bên trong hàm nested functions.

# enclosing function
def f1():
    x = 42
    # nested function
    def f2():
        x = 0
        print(x)    # x có giá trị 0
    f2()
    print(x)        # x vẫn có giá trị 42
    
f1()

Biến x không thay đổi giá trị sau lời gọi hàm f2(), vì bản chất hệ thống sẽ khởi tạo bộ nhớ mới cho biến x bên trong hàm f2(). Muốn thay đội giá trị trong quá trình xử lý logic của hàm 2 chúng ta sử dụng từ khóa nonlocal trước biến x:

# enclosing function
def f1():
    x = 42
    # nested function
    def f2():
        nonlocal x
        x = 0
        print(x)    # x is now 0
    f2()
    print(x)        # x có giá trị mới là 0
    
f1()

Biến x lúc này đã ánh xạ đến biến x bên ngoài hàm f2(), và khi chúng ta thay đổi giá trị của x thì giá trị của x bên ngoài hàm f2() cũng được cập nhật.

Scoping Rule – LEGB Rule

Khi một biến được tham chiếu ( được sử dụng trong một logic nào đó) Python sẽ tuân theo LEGB rule với 4 phạm vi của biến theo mức độ:

L phạm vi là biến cụ bộ – Local Scope.phạm vi là biến cụ bộ – Local Scope.

E tiếp theo là biến cục bộ trong các enclosing function and lambdas – ( Enclosing Scope). tiếp theo là biến cục bộ trong các enclosing function and lambdas – ( Enclosing Scope).

G Tiếp theo là biến toàn cục – Global scope.Tiếp theo là biến toàn cục – Global scope.

B Cuối cùng là biến có sẵn trong Python – Built-in. Cuối cùng là biến có sẵn trong Python – Built-in.

Hướng dẫn built-in scope in python - phạm vi tích hợp trong python
Scoping Rule – LEGB Rule

Khi một biến được tham chiếu ( được sử dụng trong một logic nào đó) Python sẽ tuân theo LEGB rule với 4 phạm vi của biến theo mức độ:

L phạm vi là biến cụ bộ – Local Scope.

Việc khai báo và sử dụng biến là một trong những vấn đề rất cơ bản nhưng hay gặp phải lỗi trong quá trình phát triển. Hôm nay chúng ta sẽ cùng nhau tìm hiểu về phạm vi của biến trong Python.

Nội dung chính ShowShow

  • Local scope (Biến cục bộ)
  • Global scope (Biến toàn cục)
  • Enclosing Scope
  • Scoping Rule – LEGB Rule
  • Kết luận
  • Local scope (Biến cục bộ)
  • Global scope (Biến toàn cục)
  • Enclosing Scope
  • Scoping Rule – LEGB Rule
  • Kết luận

Python có 3 phạm vi (scope) của biến:

  • Local scope
  • Global scope
  • Enclosing scope

Local scope (Biến cục bộ)

Global scope (Biến toàn cục)

def myfunc():
    x = 100      # local scope x
    print(x)

myfunc()        # prints 100

Biến cục bộ được giải phóng khỏi bộ nhớ khi kết thúc lời gọi hàm.

Global scope (Biến toàn cục)

Biến toàn cục được khai báo bên ngoài tất cả các hàm, trong file code. Phạm vi của biến toàn cục là trong tòa bộ file code.

x = 100          # global scope x

def myfunc():
    print(x)    # giá trị của x là 100 bên trong hàm myfunc

myfunc()
print(x)        # giá trị của x là 100 bên ngoài hàm myfunc

Nếu trong hàm chúng ta khai báo biến cục bộ trùng tên với biến toàn cục thì hệ thống sẽ sử dụng biến cụ bộ.

x = 100          # global scope x

def myfunc():
    x= 200      # local scope x
    print(x)    # giá trị của x là 200 bên trong hàm myfunc

myfunc()
print(x)        # giá trị của x là 100 bên ngoài hàm myfunc

Khi muốn thay đổi giá trị của biến toàn cục bên trong lời gọi hàm, chúng ta sử dụng từ khóa global trước biến:

x = 100          # global scope x

def myfunc():
    global x
    x = 200
    print(x)    # giá trị của x là 200 bên trong hàm myfunc

myfunc()
print(x)        # giá trị của x là 200 bên ngoài hàm myfunc

Enclosing Scope

Enclosing function là hàm mà bên trong nó chứa một hàm khác (nested functions).

Khi chúng ta khai báo một biến bên trong Enclosing function thì biến này không có hiêu lực bên trong hàm nested functions.

# enclosing function
def f1():
    x = 42
    # nested function
    def f2():
        x = 0
        print(x)    # x có giá trị 0
    f2()
    print(x)        # x vẫn có giá trị 42
    
f1()

Biến x không thay đổi giá trị sau lời gọi hàm f2(), vì bản chất hệ thống sẽ khởi tạo bộ nhớ mới cho biến x bên trong hàm f2(). Muốn thay đội giá trị trong quá trình xử lý logic của hàm 2 chúng ta sử dụng từ khóa nonlocal trước biến x:

# enclosing function
def f1():
    x = 42
    # nested function
    def f2():
        nonlocal x
        x = 0
        print(x)    # x is now 0
    f2()
    print(x)        # x có giá trị mới là 0
    
f1()

Biến x lúc này đã ánh xạ đến biến x bên ngoài hàm f2(), và khi chúng ta thay đổi giá trị của x thì giá trị của x bên ngoài hàm f2() cũng được cập nhật.

Scoping Rule – LEGB Rule

Khi một biến được tham chiếu ( được sử dụng trong một logic nào đó) Python sẽ tuân theo LEGB rule với 4 phạm vi của biến theo mức độ:

L phạm vi là biến cụ bộ – Local Scope.phạm vi là biến cụ bộ – Local Scope.

E tiếp theo là biến cục bộ trong các enclosing function and lambdas – ( Enclosing Scope). tiếp theo là biến cục bộ trong các enclosing function and lambdas – ( Enclosing Scope).

G Tiếp theo là biến toàn cục – Global scope.Tiếp theo là biến toàn cục – Global scope.

B Cuối cùng là biến có sẵn trong Python – Built-in. Cuối cùng là biến có sẵn trong Python – Built-in.

Scoping Rule – LEGB Rule

Khi một biến được tham chiếu ( được sử dụng trong một logic nào đó) Python sẽ tuân theo LEGB rule với 4 phạm vi của biến theo mức độ:

L phạm vi là biến cụ bộ – Local Scope.

E tiếp theo là biến cục bộ trong các enclosing function and lambdas – ( Enclosing Scope).

G Tiếp theo là biến toàn cục – Global scope.

  • B Cuối cùng là biến có sẵn trong Python – Built-in.
  • Kết luận
  • Hiểu rõ về phạm vi của biến giúp chúng ta xây dựng chương trình tối ưu và tránh gặp phải những lỗi cơ bản.

Việc khai báo và sử dụng biến là một trong những vấn đề rất cơ bản nhưng hay gặp phải lỗi trong quá trình phát triển. Hôm nay chúng ta sẽ cùng nhau tìm hiểu về phạm vi của biến trong Python.

Python có 3 phạm vi (scope) của biến:

def myfunc():
    x = 100      # local scope x
    print(x)

myfunc()        # prints 100

Biến cục bộ được giải phóng khỏi bộ nhớ khi kết thúc lời gọi hàm.

Global scope (Biến toàn cục)

Biến toàn cục được khai báo bên ngoài tất cả các hàm, trong file code. Phạm vi của biến toàn cục là trong tòa bộ file code.

x = 100          # global scope x

def myfunc():
    print(x)    # giá trị của x là 100 bên trong hàm myfunc

myfunc()
print(x)        # giá trị của x là 100 bên ngoài hàm myfunc

Nếu trong hàm chúng ta khai báo biến cục bộ trùng tên với biến toàn cục thì hệ thống sẽ sử dụng biến cụ bộ.

x = 100          # global scope x

def myfunc():
    x= 200      # local scope x
    print(x)    # giá trị của x là 200 bên trong hàm myfunc

myfunc()
print(x)        # giá trị của x là 100 bên ngoài hàm myfunc

Khi muốn thay đổi giá trị của biến toàn cục bên trong lời gọi hàm, chúng ta sử dụng từ khóa global trước biến:

x = 100          # global scope x

def myfunc():
    global x
    x = 200
    print(x)    # giá trị của x là 200 bên trong hàm myfunc

myfunc()
print(x)        # giá trị của x là 200 bên ngoài hàm myfunc

Enclosing Scope

Enclosing function là hàm mà bên trong nó chứa một hàm khác (nested functions).

Khi chúng ta khai báo một biến bên trong Enclosing function thì biến này không có hiêu lực bên trong hàm nested functions.

# enclosing function
def f1():
    x = 42
    # nested function
    def f2():
        x = 0
        print(x)    # x có giá trị 0
    f2()
    print(x)        # x vẫn có giá trị 42
    
f1()

Biến x không thay đổi giá trị sau lời gọi hàm f2(), vì bản chất hệ thống sẽ khởi tạo bộ nhớ mới cho biến x bên trong hàm f2(). Muốn thay đội giá trị trong quá trình xử lý logic của hàm 2 chúng ta sử dụng từ khóa nonlocal trước biến x:

# enclosing function
def f1():
    x = 42
    # nested function
    def f2():
        nonlocal x
        x = 0
        print(x)    # x is now 0
    f2()
    print(x)        # x có giá trị mới là 0
    
f1()

Biến x lúc này đã ánh xạ đến biến x bên ngoài hàm f2(), và khi chúng ta thay đổi giá trị của x thì giá trị của x bên ngoài hàm f2() cũng được cập nhật.

Scoping Rule – LEGB Rule

Khi một biến được tham chiếu ( được sử dụng trong một logic nào đó) Python sẽ tuân theo LEGB rule với 4 phạm vi của biến theo mức độ:

L phạm vi là biến cụ bộ – Local Scope.phạm vi là biến cụ bộ – Local Scope.

E tiếp theo là biến cục bộ trong các enclosing function and lambdas – ( Enclosing Scope). tiếp theo là biến cục bộ trong các enclosing function and lambdas – ( Enclosing Scope).

G Tiếp theo là biến toàn cục – Global scope.Tiếp theo là biến toàn cục – Global scope.

B Cuối cùng là biến có sẵn trong Python – Built-in. Cuối cùng là biến có sẵn trong Python – Built-in.

Scoping Rule – LEGB Rule

Khi một biến được tham chiếu ( được sử dụng trong một logic nào đó) Python sẽ tuân theo LEGB rule với 4 phạm vi của biến theo mức độ:

L phạm vi là biến cụ bộ – Local Scope.

E tiếp theo là biến cục bộ trong các enclosing function and lambdas – ( Enclosing Scope).

G Tiếp theo là biến toàn cục – Global scope.

B Cuối cùng là biến có sẵn trong Python – Built-in.

Kết luận

Hiểu rõ về phạm vi của biến giúp chúng ta xây dựng chương trình tối ưu và tránh gặp phải những lỗi cơ bản.

Việc khai báo và sử dụng biến là một trong những vấn đề rất cơ bản nhưng hay gặp phải lỗi trong quá trình phát triển. Hôm nay chúng ta sẽ cùng nhau tìm hiểu về phạm vi của biến trong Python.

Python có 3 phạm vi (scope) của biến:

Local scope

Python yêu cầu chứng chỉ tự ký

Nhập yêu cầu dữ liệu = {foo: Bar} url = https://foo.com/bar r = requests.post (url, data = data) Nếu URL sử dụng chứng chỉ tự ký, điều này không thành công với các yêu cầu. [Errno 1] ...

Cách in danh sách trong danh sách Python

Tôi có một danh sách các danh sách: a = [[1, 3, 4], [2, 5, 7]] Tôi muốn đầu ra ở định dạng sau: 1 3 4 2 5 Tôi đã thử nó theo cách sau, nhưng Các đầu ra không theo cách mong muốn: vì tôi trong A: ...

Cách đọc tên cột từ Excel trong Python

Xin chào, Độc giả! Trong bài viết này, chúng tôi sẽ tập trung vào các cách khác nhau để in tên cột bằng Python.so, chúng tôi hãy bắt đầu! Đầu tiên, bạn tìm thấy các cột ở Python ở đâu? Chúng tôi thường bắt gặp các câu hỏi ...

Danh sách thuộc tính lớp của lớp python hướng dẫn

Mỗi lớp thường chứa hai loại thành viênn quan trọng: thong Trong Python, ThànH Phần Chứa Dữ Liệu ĐC ...

Danh sách có thể được nhập vào Python không?

Đôi khi trong khi mã hóa trong Python, bạn sẽ cần lấy một danh sách làm đầu vào. Mặc dù điều này nghe có vẻ đơn giản lúc đầu, nhưng nó thường được coi là một nhiệm vụ phức tạp để hoàn thành cho người mới bắt đầu. Bài viết này ...

Các bộ phận của A For Loop Python

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Đối với các vòng lặp trong Python (xác định ...

Hướng dẫn dùng vòng có nghĩa là python

Nội phân chính2- tổng quan các vengr lặp trong python 2- vengr lặp trong khi 3- vengr lặp cho với phạm vi 4- sử dụng cho và mảng 5-

Chức năng danh sách hướng dẫn python

1. GIớI THIệU Về Liệt kê Trong Pythoncấu Trúc dữ liệu Trình tự trong, mỗi phần ...

Hướng dẫn python yaml thêm khóa

Tôi có tệp yaml sau. Tôi cần cập nhật tệp yaml với một cặp giá trị khóa mới bằng python. Tôi đang thực hiện như sau, nhưng nó cho tôi lỗi: pod = ...

Làm thế nào để các chủ đề hoạt động trong Python?

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Xây dựng trong Pythonpython Threading ...

Giao tiếp arduino với python

Hướng dẫn đồng hàngbảo hànnh

Hướng dẫn dùng python python

Miêu tảphương thức Ống () tạo một. Trả về một cặp (r, w) bạn thể sử dụng họ ôn

Cách in hình vuông trong Python

Trong toán học, một hình vuông là kết quả của việc nhân số một số. Sự nhân lên đó được thực hiện chỉ một lần, như vậy: n x n. Điều đó làm cho bình phương giống như nâng con số lên ...

Hướng dẫn mẫu ngẫu nhiên trong python

26. Random Một Số Trong Pythonrandom Và Bí mật Mô -đun,

Hướng dẫn trong python 3

Python hiện là một trong nh ững ngôn ngữ lập trình phổ biến nhất thế giới. Python ĐặC Biệt Phổ Biến Trong Cộng Đêm Nghiênn Cứu. Tuy Vậy Python Không Bị ...

Hướng dẫn json thêm python giá trị khóa

Điều này nghe có vẻ như là một câu hỏi trung bình, nhưng tôi đã không tìm thấy một câu trả lời tốt cho những gì tôi đang cố gắng làm.Take D.Json: {sda: {info: {mô tả: bot quảng cáo, khối mời ...

Hướng dẫn dùng pandas.concat python

Trong chuỗi các Bài Học tiếp Theo sẽ ôn Xuất phát từ yêu cầu thực tế là chún ta

Cách thực hiện bài kiểm tra Mann-Whitney U ở Python

scipy.stats.mannwhitneyu (x, y, use_continuity = true, thay thế = hai mặt, trục = 0, phương thức = tự động, *, nan_policy = tuyên truyền trên ...

Chuyển đổi DateTime thành Chuỗi Python

Phương thức strftime () trả về một chuỗi đại diện cho ngày và thời gian bằng cách sử dụng đối tượng ngày, giờ hoặc datetime. Ví dụ 1: DateTime thành chuỗi bằng cách sử dụng strftime () Chương trình bên dưới chuyển đổi đối tượng DateTime ...

Làm thế nào để bạn tìm thấy trung bình trong Python theo cách thủ công?

Xem các bài viết thảo luận về bài viết bài viết bài viết Điều này

Trong nnlt python cú ph tòa

Lập trình python1. Tìm hiểu về kiểu tệp, tệp (tập tin)

Hướng dẫn hashmap nhận được python

Mục lục NHÓM Phát triển của chún tôm vừa ra mắt trang web Langlearning.net học tiếng ah

Hướng dẫn python setter without getter

class My_Class: def __init__(self): self._x = 0 @property def x(self): return self._x @x.setter def x(self, x): self._x = x If I delete the following ...

Hướng dẫn syntax trong python

Python là ngôn ngữ khá giống với Perl, C và Java. Tuy nhiên có một vài điểm khác biệt rõ rệt với các ngôn ngữ trên.Nội dung của bài1 Cách hoạt động của ...

Hướng dẫn unique python

Mô-đun numpy của Python cung cấp một hàm để tìm các phần tử duy nhất trong một mảng numpy. Hàm numpy.unique () tìm các phần tử duy nhất của một mảng và trả ...

Python setup.py install invalid syntax

I am new to python and am trying to do web scraping, but I keep getting a syntax error every time I try to install a library. I have tried installing both mechanize and mechanoid. I change the ...

Hướng dẫn encoding trong python

Làm cách nào để in văn bản được mã hóa UTF-8 vào bảng điều khiển bằng Python

Print comma separated list python

Pass sep=, as an argument to print()You are nearly there with the print statement. There is no need for a loop, print has a sep parameter as well as end.>>> print(*range(5), sep=, ) 0, ...

Hướng dẫn python flask tutorial

Loạt bài viết này sẽ hướng dẫn lập bạn cách tạo ra một ứng dụng Web đơn giản với Python và Flask framework.Để giúp cho bạn dễ theo dõi, sau đây là danh ...

What type of programming language is python?

Notice: While JavaScript is not essential for this website, your interaction with the content will be limited. Please turn JavaScript on for the full experience. What is Python? Executive ...