Computer >> Máy Tính >  >> Lập trình >> Python

Hướng dẫn về các biến cục bộ và toàn cục trong Python

Biến là một khái niệm quan trọng và phổ biến trong lập trình. Biến là vùng chứa để lưu trữ dữ liệu. Các biến có thể lưu trữ nhiều loại dữ liệu, bao gồm tên người dùng, địa chỉ email và các vật phẩm trong kho trò chơi trực tuyến của người dùng.

Khi lập trình bằng Python, bạn sẽ gặp hai loại biến:toàn cục và cục bộ. Trong hướng dẫn này, chúng tôi thảo luận về sự khác biệt giữa hai loại biến này, cách chúng hoạt động và cách bạn có thể sử dụng chúng trong mã của mình.

Biến Python

Trong Python, các biến về cơ bản cho phép bạn gắn nhãn và lưu trữ dữ liệu. Khi xác định một biến, bạn sẽ đặt tên cho nó. Sau đó, bạn có thể sử dụng tên đó sau này trong mã của mình để truy xuất dữ liệu mà nó đại diện. Các biến có thể lưu trữ chuỗi, số, danh sách hoặc bất kỳ kiểu dữ liệu nào khác.

Giả sử chúng tôi đang xây dựng một trò chơi và muốn lưu trữ tên người dùng. Thay vì phải nhập tên trong suốt chương trình của mình, chúng ta có thể sử dụng một biến để lưu trữ nó.

Đây là một biến lưu trữ tên của người dùng cho một trò chơi:

name = "Carlton Hernandez"

Chúng tôi đã khai báo một biến có tên là name và gán cho nó giá trị “Carlton Hernandez”.

Bây giờ chúng ta đã khai báo biến đó, chúng ta có thể thao tác với nó trong mã của mình. Ví dụ:nếu chúng tôi muốn thay đổi tên người dùng của mình, chúng tôi có thể làm như vậy bằng cách sử dụng mã này:

name = "Carlton Hernandez"
name = "Carlton Lewis Hernandez"

Trên dòng đầu tiên của mã, chúng tôi đã gán giá trị “Carlton Hernandez” cho name Biến đổi. Sau đó, chúng tôi đã gán giá trị “Carlton Lewis Hernandez” cho name Biến đổi. Khi bạn gán giá trị mới cho một biến, chương trình sẽ ghi đè giá trị gần đây nhất, thay thế nó bằng giá trị mới.

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Biến toàn cầu trong Python

Trong Python, có hai loại biến chính:cục bộ và toàn cục.

Biến toàn cục là những biến được khai báo bên ngoài một hàm. Các biến toàn cục có phạm vi toàn cục. Điều này có nghĩa là chúng có thể được truy cập trong toàn bộ chương trình, bao gồm cả trong các chức năng. Hãy xem xét sự thể hiện trực quan sau đây về khái niệm này.

Biến cục bộ và toàn cục trong Python

Hướng dẫn về các biến cục bộ và toàn cục trong Python

Một biến toàn cục có thể được truy cập trong suốt một chương trình.

Đây là một ví dụ về một biến toàn cục trong Python:

name = "Carlton Hernandez"

Khi chúng ta khai báo một biến toàn cục, chúng ta có thể sử dụng nó trong toàn bộ mã của mình. Ví dụ:chúng ta có thể tạo một hàm in ra giá trị được giữ bởi biến toàn cục của chúng ta name sử dụng mã sau:

def printName():
	print(name)

printName()

Mã của chúng tôi trả về:

"Carlton Hernandez"

Ở đây, chúng tôi đã khởi tạo một hàm có tên là printName() . Hàm này, khi được gọi, sẽ in ra giá trị của name biến vào bảng điều khiển. Đây là những gì đã xảy ra ở trên khi chúng tôi gọi hàm.

Biến cục bộ trong Python

Mặt khác, các biến cục bộ là các biến được khai báo bên trong một hàm. Các biến này được biết là có local scope . Điều này có nghĩa là chúng chỉ có thể được truy cập trong hàm mà chúng được khai báo. Hãy xem xét lại biểu diễn trực quan này mà chúng tôi đã hiển thị trước đó mô tả khái niệm về các biến trong Python:

Biến cục bộ và toàn cục

Hướng dẫn về các biến cục bộ và toàn cục trong Python

Một biến cục bộ chỉ có thể được truy cập trong một chức năng cụ thể.

Sau đây là ví dụ về chương trình sử dụng biến cục bộ:

def printName():
	name = "Georgia Anderson"
	print(name)

printName()

Mã của chúng tôi trả về:

"Georgia Anderson"

Trong mã của chúng tôi, chúng tôi đã khai báo một hàm có tên là printName() . Trong hàm đó, chúng tôi đã xác định một biến có tên là name . Vì chúng ta đã khai báo biến này trong một hàm nên nó là một biến cục bộ.

Ở cuối mã của chúng tôi, chúng tôi đã gọi hàm của mình bằng cách sử dụng printName() . Đáp lại, chương trình đã thực thi printName() chức năng.

name biến trong ví dụ này là cục bộ của printName() chức năng. Do đó, chúng ta không thể truy cập biến đó bên ngoài hàm của chúng ta. Đây là những gì sẽ xảy ra khi chúng tôi cố gắng in name cục bộ này biến bên ngoài hàm mà nó được khai báo:

def printName():
	name = "Georgia Anderson"
	print(name)

printName()
print(name)

Mã của chúng tôi trả về:

NameError: name 'name' is not defined

Chúng tôi không thể truy cập một biến cục bộ bên ngoài hàm mà chúng tôi đã gán biến đó. Khi chúng tôi cố gắng truy cập một biến cục bộ trong chương trình chính của mình, chương trình sẽ trả về một lỗi.

Sử dụng các biến toàn cục và cục bộ

Chương trình có thể sử dụng cùng một tên biến cho cả biến cục bộ và biến toàn cục. Trong trường hợp như vậy, biến cục bộ sẽ được đọc trong phạm vi cục bộ và biến toàn cục sẽ được đọc trong phạm vi toàn cục.

Dưới đây là ví dụ về chương trình có các biến cục bộ và biến toàn cục có cùng tên:

score = 5

def calculateScore():
	score = 10
	print("Final Score:", score)

calculateScore()
print("Initial Score:", score)

Mã của chúng tôi trả về:

Final Score: 10
Initial Score: 5

Đầu tiên, chúng tôi đã chỉ định biến toàn cục score trong mã của chúng tôi. Sau đó, trong calculateScore() của chúng tôi , chúng tôi đã tạo một biến cục bộ có cùng tên.

Giá trị của score địa phương của chúng tôi trong calculateScore() hàm là 10. Vì vậy, khi chúng ta gọi calculateScore() chức năng, thông báo Final Score: 10 được in ra bảng điều khiển.

Tuy nhiên, bên ngoài calculateScore() của chúng tôi hàm, giá trị của score biến là 5. Điều này là do chúng tôi đặt giá trị của score biến trong phạm vi toàn cục thành 5. Vì vậy, khi chúng tôi in ra Initial Score: , theo sau là giá trị của score biến, chương trình hiển thị giá trị 5.

Gán các biến toàn cục trong một hàm

Trong các phần trên, chúng ta đã biết rằng các biến toàn cục được định nghĩa bên ngoài một hàm (tức là toàn cục) và các biến cục bộ được định nghĩa bên trong một hàm (tức là cục bộ). Tuy nhiên, nếu bạn sử dụng global từ khóa để xác định một biến trong một hàm (tức là cục bộ), rồi chạy hàm đó trong chương trình (toàn cục), biến đó sẽ trở thành một biến toàn cục.

Hãy xem xét ví dụ sau:

def setName():
	global name
	name = "Bianca Peterson"

setName()
print(name)

Mã của chúng tôi trả về:

"Bianca Peterson"

Trong mã của chúng tôi, chúng tôi đã chỉ định giá trị của name biến cục bộ, bên trong setName() chức năng. Tuy nhiên, vì chúng tôi đã sử dụng từ khóa toàn cục trước khi xác định biến này, nên chúng tôi chuẩn bị đặt tên name phạm vi toàn cầu biến. Tuy nhiên, name biến sẽ chỉ trở thành biến toàn cục sau chúng tôi chạy chức năng này trong chương trình.

Sau khi chương trình chạy setName() , bất cứ lúc nào chúng tôi sử dụng name trong chương trình của chúng tôi, như chúng tôi đã làm khi chạy print() thì chương trình sẽ sử dụng giá trị mà chúng ta đã khai báo trong hàm cục bộ. Điều này là do name biến bây giờ là một biến toàn cục.

Hãy nhớ cách trước đó chúng tôi đã nói rằng không thể trực tiếp thay đổi một biến toàn cục bên trong một hàm? Điều đó đúng. Tuy nhiên, bạn có thể sử dụng từ khóa toàn cục để thay đổi một biến toàn cục bên trong một hàm một cách gián tiếp.

Dưới đây là ví dụ về chương trình sử dụng từ khóa toàn cục trong một hàm để thay đổi giá trị của biến toàn cục:

name = "Bianca Peterson"

def setName():
	global name
	name = "Bianca Lucinda Peterson"

setName()
print(name)

Mã của chúng tôi trả về:

"Bianca Lucinda Peterson"

Hãy chia nhỏ mã này. Đầu tiên, chúng tôi đã khai báo một biến có tên là name và gán cho nó giá trị “Bianca Peterson”. Đây là một biến toàn cục. Sau đó, chúng tôi khai báo một hàm có tên là setName() . Khi được gọi, setName() hàm thay đổi giá trị của name Biến đổi.

Sau đó, chúng tôi gọi setName() hàm, đã thay đổi giá trị của name cho “Bianca Lucinda Peterson”. Cuối cùng, chúng tôi in giá trị của name vào bảng điều khiển. Giá trị của biến toàn cục name bây giờ là "Bianca Lucinda Peterson".

Nói chung, từ khóa toàn cầu nên được sử dụng một cách tiết kiệm. Việc sử dụng từ khóa toàn cục quá thường xuyên có thể khiến bạn khó hiểu phạm vi của các biến trong chương trình.

Kết luận

Biến toàn cục là các biến được khai báo bên ngoài một hàm. Biến cục bộ là các biến được khai báo bên trong một hàm.

Mặc dù không thể thay đổi trực tiếp các biến toàn cục trong một hàm, nhưng bạn có thể sử dụng từ khóa toàn cục để tạo một hàm sẽ thay đổi giá trị của một biến toàn cục. Trong trường hợp này, giá trị của biến toàn cục sẽ không thực sự thay đổi cho đến khi bạn chạy hàm đó.

Hướng dẫn này đã thảo luận, có tham chiếu đến các ví dụ, khái niệm cơ bản về các biến cục bộ và toàn cục cũng như cách chúng hoạt động. Bây giờ, bạn đã sẵn sàng để bắt đầu sử dụng các biến cục bộ và toàn cục trong mã Python của mình như một lập trình viên chuyên nghiệp!