Trước khi chúng ta tìm hiểu về từ khóa global
, hãy đảm bảo rằng bạn đã nắm được một số kiến thức cơ bản về Phạm vi biến Python
Truy cập và sửa đổi biến toàn cục Python
Trước tiên, hãy thử truy cập một biến toàn cục từ bên trong hàm,
c = 1 # global variable
def add[]:
print[c]
add[]
# Output: 1
Ở đây, chúng ta có thể thấy rằng chúng ta đã truy cập một biến toàn cục từ bên trong hàm
Tuy nhiên, nếu chúng ta cố gắng sửa đổi biến toàn cục từ bên trong một hàm như
# global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
đầu ra
UnboundLocalError: local variable 'c' referenced before assignment
Điều này là do chúng ta chỉ có thể truy cập biến toàn cục nhưng không thể sửa đổi nó từ bên trong hàm
Giải pháp cho việc này là sử dụng từ khóa global
Ví dụ. Thay đổi biến toàn cầu từ bên trong một hàm bằng cách sử dụng toàn cầu
# global variable
c = 1
def add[]:
# use of global keyword
global c
# increment c by 2
c = c + 2
print[c]
add[]
# Output: 3
Trong ví dụ trên, chúng ta đã định nghĩa c là từ khóa global
bên trong
# global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
0Sau đó, chúng ta đã tăng biến c lên 2, i. e
# global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
1Như chúng ta có thể thấy khi gọi
# global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
0, giá trị của biến toàn cục c được sửa đổi từ 1 thành 3Toàn cầu trong các hàm lồng nhau
Trong Python, chúng ta cũng có thể sử dụng từ khóa global
trong một hàm lồng nhau. Ví dụ,
def outer_function[]:
num = 20
def inner_function[]:
global num
num = 25
print["Before calling inner_function[]: ", num]
inner_function[]
print["After calling inner_function[]: ", num]
outer_function[]
print["Outside both function: ", num]
đầu ra
________số 8_______Trong ví dụ trên, chúng ta đã khai báo một biến toàn cục bên trong hàm lồng nhau
# global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
4Bên trong
# global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
5, num không có tác dụng với từ khóa global
Trước và sau khi gọi
# global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
4, num nhận giá trị của biến cục bộ i. e # global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
8Bên ngoài hàm
# global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
5, num sẽ nhận giá trị được xác định trong hàm # global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
4 i. e UnboundLocalError: local variable 'c' referenced before assignment1
Điều này là do chúng ta đã sử dụng từ khóa global
trong num để tạo một biến toàn cục bên trong hàm
# global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
4 [phạm vi cục bộ]Vì vậy, nếu chúng tôi thực hiện bất kỳ thay đổi nào bên trong hàm
# global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
4, những thay đổi đó sẽ xuất hiện bên ngoài phạm vi cục bộ, tôi. e. # global variable
c = 1
def add[]:
# increment c by 2
c = c + 2
print[c]
add[]
5 Để bắt đầu, bạn sẽ học cách khai báo biến trong Python và thuật ngữ 'phạm vi biến' thực sự có nghĩa là gì
Sau đó, bạn sẽ tìm hiểu sự khác biệt giữa biến cục bộ và biến toàn cục, đồng thời hiểu cách xác định biến toàn cục và cách sử dụng từ khóa
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
0Đây là những gì chúng tôi sẽ đề cập
Biến trong Python là gì và bạn tạo chúng như thế nào?
Bạn có thể nghĩ về các biến như là nơi lưu trữ
Chúng là các thùng lưu trữ để chứa dữ liệu, thông tin và giá trị mà bạn muốn lưu vào bộ nhớ của máy tính. Sau đó, bạn có thể tham khảo hoặc thậm chí thao tác chúng tại một số thời điểm trong suốt vòng đời của chương trình
Một biến có một tên tượng trưng và bạn có thể coi tên đó là nhãn trên bộ chứa lưu trữ đóng vai trò là mã định danh của nó
Tên biến sẽ là một tham chiếu và con trỏ tới dữ liệu được lưu trữ bên trong nó. Vì vậy, không cần phải nhớ chi tiết dữ liệu và thông tin của bạn – bạn chỉ cần tham chiếu tên biến chứa dữ liệu và thông tin đó
Khi đặt tên cho một biến, hãy đảm bảo rằng tên đó mô tả được dữ liệu mà nó chứa. Tên biến cần phải rõ ràng và dễ hiểu cho cả bản thân bạn trong tương lai và các nhà phát triển khác mà bạn có thể đang làm việc cùng
Bây giờ, hãy xem cách thực sự tạo một biến trong Python
Khi khai báo biến trong Python, bạn không cần chỉ định kiểu dữ liệu của chúng
Ví dụ, trong ngôn ngữ lập trình C, bạn phải đề cập rõ ràng loại dữ liệu mà biến sẽ chứa
Vì vậy, nếu bạn muốn lưu trữ tuổi của mình là một số nguyên hoặc kiểu
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
2, đây là điều bạn sẽ phải làm trong C#include
int main[void]
{
int age = 28;
// 'int' is the data type
// 'age' is the name
// 'age' is capable of holding integer values
// positive/negative whole numbers or 0
// '=' is the assignment operator
// '28' is the value
}
Tuy nhiên, đây là cách bạn sẽ viết ở trên bằng Python
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
Tên biến luôn ở phía bên trái và giá trị bạn muốn gán nằm ở phía bên phải sau toán tử gán
Hãy nhớ rằng bạn có thể thay đổi giá trị của các biến trong suốt vòng đời của chương trình
my_age = 28
print[f"My age in 2022 is {my_age}."]
my_age = 29
print[f"My age in 2023 will be {my_age}."]
#output
#My age in 2022 is 28.
#My age in 2023 will be 29.
Bạn giữ nguyên tên biến,
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
3, nhưng chỉ thay đổi giá trị từ age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
4 thành age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
5Phạm vi biến trong Python có nghĩa là gì?
Phạm vi biến đề cập đến các phần và ranh giới của chương trình Python nơi biến có sẵn, có thể truy cập và hiển thị
Có bốn loại phạm vi cho các biến Python, còn được gọi là quy tắc LEGB
- Địa phương,
- kèm theo,
- Toàn cầu,
- Được xây dựng trong
Trong phần còn lại của bài viết này, bạn sẽ tập trung vào việc tìm hiểu về cách tạo biến với phạm vi toàn cục và bạn sẽ hiểu sự khác biệt giữa phạm vi biến cục bộ và biến toàn cầu
Cách tạo biến với phạm vi cục bộ trong Python
Các biến được xác định bên trong phần thân của hàm có phạm vi cục bộ, có nghĩa là chúng chỉ có thể truy cập được trong hàm cụ thể đó. Nói cách khác, chúng là 'cục bộ' đối với chức năng đó
Bạn chỉ có thể truy cập một biến cục bộ bằng cách gọi hàm
def learn_to_code[]:
#create local variable
coding_website = "freeCodeCamp"
print[f"The best place to learn to code is with {coding_website}!"]
#call function
learn_to_code[]
#output
#The best place to learn to code is with freeCodeCamp!
Hãy xem điều gì sẽ xảy ra khi tôi cố gắng truy cập biến đó với phạm vi cục bộ từ bên ngoài nội dung của hàm
def learn_to_code[]:
#create local variable
coding_website = "freeCodeCamp"
print[f"The best place to learn to code is with {coding_website}!"]
#try to print local variable 'coding_website' from outside the function
print[coding_website]
#output
#NameError: name 'coding_website' is not defined
Nó tăng
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
6 vì nó không 'hiển thị' trong phần còn lại của chương trình. Nó chỉ 'hiển thị' trong chức năng mà nó được xác địnhCách tạo biến với phạm vi toàn cầu trong Python
Khi bạn xác định một biến bên ngoài một hàm, chẳng hạn như ở đầu tệp, nó có phạm vi toàn cục và nó được gọi là biến toàn cục
Một biến toàn cục được truy cập từ bất kỳ đâu trong chương trình
Bạn có thể sử dụng nó bên trong thân hàm, cũng như truy cập nó từ bên ngoài hàm
#create a global variable
coding_website = "freeCodeCamp"
def learn_to_code[]:
#access the variable 'coding_website' inside the function
print[f"The best place to learn to code is with {coding_website}!"]
#call the function
learn_to_code[]
#access the variable 'coding_website' from outside the function
print[coding_website]
#output
#The best place to learn to code is with freeCodeCamp!
#freeCodeCamp
Điều gì xảy ra khi có một biến toàn cục và biến cục bộ và cả hai đều có cùng tên?
#global variable
city = "Athens"
def travel_plans[]:
#local variable with the same name as the global variable
city = "London"
print[f"I want to visit {city} next year!"]
#call function - this will output the value of local variable
travel_plans[]
#reference global variable - this will output the value of global variable
print[f"I want to visit {city} next year!"]
#output
#I want to visit London next year!
#I want to visit Athens next year!
Trong ví dụ trên, có thể bạn không mong đợi kết quả cụ thể đó
Có thể bạn nghĩ rằng giá trị của
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
7 sẽ thay đổi khi tôi gán cho nó một giá trị khác bên trong hàmCó thể bạn đã dự đoán rằng khi tôi tham chiếu biến toàn cục với dòng
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
8, kết quả sẽ là age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
9 thay vì my_age = 28
print[f"My age in 2022 is {my_age}."]
my_age = 29
print[f"My age in 2023 will be {my_age}."]
#output
#My age in 2022 is 28.
#My age in 2023 will be 29.
0Tuy nhiên, khi hàm được gọi, nó in ra giá trị của biến cục bộ
Sau đó, khi tôi tham chiếu biến toàn cục bên ngoài hàm, giá trị được gán cho biến toàn cục đã được in
Họ không can thiệp lẫn nhau
Điều đó nói rằng, sử dụng cùng một tên biến cho các biến toàn cầu và cục bộ không được coi là một phương pháp hay nhất. Đảm bảo rằng các biến của bạn không có cùng tên, vì bạn có thể nhận được một số kết quả khó hiểu khi chạy chương trình của mình
Cách sử dụng từ khóa age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
0 trong Python
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
Nếu bạn có một biến toàn cục nhưng muốn thay đổi giá trị của nó bên trong một hàm thì sao?
Hãy xem điều gì sẽ xảy ra khi tôi cố gắng làm điều đó
#global variable
city = "Athens"
def travel_plans[]:
#First, this is like when I tried to access the global variable defined outside the function.
# This works fine on its own, as you saw earlier on.
print[f"I want to visit {city} next year!"]
#However, when I then try to re-assign a different value to the global variable 'city' from inside the function,
#after trying to print it,
#it will throw an error
city = "London"
print[f"I want to visit {city} next year!"]
#call function
travel_plans[]
#output
#UnboundLocalError: local variable 'city' referenced before assignment
Theo mặc định, Python cho rằng bạn muốn sử dụng một biến cục bộ bên trong một hàm
Vì vậy, khi tôi thử in giá trị của biến lần đầu tiên và sau đó gán lại giá trị cho biến mà tôi đang cố truy cập, Python bị nhầm lẫn
Cách để thay đổi giá trị của một biến toàn cục bên trong một hàm là sử dụng từ khóa
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
0#global variable
city = "Athens"
#print value of global variable
print[f"I want to visit {city} next year!"]
def travel_plans[]:
global city
#print initial value of global variable
print[f"I want to visit {city} next year!"]
#assign a different value to global variable from within function
city = "London"
#print new value
print[f"I want to visit {city} next year!"]
#call function
travel_plans[]
#print value of global variable
print[f"I want to visit {city} next year!"]
Sử dụng từ khóa
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
0 trước khi tham chiếu nó trong hàm, vì bạn sẽ gặp lỗi sau. my_age = 28
print[f"My age in 2022 is {my_age}."]
my_age = 29
print[f"My age in 2023 will be {my_age}."]
#output
#My age in 2022 is 28.
#My age in 2023 will be 29.
4Trước đó, bạn đã thấy rằng bạn không thể truy cập các biến được tạo bên trong các hàm vì chúng có phạm vi cục bộ
Từ khóa
age = 28
#'age' is the variable name, or identifier
# '=' is the assignment operator
#'28' is the value assigned to the variable, so '28' is the value of 'age'
0 thay đổi mức độ hiển thị của các biến được khai báo bên trong các hàmdef learn_to_code[]:
global coding_website
coding_website = "freeCodeCamp"
print[f"The best place to learn to code is with {coding_website}!"]
#call function
learn_to_code[]
#access variable from within the function
print[coding_website]
#output
#The best place to learn to code is with freeCodeCamp!
#freeCodeCamp
Phần kết luận
Và bạn có nó rồi đấy. Bây giờ bạn đã biết kiến thức cơ bản về biến toàn cục trong Python và có thể cho biết sự khác biệt giữa biến cục bộ và biến toàn cục
Tôi hy vọng bạn tìm thấy bài viết này hữu ích
Để tìm hiểu thêm về ngôn ngữ lập trình Python, hãy xem Chứng chỉ máy tính khoa học với Python của freeCodeCamp
Bạn sẽ bắt đầu từ những điều cơ bản và học theo cách tương tác và thân thiện với người mới bắt đầu. Cuối cùng, bạn cũng sẽ xây dựng năm dự án để đưa vào thực tế và giúp củng cố những gì bạn đã học
Cảm ơn đã đọc và mã hóa hạnh phúc
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Học một cái gì đó mới mỗi ngày và viết về nó
Nếu bài viết này hữu ích, hãy tweet nó
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu