Thay đổi biến toàn cục Python

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()
0

Sau đó, 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()
1

Như 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 3


Toà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()
4

Bê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()
8

Bê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 assignment
1

Đ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'
5

Phạ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 định

Cá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àm

Có 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.
0

Tuy 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

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.
4

Trướ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àm

def 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


Thay đổi biến toàn cục Python
Dionysia Lemonaki

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

Bạn có thể thay đổi biến toàn cục trong Python không?

Trong Python, từ khóa toàn cục cho phép chúng ta sửa đổi biến bên ngoài phạm vi hiện tại . Nó được sử dụng để tạo một biến toàn cục và thay đổi biến đó trong ngữ cảnh cục bộ.

Có thể thay đổi biến toàn cục không?

Biến toàn cục là biến được định nghĩa bên ngoài tất cả các hàm. Các biến toàn cục có thể được truy cập và sửa đổi bởi bất kỳ hàm nào trong C .

Bạn có thể thay đổi biến toàn cục trong lớp Python không?

Bạn có thể truy cập các biến toàn cục từ bất kỳ đâu trong chương trình. Tuy nhiên, bạn chỉ có thể truy cập các biến cục bộ từ hàm. Ngoài ra, nếu bạn cần thay đổi một biến toàn cục từ một hàm, bạn cần khai báo rằng biến đó là toàn cục . Bạn có thể làm điều này bằng cách sử dụng từ khóa "toàn cầu".