Phạm vi mặc định của một biến trong python là gì?
Trong chương 18, “Hàm Python”, chúng ta đã học được rằng một hàm chỉ nên sử dụng các biến đã được xác định trong khối của hàm hoặc được truyền rõ ràng dưới dạng tham số (Quy tắc 1). Quy tắc này hoạt động chặt chẽ với định nghĩa của chúng tôi về một biến trong Python, như một cái tên đề cập đến một số dữ liệu Show Đây là một khái niệm mạnh mẽ, cho phép chúng ta truyền tham số cho hàm và nhận giá trị trả về. Trong Python, một phần dữ liệu có thể được tham chiếu bởi nhiều biến. Các biến tham số là tên mới cho cùng một dữ liệu. Chúng ta có thể khám phá khái niệm này bằng một ví dụ đơn giản Trong mẫu mã này, chúng tôi đã tạo một danh sách duy nhất, nhưng chúng tôi đang liên kết hai tên biến với nó, Điều tương tự cũng xảy ra khi chúng ta sử dụng một tham số trong một hàm. Hãy xem lại hàm Bên ngoài hàm, chuỗi dữ liệu Chúng tôi biết rằng chúng tôi có thể truy cập biến Trên thực tế, chúng ta không thể. Dòng Sau khi lệnh gọi hàm kết thúc, hình ảnh sẽ giống như vậy Cuối cùng, bộ thu gom rác sẽ nhận thấy rằng không có biến nào tham chiếu đến dữ liệu Bởi vì phạm vi nói về các biến, nó ít liên quan đến dữ liệu mà một biến đề cập đến—ngoại trừ việc nói rằng dữ liệu được thu thập rác khi không có biến nào đề cập đến dữ liệu đó trong bất kỳ phạm vi hiện tại nào. Tuy nhiên, vì biến Một trong những tính năng đặc biệt thú vị và mạnh mẽ của các biến cục bộ là chúng tồn tại độc lập với bất kỳ biến nào khác có thể tồn tại cùng tên vào thời điểm đó (đôi khi chúng được cho là “che khuất” các biến khác có cùng tên). Hãy xem xét đoạn mã sau Bạn nghĩ dòng cuối cùng,
Một trong những bài học quan trọng về phạm vi là biết khi nào nó có thể dẫn đến rắc rối. Điều này dễ thấy nhất nếu chúng ta so sánh cách phạm vi hoạt động với một ngôn ngữ khác, trong trường hợp này là C++. Trong C++, các biến được khai báo với kiểu của chúng và các biến được khai báo trong khối câu lệnh if (hoặc bất kỳ khối nào khác) cũng là cục bộ của khối đó. Điều này có nghĩa là chúng vượt ra ngoài phạm vi khi khối kết thúc. Nếu chúng ta thử và sử dụng chúng bên ngoài khối mà chúng được khai báo, sẽ xảy ra lỗi Mặt khác, trong Python, các biến được khai báo trong câu lệnh if, khối vòng lặp for và khối vòng lặp while không phải là biến cục bộ và nằm trong phạm vi bên ngoài khối. Do đó, chúng tôi nói rằng C ++ có phạm vi "cấp khối", trong khi Python chỉ sử dụng phạm vi "cấp chức năng". Các dấu ngoặc trong hình bên dưới minh họa phạm vi cho một số biến trong mã C++ và Python tương đương. Vì C++ sử dụng phạm vi cấp khối và Điều này có vẻ như là một lợi thế cho Python, nhưng trong trường hợp này, chúng tôi nghĩ rằng C ++ có thể đúng. Rốt cuộc, nếu chúng ta cần các biến Mặt khác, trong Python, mã như thế này có thể gây ra sự cố. Nếu biến Có lẽ cách tốt nhất để giải quyết loại vấn đề này là giả sử rằng Python sử dụng phạm vi cấp khối, khai báo các biến trong khối/cấp độ rộng nhất mà chúng sẽ được sử dụng. Mã này sẽ không bị lỗi, bất kể giá trị của Do đó, C ++ và các ngôn ngữ có phạm vi cấp khối khác khuyến khích các biến "tồn tại trong thời gian ngắn", đây là một câu thần chú lập trình tốt. Chỉ xác định các biến khi cần thiết và sử dụng chúng trong thời gian ngắn nhất có thể giúp tạo ra mã rõ ràng hơn, mô-đun hơn và thậm chí hiệu quả hơn (vì các biến tồn tại trong thời gian ngắn cho phép trình thu gom rác dọn sạch nhiều dữ liệu hơn). Theo một cách nào đó, việc phá vỡ Quy tắc 1 của các hàm là một kiểu lạm dụng phạm vi biến tương tự Các lập trình viên mới bắt đầu thường thấy dễ dàng hơn để tránh các quy ước này bằng cách đặt một số lượng lớn các biến gần đầu chương trình, sau đó truy cập và đặt chúng ở các điểm khác nhau trong suốt chương trình. Điều này đôi khi được gọi một cách thông tục là “mã spaghetti”, bởi vì các kết nối khoảng cách xa được tạo giữa các vùng mã khác nhau giống như mì spaghetti. Tuy nhiên, hiếm khi chiến lược này được đền đáp Như đã thảo luận trong chương 25, “Thuật toán và cấu trúc dữ liệu”, các biến cục bộ và các khái niệm tương tự cho phép chúng ta giải quyết các vấn đề phức tạp theo những cách hấp dẫn và tao nhã Phạm vi mặc định của một biến là gì?Theo mặc định, một biến có quyền truy cập mặc định . Công cụ sửa đổi truy cập mặc định có nghĩa là chúng tôi không khai báo rõ ràng công cụ sửa đổi truy cập cho một lớp, trường, phương thức, v.v. Một biến hoặc phương thức được khai báo mà không có bất kỳ công cụ sửa đổi kiểm soát truy cập nào có sẵn cho bất kỳ lớp nào khác trong cùng một gói.
Phạm vi loại của biến trong Python là gì?Trong Python, chúng ta có thể khai báo biến ở 3 phạm vi khác nhau. phạm vi cục bộ, toàn cục và phạm vi không cục bộ . Ở đây, biến sum được tạo bên trong hàm, vì vậy nó chỉ có thể được truy cập bên trong nó (phạm vi cục bộ). Loại biến này gọi là biến cục bộ.
Phạm vi trong Python là gì?Trong Python, khái niệm phạm vi liên quan chặt chẽ với khái niệm không gian tên. Như bạn đã học, phạm vi Python xác định vị trí hiển thị tên trong chương trình của bạn . Phạm vi Python được triển khai dưới dạng từ điển ánh xạ tên cho các đối tượng. Những từ điển này thường được gọi là không gian tên.
Hai phạm vi cơ bản của biến trong Python là gì?Biến toàn cục và biến cục bộ
. |