Một biến được tạo bên trong một hàm thuộc phạm vi cục bộ của hàm đó và chỉ có thể được sử dụng bên trong hàm đó
Thí dụ
Một biến được tạo bên trong một hàm có sẵn bên trong hàm đó
def myfunc[].
x = 300
print[x]
myfunc[]
Tự mình thử »Chức năng Bên trong Chức năng
Như đã giải thích trong ví dụ trên, biến
The area of the circle is: 78.55
7 không có sẵn bên ngoài hàm, nhưng nó có sẵn cho bất kỳ hàm nào bên trong hàmThí dụ
Biến cục bộ có thể được truy cập từ một hàm bên trong hàm
def myfunc[].
x = 300
def myinnerfunc[].
print[x]
myinnerfunc[]
myfunc[]
Tự mình thử »Phạm vi toàn cầu
Một biến được tạo trong phần thân chính của mã Python là một biến toàn cục và thuộc về phạm vi toàn cầu
Các biến toàn cầu có sẵn từ bên trong bất kỳ phạm vi nào, toàn cầu và cục bộ
Thí dụ
Một biến được tạo bên ngoài một hàm là biến toàn cục và có thể được sử dụng bởi bất kỳ ai
x = 300
def myfunc[].
in[x]
myfunc[]
in[x]
Tự mình thử »Đặt tên biến
Nếu bạn thao tác với cùng một tên biến bên trong và bên ngoài một hàm, Python sẽ coi chúng là hai biến riêng biệt, một biến có sẵn trong phạm vi toàn cục [bên ngoài hàm] và một biến có sẵn trong phạm vi cục bộ [bên trong hàm]
Thí dụ
Hàm sẽ in
The area of the circle is: 78.55
7 cục bộ, sau đó mã sẽ in The area of the circle is: 78.55
7 toàn cầux = 300
def myfunc[].
x = 200
print[x]
myfunc[]
in[x]
từ khóa toàn cầu
Nếu bạn cần tạo một biến toàn cục, nhưng bị mắc kẹt trong phạm vi cục bộ, bạn có thể sử dụng từ khóa
pi = 3.142 # I could have also used "math" library [math.pi]0
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
Từ khóa
pi = 3.142 # I could have also used "math" library [math.pi]0 biến biến thành toàn cầu
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
Thí dụ
Nếu bạn sử dụng từ khóa
pi = 3.142 # I could have also used "math" library [math.pi]0 thì biến thuộc phạm vi toàn cục
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
def myfunc[].
toàn cầu x
x = 300
myfunc[]
in[x]
Tự mình thử »Ngoài ra, hãy sử dụng từ khóa
pi = 3.142 # I could have also used "math" library [math.pi]0 nếu bạn muốn thay đổi một biến toàn cục bên trong một hàm
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
Thí dụ
Để thay đổi giá trị của một biến toàn cục bên trong một hàm, hãy tham chiếu đến biến đó bằng cách sử dụng từ khóa
pi = 3.142 # I could have also used "math" library [math.pi]0
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
Trong các ngôn ngữ lập trình như C/C++, mỗi khi một biến được khai báo đồng thời, một bộ nhớ sẽ được cấp phát, việc cấp phát này sẽ hoàn toàn phụ thuộc vào loại biến. Do đó, người lập trình phải chỉ định loại biến trong khi tạo biến. Nhưng may mắn là trong Python, bạn không cần phải làm điều đó. Python không có khai báo kiểu biến. Giống như con trỏ trong C, các biến trong Python không lưu trữ giá trị một cách hợp pháp;
chủ đề
Danh sách các chủ đề sẽ được đề cập trong bài viết này được đưa ra dưới đây
- Biến - Giới thiệu nhanh
- Biến toàn cục — Cách loại bỏ
The area of the circle is: 78.55
6 - Biến cục bộ — Cách loại bỏ
The area of the circle is: 78.55
7 - Biến không cục bộ — Khi nào và cách sử dụng chúng
Ngoài ra, trước khi bắt đầu tôi phải nói với bạn một điều. Toàn bộ mã của bài viết này có thể được tìm thấy trong Kho lưu trữ GitHub của tôi được cung cấp bên dưới
Tanu-N-Prabhu/Trăn
Permalink Dismiss GitHub là nơi có hơn 50 triệu nhà phát triển làm việc cùng nhau để lưu trữ và xem xét mã, quản lý…
github. com
Biến
Một biến có nhiều khả năng là một vùng chứa để lưu trữ các giá trị. Bây giờ các giá trị được lưu trữ phụ thuộc vào lập trình viên có sử dụng số nguyên, số float, chuỗi hay v.v.
Biến giống như một hộp trong bộ nhớ của máy tính, nơi bạn có thể lưu trữ một giá trị. — Al Sweigart
Không giống như các ngôn ngữ lập trình khác, trong Python, bạn không cần khai báo bất kỳ biến nào hoặc khởi tạo chúng. Vui lòng đọc cái này
cú pháp
Cú pháp chung để tạo một biến trong Python như hình bên dưới
The area of the circle is: 78.55
8 = The area of the circle is: 78.55
9The area of the circle is: 78.55
8 trong Python có thể ngắn ngọt ngào như pi = 3.142 # I could have also used "math" library [math.pi]1 hoặc có thể rất nhiều thông tin như
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
pi = 3.142 # I could have also used "math" library [math.pi]2
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
Mặc dù nên giữ một tên biến rất mô tả để cải thiện khả năng đọc
Quy tắc
Tất cả đã được thiết lập và hoàn tất, có một số quy tắc mà bạn cần tuân theo khi đặt tên biến
- Tên biến phải bắt đầu bằng một chữ cái hoặc ký tự gạch dưới
- Tên biến không được bắt đầu bằng số
- Tên biến chỉ có thể chứa các ký tự chữ và số và dấu gạch dưới. Ví dụ, bất cứ điều gì như thế này là hợp lệ. A-z, 0–9 và _
- Tên biến phân biệt chữ hoa chữ thường [height, Height và HEIGHT là ba tên biến khác nhau]
Thí dụ
Dưới đây đưa ra là một ví dụ để khởi tạo đúng một giá trị cho một biến
# This is a valid and good way to assign a value to a variable
# Let's assign values to variables to calculate the area of a circlepi = 3.142 # I could have also used "math" library
radius = 5 # Interger value for radius
area_of_circle = 0 # Used to store the value of area of circlearea_of_circle = pi * [radius] ** 2 # Area = [PI * R^2]print["The area of the circle is: ", area_of_circle]
Đầu ra của mã trên được đưa ra dưới đây
The area of the circle is: 78.55
Ví dụ bằng hình ảnh [Hãy đọc lướt nhanh]
Tôi tin rằng chỉ cần nhìn thấy một bức tranh hoặc một hình ảnh, các khái niệm có thể được hiểu nhanh hơn. Dưới đây là biểu diễn bằng hình ảnh của một biến và nó đang được lưu trữ trong bộ nhớ
Ảnh của tác giả — Tanu Nanda Prabhu
Ảnh của tác giả — Tanu Nanda Prabhu
Biến toàn cục
Cùng một định nghĩa cũ
Trong Python hay bất kỳ ngôn ngữ lập trình nào khác, định nghĩa về biến toàn cục vẫn được giữ nguyên, đó là “Biến được khai báo bên ngoài hàm được gọi là hàm toàn cục”. Chúng ta có thể truy cập một biến toàn cục bên trong hoặc bên ngoài hàm
Tạo một biến toàn cầu và truy cập nó
Hãy sử dụng ví dụ tương tự ở trên để hiểu khái niệm truy cập biến bên trong và bên ngoài hàm
pi = 3.142 # I could have also used "math" library [math.pi]
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
Đầu ra cho đoạn mã trên được đưa ra dưới đây
The area of the circle is: 78.55
0Đây là điểm đặc biệt của các biến toàn cầu. Như đã thấy trong ví dụ trên, tôi đã sử dụng hai biến chung là
pi = 3.142 # I could have also used "math" library [math.pi]3 và
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
pi = 3.142 # I could have also used "math" library [math.pi]4 để tính diện tích hình tròn được khai báo bên trong hàm và diện tích chu vi được tính bên ngoài hàm. Đối với cả hai phép tính này, chúng tôi đang sử dụng các biến chung giống nhau
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
Tìm hiểu chi tiết về “UnboundLocalError”
Bây giờ, hãy lấy cùng một ví dụ cũ và thử cập nhật
pi = 3.142 # I could have also used "math" library [math.pi]4 với 2 [nhân với 2]
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
The area of the circle is: 78.55
4Bây giờ tôi biết bạn có thể giống như “không cần thiết” của bước bổ sung này
pi = 3.142 # I could have also used "math" library [math.pi]6 chúng ta có thể trực tiếp làm điều này trong bước đầu tiên bằng cách gán giá trị cho bán kính là 10 i. e.
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
pi = 3.142 # I could have also used "math" library [math.pi]7. Tôi biết nhưng tôi đang cố gắng giới thiệu một khái niệm ở đây. Xin vui lòng chịu với tôi
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
Như đã thấy trong đoạn mã trên, nếu bạn cố cập nhật bán kính và sau đó thực thi đoạn mã này, bạn sẽ ngạc nhiên. Đừng hào hứng và nói “Tôi đã làm được rồi” bởi vì bạn đã không làm như vậy, thay vào đó bạn sẽ bị nhắc nhở bởi một lỗi có tên là
The area of the circle is: 78.55
6. Nhiều khả năng lỗi trông như thế nàyThe area of the circle is: 78.55
8Lý do cho lỗi này là biến
pi = 3.142 # I could have also used "math" library [math.pi]4 là cục bộ và nó không thể được cập nhật như trên. Tại đây, bạn có thể biến nó thành một biến toàn cục. Bây giờ làm thế nào để làm điều đó. Vui lòng xem đoạn mã dưới đây
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
The area of the circle is: 78.55
0Bây giờ khi bạn thực thi mã, nó sẽ thực thi mà không gặp vấn đề gì. Bởi vì bây giờ nó được khai báo rõ ràng là một biến toàn cục. Đầu ra của mã trên được đưa ra dưới đây
The area of the circle is: 78.55
1Thời gian để kiểm tra kiến thức của bạn trong thời gian dài. Hai năm trước, có một câu hỏi được hỏi trong Stack Overflow về
The area of the circle is: 78.55
6. Biểu mẫu hiện đã đóng để trả lời vì đã có rất nhiều câu trả lời. Bạn có thể nhảy vào đó và cố gắng trả lời nó và hiểu nó rõ ràng hơnBiến cục bộ
Cùng một định nghĩa cũ
Trong Python hay bất kỳ ngôn ngữ lập trình nào khác, định nghĩa về biến cục bộ vẫn được giữ nguyên, đó là “Biến được khai báo bên trong hàm được gọi là hàm cục bộ”. Chúng ta có thể truy cập một biến cục bộ bên trong nhưng không thể truy cập bên ngoài chức năng
Tạo một biến cục bộ và truy cập nó
Chúng tôi sử dụng các biến cục bộ bên trong một hàm và không cố truy cập chúng bên ngoài các hàm đó. Do đó tên địa phương. Nhưng phần tốt là chúng ta có thể truy cập các biến đó trong chính các hàm
The area of the circle is: 78.55
3Đầu ra của đoạn mã trên là
The area of the circle is: 78.55
4Đây là điểm đặc biệt của các biến cục bộ. Như đã thấy trong ví dụ trên, tôi đã sử dụng hai biến chung là
pi = 3.142 # I could have also used "math" library [math.pi]3 và
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
pi = 3.142 # I could have also used "math" library [math.pi]4 để tính diện tích hình tròn được khai báo bên trong một hàm. Vì vậy, việc truy cập các biến này sẽ không tạo ra bất kỳ vấn đề nào. Nhưng điều gì sẽ xảy ra nếu chúng ta cố gắng truy cập chúng bên ngoài chức năng. Xem phần tiếp theo bên dưới
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
Tìm hiểu chi tiết về “NameError”
Hãy sử dụng cùng một ví dụ ở trên và truy cập các biến được khai báo bên trong hàm
The area of the circle is: 78.55
0Khi bạn thực thi đoạn mã trên, bạn sẽ được nhắc bởi một
The area of the circle is: 78.55
7. Nhiều khả năng lỗi trông như thế nàyThe area of the circle is: 78.55
1Lý do cho lỗi này là do chúng tôi đang cố truy cập biến cục bộ
pi = 3.142 # I could have also used "math" library [math.pi]3 và
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
pi = 3.142 # I could have also used "math" library [math.pi]4 trong phạm vi toàn cầu trong khi biến cục bộ chỉ hoạt động bên trong
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
The area of the circle is: 78.55
06 hoặc phạm vi cục bộ. Có một cách giải quyết là khai báo pi = 3.142 # I could have also used "math" library [math.pi]3 và
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
pi = 3.142 # I could have also used "math" library [math.pi]4 là toàn cục hoặc khai báo ngoài hàm. Trường hợp bất kỳ chức năng nào có thể truy cập chúng
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
Biến không cục bộ
Cùng một định nghĩa cũ
Trong Python hay bất kỳ ngôn ngữ lập trình nào khác, chúng ta thường sử dụng biến nonlocal bên trong các hàm lồng nhau. Bây giờ, ý nghĩa của hàm lồng nhau là gì?
Hàm lồng nhau
Nói chung, một hàm lồng nhau là một tập hợp các hàm được khai báo bên trong một hàm khác. Đưa ra dưới đây là một ví dụ về một chức năng lồng nhau
The area of the circle is: 78.55
2Khi thực thi đoạn mã này, bạn sẽ nhận được kết quả như sau
The area of the circle is: 78.55
3Tạo một biến không cục bộ và truy cập nó
Bây giờ chúng ta hãy thử cập nhật bán kính bằng 2 [nhân với 2] bên trong
The area of the circle is: 78.55
09. Lý do mà tôi đặc biệt nhấn mạnh để làm điều này bởi vì ngay sau khi bạn viết pi = 3.142 # I could have also used "math" library [math.pi]6 và chạy mã, bạn sẽ được nhắc bởi
radius = 5 # Interger value for radiusdef circle[]:
area_of_circle = pi * [radius] ** 2
print["The area of the circle is: ", area_of_circle]
circumference_of_circle = 2 * pi * radius# Accessing the global variables outside the function
print["The circumference of the circle: ", circumference_of_circle]
# Accessing the global variables inside the function
circle[]
The area of the circle is: 78.55
6 nhìn thấy điều này, bạn sẽ thay đổi nó thành một biến toàn cục bằng cách nói The area of the circle is: 78.55
42 nhưng lần này bạn sẽ gặp một lỗi mới . Và lúc này bạn sẽ bối rối không biết phải làm sao. Có một cách đơn giản để giải quyết vấn đề này “Hãy đọc định nghĩa của một biến không cục bộ”. Bất cứ khi nào có một hàm lồng nhau, bạn cần sử dụng biến The area of the circle is: 78.55
44. Đó là vấn đề đã được giải quyết. Dưới đây là cách để tạo một biến nonlocal và truy cập nóThe area of the circle is: 78.55
4Khi thực thi mã này, bạn sẽ nhận được đầu ra là
The area of the circle is: 78.55
5Sự kết luận
Đến đây là phần cuối của bài viết có tiêu đề “Biến toàn cục, cục bộ và không cục bộ trong Python”. Tôi hy vọng các bạn đã học được một hoặc hai điều bằng cách đọc bài viết này. Thông qua bài viết này, bạn đã học được cách loại bỏ hai lỗi Python quan trọng như
The area of the circle is: 78.55
7 và The area of the circle is: 78.55
6 đã làm phiền bạn suốt những ngày này hay năm khác hoặc bất cứ điều gì. Giờ đây, bạn có thể dễ dàng gỡ lỗi hai lỗi này với nụ cười trên môi mà không tốn một giọt mồ hôi. Nếu bạn có bất kỳ nhận xét hoặc đề xuất nào về bài viết này, thì phần bình luận là của bạn. Hãy theo dõi để biết thêm thông tin cập nhật, cho đến lúc đó tạm biệt. Giữ an toàn và mã hóa vui vẻ và hẹn gặp lại bạn lần sau