Việc sử dụng _ trong python là gì?
Rất có thể bạn đã nhìn thấy biến 2 khi xem qua mã Python. Dưới đây bạn thấy một đoạn mã ví dụ về giao diện của nó Show
Trong bài viết này, tôi muốn chỉ cho bạn cách bạn có thể sử dụng biến này để tạo các mô-đun trong Python Tại sao biến _ _name_ _ được sử dụng?Biến 2 (hai dấu gạch dưới trước và sau) là một biến Python đặc biệt. Nó nhận được giá trị của nó tùy thuộc vào cách chúng tôi thực thi tập lệnh chứaĐôi khi bạn viết một tập lệnh với các chức năng cũng có thể hữu ích trong các tập lệnh khác. Trong Python, bạn có thể nhập tập lệnh đó dưới dạng mô-đun trong tập lệnh khác Nhờ biến đặc biệt này, bạn có thể quyết định xem mình có muốn chạy tập lệnh hay không. Hoặc bạn muốn nhập các chức năng được xác định trong tập lệnh Biến __name__ có thể chứa những giá trị nào?Khi bạn chạy tập lệnh của mình, biến 2 bằng với 5. Khi bạn nhập tập lệnh chứa, nó sẽ chứa tên của tập lệnhChúng ta hãy xem xét hai trường hợp sử dụng này và mô tả quy trình bằng hai hình minh họa Tình huống 1 - Chạy tập lệnhGiả sử chúng tôi đã viết kịch bản 0 như sau ____3____0Nếu bạn chạy nameScript. py, quá trình dưới đây được thực hiện Trước khi tất cả các mã khác được chạy, biến 2 được đặt thành __main__. Sau đó, các câu lệnh def 2 và 3 được chạy. Bởi vì điều kiện đánh giá là đúng, chức năng chính được gọi. Đến lượt mình, điều này gọi myFunction. Điều này in ra giá trị của 5Tình huống 2 - Nhập tập lệnh vào một tập lệnh khácNếu chúng tôi muốn sử dụng lại myFunction trong tập lệnh khác, ví dụ như 5, chúng tôi có thể nhập 0 dưới dạng mô-đunMã trong 5 có thể như sau 0 1Sau đó chúng tôi có hai phạm vi. một trong 8 và phạm vi thứ hai của 9. Trong hình minh họa, bạn sẽ thấy nó khác với trường hợp sử dụng đầu tiên như thế nàoTrong importScript. py biến 2 được đặt thành __main__. Bằng cách nhập nameScript, Python bắt đầu tìm tệp bằng cách thêm 1 vào tên mô-đun. Sau đó, nó chạy mã có trong tệp đã nhậpNhưng lần này nó được đặt thành nameScript. Một lần nữa các câu lệnh def cho main và myFunction được chạy. Nhưng, bây giờ điều kiện đánh giá là sai và chính không được gọi Trong importScript. py chúng tôi gọi myFunction sẽ xuất ra nameScript. NameScript được biết đến với myFunction khi chức năng đó được xác định Nếu bạn in 2 trong bản nhập khẩu, điều này sẽ xuất ra 5. Lý do cho điều này là Python sử dụng giá trị đã biết trong phạm vi của importScriptPhần kết luậnTrong bài viết ngắn này, tôi đã giải thích cách bạn có thể sử dụng biến 2 để viết các mô-đun. Bạn cũng có thể tự chạy các mô-đun này. Điều này có thể được thực hiện bằng cách sử dụng giá trị của các biến này thay đổi như thế nào tùy thuộc vào nơi chúng xuất hiện.QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO Nhà khoa học dữ liệu 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 Mặc dù dấu gạch dưới (_) chỉ được sử dụng cho các biến và hàm trong hầu hết các ngôn ngữ (Tất nhiên, không phải cho tất cả), nhưng nó có ý nghĩa đặc biệt trong Python. Nếu bạn là lập trình viên python, cú pháp như 2, 3 có thể quen thuộcBài đăng này sẽ giải thích về thời điểm và cách sử dụng dấu gạch dưới (_) và giúp bạn hiểu nó Có 5 trường hợp sử dụng dấu gạch dưới trong Python
Hãy xem xét từng trường hợp Khi được sử dụng trong phiên dịchTrình thông dịch python lưu giá trị biểu thức cuối cùng vào biến đặc biệt có tên là '_'. Tính năng này đã được sử dụng trong trình thông dịch CPython tiêu chuẩn trước tiên và bạn cũng có thể sử dụng nó trong các trình thông dịch Python khác >>> 1010 >>> _10 >>> _ * 330 >>> _ * 20600 Đối với Bỏ qua các giá trịDấu gạch dưới cũng được sử dụng để bỏ qua các giá trị cụ thể. Nếu bạn không cần các giá trị cụ thể hoặc các giá trị không được sử dụng, chỉ cần gán giá trị cho dấu gạch dưới _# Bỏ qua một giá trị khi giải nén_x, _, y = (1, 2, 3) # x = 1, y = 3 # Bỏ qua nhiều giá trị. Nó được gọi là "Giải nén mở rộng" chỉ có sẵn trong Python 3. xx, *_, y = (1, 2, 3, 4, 5) # x = 1, y = 5 _# Bỏ qua index_for _ trong phạm vi(10). làm việc gì đó() # Bỏ qua giá trị của vị trí cụ thể cho _, val trong list_of_tuple. làm việc gì đó() Đặt ý nghĩa đặc biệt cho tên biến và hàmDấu gạch dưới có thể được sử dụng nhiều nhất trong 'đặt tên'. PEP8 là hướng dẫn quy ước Python giới thiệu 4 trường hợp đặt tên sau **_single_leading_underscore**Quy ước này được sử dụng để khai báo các biến, hàm, phương thức và lớp riêng tư trong một mô-đun. Bất cứ điều gì với quy ước này được bỏ qua trong 4. Tuy nhiên, tất nhiên, Python không hỗ trợ private thực sự, vì vậy chúng ta không thể ép cái nào đó là private và cũng có thể gọi nó trực tiếp từ các module khác. Vì vậy, đôi khi chúng tôi nói đó là “chỉ số sử dụng nội bộ yếu”_internal_name = 'one_nodule' # biến riêng_internal_version = '1. 0' # biến riêng lớp _Base. # lớp riêng_hidden_factor = 2 # biến riêng 5**single_trailing_underscore_**Quy ước này có thể được sử dụng để tránh xung đột với các từ khóa Python hoặc nội dung tích hợp. Bạn có thể không sử dụng nó thường xuyên tkinter. Toplevel(master, class_='ClassName') # Tránh xung đột với từ khóa 'class' danh sách_ = Danh sách. các đối tượng. get(1) # Tránh xung đột với loại tích hợp 'danh sách' **__double_leading_underscore**Đây là cú pháp chứ không phải quy ước. dấu gạch dưới kép sẽ xáo trộn tên thuộc tính của một lớp để tránh xung đột tên thuộc tính giữa các lớp. (cái gọi là “xáo trộn” có nghĩa là trình biên dịch hoặc trình thông dịch sửa đổi các biến hoặc tên hàm theo một số quy tắc, không sử dụng nguyên trạng) Quy tắc xáo trộn của Python là thêm “_ClassName” vào trước các tên thuộc tính được khai báo bằng double . Nghĩa là, nếu bạn viết phương thức có tên “__method” trong một lớp, thì tên đó sẽ được đọc sai ở dạng “_ClassName__method” hạng A. def _single_method(self). vượt qua 6hạng B(A). def __double_method(tự). # cho manglingpass Do các thuộc tính được đặt tên với dấu gạch dưới kép sẽ bị đọc sai như trên, chúng ta không thể truy cập nó bằng “ClassName. __phương pháp". Đôi khi, một số người sử dụng nó giống như những người dùng riêng tư thực sự sử dụng các tính năng này, nhưng nó không dành cho riêng tư và không được khuyến nghị cho điều đó. Để biết thêm chi tiết, đọc **__double_leading_and_trailing_underscore__**Quy ước này được sử dụng cho các biến hoặc phương thức đặc biệt (được gọi là “phương thức ma thuật”), chẳng hạn như 5, 6. Các phương thức này cung cấp các tính năng cú pháp đặc biệt hoặc thực hiện những điều đặc biệt. Ví dụ: 7 cho biết vị trí của tệp Python, 60 được thực thi khi biểu thức 61 bị loại bỏ. Tất nhiên, người dùng có thể tạo phương thức đặc biệt tùy chỉnh, đây là trường hợp rất hiếm, nhưng thường có thể sửa đổi một số phương thức đặc biệt tích hợp. (e. g. Bạn nên khởi tạo lớp với 5 sẽ được thực thi đầu tiên khi một thể hiện của lớp được tạo. )hạng A. def __init__(bản thân, a). # sử dụng phương thức đặc biệt '__init__' để tự khởi tạo. một = một 9Là các chức năng Quốc tế hóa (i18n)/Bản địa hóa (l10n)Nó chỉ là quy ước, không có bất kỳ chức năng cú pháp nào. Nghĩa là, dấu gạch dưới không có nghĩa là i18n/l10n, và nó chỉ là một quy ước liên kết biến i18n/l10n với dấu gạch dưới có từ quy ước C. Thư viện tích hợp sẵn 63 dành cho i18n/l10n sử dụng quy ước này và Django là khung web Python hỗ trợ i18n/l10n cũng giới thiệu và sử dụng quy ước này# xem tài liệu chính thức. https. // tài liệu. con trăn. org/3/library/gettext. htmlnhập gettext lấy văn bản. bindtextdomain('myapplication','/path/to/my/language/directory')gettext. textdomain('myapplication')_ = gettext. lấy văn bản # 1Để phân tách các chữ số của giá trị số bằng chữTính năng này đã được thêm vào Python 3. 6. Nó được sử dụng để phân tách các chữ số của các số bằng cách sử dụng dấu gạch dưới để dễ đọc dec_base = 1_000_000bin_base = 0b_1111_0000hex_base = 0x_1234_abcd in(dec_base) # 1000000print(bin_base) # 240print(hex_base) # 305441741 Phần kết luậnCho đến nay, chúng tôi đã đề cập đến phần gạch dưới của Python. Trong khi tôi là một lập trình viên Python, tôi không biết một số trong số họ cho đến khi viết bài này. Đặc biệt, i18n/l10n rất mới đối với tôi. Giống như tôi, tôi hy vọng bạn có được một số kiến thức hữu ích về gạch dưới từ bài viết này Tiếp theo, tôi sẽ đề cập đến những điều thú vị hơn về Python. Cảm ơn bạn _Update_Added tính năng mới (PEP 515) đã được thêm vào Python 3. 6
|