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