Biến cục bộ và toàn cục trong python là gì?

Biến có vai trò rất quan trọng trong việc lưu trữ dữ liệu và thông tin. Trước khi thảo luận về Sự khác biệt giữa Biến cục bộ và Biến toàn cục trong Python, hãy xem phạm vi của biến thực sự là gì

Phạm vi biến

Phạm vi của một biến về cơ bản là tuổi thọ của biến đó. Đó là phần mã mà một biến còn sống. Tùy thuộc vào phạm vi của chúng, các biến được chia thành

  • biến toàn cầu
  • Biến cục bộ

Các biến cục bộ chỉ có thể được truy cập trong hàm hoặc mô-đun mà chúng được xác định, trái ngược với các biến toàn cục, có thể được sử dụng trong toàn bộ chương trình

Trong Python, một biến Toàn cầu có thể được xác định bằng Từ khóa toàn cầu, chúng ta cũng có thể thay đổi biến trong ngữ cảnh cục bộ

Có một số điểm khác biệt chính giữa biến cục bộ và biến toàn cầu trong Python

  • `Biến chung được khai báo bên ngoài hàm trong khi biến cục bộ được khai báo bên trong hàm
  • `Biến cục bộ được tạo khi hàm bắt đầu thực thi và bị mất khi hàm kết thúc. Mặt khác, các biến toàn cục được tạo khi chương trình bắt đầu thực thi và bị mất khi chương trình kết thúc.  
  • Trái ngược với biến toàn cục, biến cục bộ không cung cấp chia sẻ dữ liệu
  • Trong khi các biến toàn cục được giữ ở một vị trí cố định do trình biên dịch chọn, các biến cục bộ được giữ trên ngăn xếp
  • Đối với các biến cục bộ, việc truyền tham số là cần thiết, nhưng không cần thiết cho các biến toàn cục
  • Trong Python, các biến Toàn cầu có thể được xác định bằng Từ khóa toàn cầu trong khi các biến cục bộ có thể được xác định trực tiếp

Biến cục bộ

Các biến cục bộ được khai báo bên trong các khối chức năng. Trong Python, các biến cục bộ có thể được khai báo tại bất kỳ vị trí nào trong khối mã

Chỉ các câu lệnh được viết bên trong một hàm mới có thể truy cập các biến cục bộ. Chúng được bảo mật theo cách mà không chức năng hoặc biến nào khác của chương trình đó có thể truy cập chúng

Các biến cục bộ được tạo trong quá trình thực thi hàm và bị hủy sau khi khối kết thúc. Ngay khi quá trình thực thi rời khỏi khối mà một biến cục bộ được khai báo, nó sẽ mất nội dung của nó. Nó xảy ra vì các biến cục bộ luôn được lưu trữ trên ngăn xếp.  

Thí dụ

Hãy xem một ví dụ ngắn về cách định nghĩa các biến cục bộ

def fun():
    a = 10
    print(a)

fun()

đầu ra

Biến toàn cục là loại biến được khai báo bên ngoài mọi chức năng của chương trình. Biến toàn cục, trái ngược với biến cục bộ, có thể được truy cập bởi tất cả các hàm trong chương trình. Biến toàn cục không đáng tin cậy lắm vì bất kỳ hàm nào trong chương trình cũng có thể thay đổi giá trị của nó

Chúng tiếp tục tồn tại cho đến khi toàn bộ chương trình kết thúc. Các biến toàn cầu giữ giá trị của chúng trong suốt quá trình thực hiện chương trình. Vùng bộ nhớ cố định do trình biên dịch xác định nơi chúng được lưu trữ là nguyên nhân

Biến toàn cục rất hữu ích khi nhiều hàm đang sử dụng cùng một bộ dữ liệu. Việc sử dụng nhiều biến toàn cầu có thể là một thách thức vì chúng có thể trải qua những thay đổi không mong muốn về giá trị

Thí dụ

Hãy xem một ví dụ ngắn về cách định nghĩa các biến toàn cục. Ở đây, chúng tôi chỉ đơn giản là truy cập vào biến toàn cầu bằng cách sử dụng từ khóa toàn cầu

a = 10

def fun():
    global a
    print(a)

fun()

đầu ra

Biến cục bộ Vs. Biến toàn cầu

Hãy xem sự khác biệt dạng bảng giữa Biến cục bộ và Biến toàn cục trong Python

Cơ sở so sánh Biến toàn cụcBiến cục bộĐịnh nghĩaBiến toàn cục được khai báo bên ngoài hàmBiến cục bộ được khai báo bên trong hàmTuổi thọBiến toàn cục được tạo khi bắt đầu thực thi chương trình và bị mất khi kết thúc chương trìnhBiến cục bộ được tạo khi hàm bắt đầu thực thi và bị mất khi hàm kết thúcDữ liệu

Các ví dụ để hiểu sự khác biệt giữa biến cục bộ và biến toàn cục

Hãy xem một ví dụ để chúng ta có thể hiểu rõ hơn về Sự khác biệt giữa Biến cục bộ và Biến toàn cục trong Python

Ví dụ về biến cục bộ

Trong ví dụ này, chúng ta đang tạo một biến cục bộ bên trong hàm và cố gắng truy cập biến cục bộ đó bên ngoài hàm

def func():
    a = 10
    print(a)
func()
print(a)

đầu ra

Chúng ta có thể thấy rằng một lỗi bật lên khi truy cập biến bên ngoài hàm, vì phạm vi của biến đó chỉ dành cho hàm đó

10
Traceback (most recent call last):
  File "./prog.py", line 5, in 
NameError: name 'a' is not defined

Ví dụ về biến toàn cầu

Trong ví dụ này, chúng ta đang tạo một biến toàn cục và đang cố gắng truy cập biến toàn cục đó bên trong và bên ngoài hàm

a=10
def func():
    global a
    a+=10
    print("Value inside the function:",a)
func()
print("Value Outside the function:",a)

đầu ra

Chúng ta có thể thấy rằng chúng ta có thể truy cập biến toàn cục cả bên ngoài hàm cũng như bên trong hàm

Value inside the function: 20
Value Outside the function: 20

Ưu điểm và nhược điểm của biến toàn cầu và cục bộ

Chúng ta đã thảo luận về Sự khác biệt giữa Biến cục bộ và Biến toàn cục trong Python, bây giờ hãy thảo luận về ưu điểm và nhược điểm của chúng

Ưu điểm của biến cục bộ

  • Ưu điểm chính của biến cục bộ là dữ liệu không bị thay đổi ngẫu nhiên. Một Biến được khai báo bên trong một hàm sẽ sử dụng biến đó trong khi tránh các tác dụng phụ bất lợi
  • Khi khối chứa biến được thực thi, biến cục bộ chỉ sử dụng bộ nhớ trong một khoảng thời gian ngắn

Ưu điểm của biến toàn cục

  • Khi xử lý nhiều hàm trong chương trình đang thao tác với cùng một dữ liệu, các biến toàn cục rất hữu ích
  • Việc sử dụng một biến toàn cục giúp việc thực hiện các thay đổi cần thực hiện trong toàn bộ chương trình trở nên đơn giản hơn
  • Đối với các biến toàn cục, quyền truy cập có sẵn từ mọi nơi hoặc thông qua bất kỳ chức năng chương trình nào một cách ngẫu nhiên

Nhược điểm của biến cục bộ

  • Phạm vi của biến cục bộ bị hạn chế
  • Biến cục bộ ngăn chia sẻ dữ liệu
  • Vì các biến cục bộ được tạo và hủy với mỗi mục nhập và thoát khỏi khối nên chúng không thể lưu dữ liệu giữa các lần gọi hàm

Nhược điểm của biến toàn cục

  • Việc sử dụng nhiều biến toàn cục có thể dẫn đến việc tạo ra các lỗi lập trình
  • Vấn đề chính mà nó tạo ra là những thay đổi ngẫu nhiên trong dữ liệu phát sinh do nhiều biến toàn cục của chương trình
  • Nó cũng có thể yêu cầu thực hiện tái cấu trúc mã, một quy trình tốn thời gian liên quan đến việc tổ chức lại mã của toàn bộ chương trình

Cái nào hữu ích hơn?

Trong lập trình Python, cả biến cục bộ và biến toàn cục đều rất quan trọng khi viết chương trình. Tuy nhiên, nhiều biến toàn cục có thể chiếm nhiều bộ nhớ. Ngày càng khó phát hiện sự thay đổi không mong muốn trong các biến toàn cầu. Do đó, bạn nên tránh khai báo các biến toàn cục vô nghĩa và sử dụng các biến cục bộ để truyền và thao tác dữ liệu. Nói chung, nên sử dụng các biến cục bộ trong Python

Biến cục bộ trong Python là gì?

Biến cục bộ trong python là những biến được khai báo bên trong hàm . Ngoài ra, chúng được cho là được xác định trong phạm vi cục bộ. Người dùng chỉ có thể truy cập một biến cục bộ bên trong hàm nhưng không bao giờ ở bên ngoài nó.

Biến toàn cục và biến cục bộ là gì?

Biến toàn cục là biến có thể truy cập trên toàn cầu. Biến cục bộ là biến chỉ có thể truy cập được trong phạm vi hiện tại , chẳng hạn như các biến tạm thời được sử dụng trong một định nghĩa hàm duy nhất.

Biến toàn cục trong Python là gì?

Biến toàn cục trong Python thường được khai báo ở đầu chương trình. Nói cách khác, các biến được khai báo bên ngoài hàm được gọi là biến toàn cục. Bạn có thể truy cập các biến toàn cục trong Python cả bên trong và bên ngoài hàm

Biến cục bộ và biến toàn cục được minh họa bằng ví dụ trong Python là gì?

Các biến được xác định bên trong thân hàm có phạm vi cục bộ và các biến được xác định bên ngoài có phạm vi toàn cục . Điều này có nghĩa là các biến cục bộ chỉ có thể được truy cập bên trong hàm mà chúng được khai báo, trong khi các biến toàn cục có thể được truy cập trong toàn bộ thân chương trình bởi tất cả các hàm.