__name__ == __main__ con trăn
Vì không có hàm main() trong Python, khi lệnh chạy chương trình python được đưa cho thông dịch trình, mã ở mức nhận biên 0 sẽ được thực thi. Tuy nhiên, trước khi làm điều đó, nó sẽ xác định một vài biến đặc biệt. __name__ là một trong những biến đặc biệt như vậy. Nếu nguồn gốc được thực hiện dưới dạng chương trình chính, thông tin dịch trình đặt biến __name__ có giá trị “__main__”. Nếu tệp này đang được nhập từ một mô-đun khác, __name__ sẽ được đặt thành tên của mô-đun Show
__name__ là một biến được tích hợp sẵn để đánh giá tên của mô-đun hiện tại. Vì vậy, nó có thể được sử dụng để kiểm tra xem tập lệnh hiện đang được chạy riêng hay được nhập vào một nơi khác bằng cách kết hợp nó với lệnh nếu như được hiển thị bên dưới Vui lòng xem xét hai tệp riêng biệt File1 và File2 # Tệp1. py
Tệp2. py
đầu ra
Như đã thấy ở trên, khi File1. py được chạy trực tiếp, thông dịch trình đặt biến __name__ là __main__ và khi nó được chạy qua File2. py by way import, variable __name__ was set to name of the python command file, tức là File1. Do đó, có thể nói rằng nếu __name__ == “__main__” là một phần của chương trình đang chạy khi tập lệnh được chạy từ dòng lệnh bằng cách sử dụng lệnh như python File1. py Cài đặt ứng dụng cafedev để dễ dàng cập nhật tin tức và học lập trình mọi lúc mọi nơi tại đây Nguồn và Tài liệu tiếng anh tham khảo
Tài liệu từ cafedev
Nếu thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa Nhiều ngôn ngữ lập trình có một chức năng đặc biệt được thực thi tự động khi hệ thống điều hành bắt đầu chạy một chương trình. Hàm này thường được gọi là 4và phải có kiểu trả về cụ thể và các đối số theo tiêu chuẩn ngôn ngữ. Mặt khác, trình thông dịch Python thực thi các lệnh bắt đầu tập tin từ tệp đầu và không có chức năng cụ thể nào mà Python tự động thực thiTuy nhiên, có một điểm bắt đầu xác định để thực hiện một chương trình rất hữu ích để hiểu cách thức hoạt động của một chương trình. Trình lập trình viên Python đã đưa ra một số quy ước để xác định điểm bắt đầu này Đến cuối bài viết này, bạn sẽ hiểu
Tải xuống miễn phí. Nhận một chương trình mẫu từ thủ thuật Python. Cuốn sách chỉ dành cho bạn các phương pháp hay nhất của Python với các ví dụ đơn giản mà bạn có thể áp dụng ngay lập tức để viết mã + Pythonic đẹp hơn Một Python cơ bản chính ()Trong một số tập lệnh Python, bạn có thể tìm thấy định nghĩa hàm và điều kiện câu lệnh giống như ví dụ bên dưới ________số 8_______ Trong đoạn mã này, có một hàm được gọi là 4in ra cụm từ 0khi trình thông dịch Python thực thi nó. Ngoài ra còn có một 1câu lệnh điều kiện (hoặc ) kiểm tra giá trị của 5và so sánh nó với chuỗi 3. Khi 1câu lệnh đánh giá là 5, trình thông dịch Python sẽ thực thi 4. Bạn có thể đọc thêm về câu lệnh điều kiện trong Câu lệnh điều kiện trong PythonMẫu mã này khá phổ biến trong các tệp Python mà bạn muốn được thực hiện dưới dạng lệnh của tệp và được nhập trong một mô-đun khác. Để giúp hiểu cách mã hóa này sẽ thực thi, trước tiên bạn nên hiểu cách trình thông dịch Python đặt 5tùy thuộc vào cách mã hóa đang được thực thiThi mode mode by PythonCó hai cách chính mà bạn có thể hướng dẫn trình thông dịch Python thực thi hoặc sử dụng mã
Bạn có thể đọc thêm nhiều điều về các cách tiếp cận này trong Cách chạy tập lệnh Python của bạn. Bất kể bạn đang sử dụng cách chạy mã nào, Python xác định một biến đặc biệt được gọi là biến 5chứa một chuỗi có giá trị phụ thuộc vào cách mã đang được sử dụngChúng tôi sẽ sử dụng tệp ví dụ này, được lưu dưới dạng 9, để khám phá cách hành động của mã thay đổi tùy thuộc vào ngữ cảnh
Trong tệp này, có ba lệnh gọi đến 0đã được xác định. Hai đầu tiên trong một số cụm từ giới thiệu. Đầu 0tiên, thứ ba sẽ nằm trong cụm từ 2, và sau đó nó sẽ nằm trong phần biểu diễn của 5 biến bằng cách sử dụng tích hợp sẵn của Python 4Trong Python, 4hiển thị biểu diễn có thể có trong một đối tượng. Ví dụ này sử dụng 4 để nhấn mạnh rằng giá trị của 5là một chuỗi. Bạn có thể đọc thêm 4trongBạn sẽ thấy tep từ , mô-đun và tập lệnh được sử dụng trong suốt bài viết này. Thực tế, không có nhiều sự khác biệt giữa chúng. Tuy nhiên, có những khác biệt nhỏ về ý nghĩa nhấn mạnh mục tiêu của đoạn mã
Sự khác biệt này cũng được thảo luận trong Cách chạy tập lệnh Python của bạn Thực thi từ dòng lệnhTrong cách tiếp cận này, bạn muốn thực thi lệnh Python của mình từ dòng lệnh Khi bạn thực thi một lệnh tập tin, bạn sẽ không thể xác định mã tương tác mà trình thông dịch Python đang thực thi. Chi tiết về cách bạn có thể thực thi Python từ dòng lệnh của mình không quá quan trọng đối với mục đích của bài viết này, nhưng bạn có thể mở rộng hộp bên dưới để đọc thêm về sự khác biệt giữa các dòng lệnh trên Windows, Môi trường dòng lệnh Hiển thị Bây giờ bạn nên thực thi 9tập lệnh từ dòng lệnh, như hình dưới đây
Trong ví dụ này, bạn có thể thấy rằng 5có giá trị 2, trong đó các ký hiệu trích dẫn ( 3) cho bạn biết rằng giá trị có kiểu chuỗiHãy nhớ rằng, trong Python, không có sự khác biệt giữa các chuỗi được xác định bằng dấu nháy đơn ( 3) và dấu nháy kép ( 5). Bạn có thể đọc thêm về cách xác định chuỗi trongBạn sẽ thấy đầu ra giống nhau nếu bạn bao gồm một dòng shebang trong tập lệnh của mình và thực thi nó trực tiếp ( 6) hoặc sử dụng 7phép thuật trong IPython hoặc Jupyter NotebooksBạn cũng có thể thấy các lệnh Python được thực thi từ bên trong các gói bằng cách bổ sung 8đối số vào lệnh. Thông thường, bạn sẽ thấy điều này được đề cập khi bạn đang sử dụng 9. 0Thêm 8đối số sẽ chạy mã trong 2mô-đun của một gói. Bạn có thể tìm thêm thông tin về 2tệp trongTrong cả ba trường hợp này, 5không có cùng giá trị. chuỗi 2Chi tiết kỹ thuật. Tài liệu Python được xác định cụ thể khi nào 5 sẽ có giá trị 2
5được lưu trữ trong không gian tên toàn cầu của các mô-đun giống nhau với 1, 2và các thuộc tính khác. Bạn có thể đọc thêm về các thuộc tính này trong tài liệu Mô hình dữ liệu Python và, đặc biệt cho các mô-đun và gói, trongNhập vào Mô-đun hoặc Trình thông tin tương tácBây giờ chúng ta hãy xem xét cách thứ hai mà trình thông dịch Python sẽ thực thi mã của bạn. Import. Khi bạn đang phát triển một mô-đun hoặc tập lệnh, rất có thể bạn sẽ muốn tận dụng các mô-đun mà người khác đã xây dựng, điều này bạn có thể thực hiện với 3từ khóaTrong quá trình nhập, Python thực thi các câu lệnh đã được xác định trong mô-đun chỉ được xác định (nhưng chỉ trong lần đầu tiên bạn nhập một mô-đun). Để chứng minh kết quả nhập 9tệp của bạn, hãy khởi động trình thông dịch Python tương tác và sau đó nhập 9tệp của bạn>>>
Trong phần đầu mã này, bạn có thể thấy rằng trình thông dịch Python thực thi lệnh gọi tới 0. Hai dòng đầu tiên của đầu ra giống như khi bạn thực thi tệp dưới dạng tệp lệnh trên dòng lệnh vì không có biến nào trong một trong hai dòng đầu tiên. Tuy nhiên, có sự khác biệt về sản lượng so với thứ ba 0Khi mã giao dịch Python input code, value of _____3_______5được đặt giống với tên của mô-đun đang được nhập. You can see this thing in the first line out on the third. 5có giá trị 0, là tên của 9tệp mà Python đang nhập từ đóLưu ý rằng nếu bạn 3trả lại mô-đun mà không thoát khỏi Python, thì sẽ không có đầu raLưu ý. Để biết thêm thông tin về cách nhập hoạt động trong Python, hãy xem bản Python. Kỹ thuật và mẹo cao cũng như Nhập tuyệt đối so với đối tương trong Python Các phương pháp hay nhất cho các hàm chính của PythonBây giờ bạn có thể thấy sự khác biệt trong cách Python xử lý các chế độ thực thi khác nhau của nó, điều này rất hữu ích cho bạn khi biết một số phương pháp hay nhất để sử dụng. Những điều này sẽ được áp dụng bất kể khi nào bạn muốn viết mã mà bạn có thể chạy dưới dạng tệp lệnh và nhập vào một mô-đun khác hoặc một phiên bản tương tác Bạn sẽ tìm hiểu về bốn phương pháp hay nhất để chắc chắn rằng mã của bạn có thể phục vụ một mục tiêu kép
Đặt hầu hết mã vào một hàm hoặc lớpHãy nhớ rằng trình thông dịch Python thực thi tất cả các mã trong một mô-đun khi nó nhập mô-đun. Đôi khi mã bạn viết sẽ có các tác dụng phụ mà bạn muốn người dùng kiểm tra, chẳng hạn như
Trong những trường hợp này, bạn muốn người dùng kiểm tra việc kích hoạt việc thực thi mã này, thay vì để trình thông dịch Python thực thi mã khi nó nhập mô-đun của bạn Do đó, cách tốt nhất là né hầu hết mã vào bên trong một hàm hoặc một lớp. Điều này là làm khi trình thông dịch Python gặp 6hoặc 7từ khóa, nó chỉ lưu trữ các định nghĩa để sử dụng sau này và không thực sự thi cho đến khi bạn yêu cầuLưu đoạn mã dưới đây vào một tệp được gọi là 8 để có thể hiện ý tưởng này
Trong mã này, trước tiên bạn nhập 9từ 0mô-đun 9 tạm dừng trình thông dịch trong bao nhiêu giây mà bạn đưa ra làm đối số và sẽ tạo ra một hàm mất nhiều thời gian để chạy cho ví dụ này. Tiếp theo, bạn sử dụng 0 để trong một câu mô tả đích của đoạn mã nàySau đó, bạn xác định một chức năng có tên 3 năm thực hiện công việc
Thực thi tập tin phương pháp hay nhất trên dòng lệnh Bây giờ, điều gì sẽ xảy ra khi bạn thực thi tệp này dưới dạng tệp lệnh trên dòng lệnh? Trình thông dịch Python sẽ thực thi các dòng 5và 0dòng nằm ngoài định nghĩa của hàm, sau đó nó sẽ tạo ra định nghĩa của hàm được gọi là 3. Sau đó, tập lệnh sẽ thoát ra mà không cần làm gì thêm, vì tập lệnh không có bất kỳ mã nào thực thi _______74_______3Khối mã bên dưới hiển thị kết quả của việc chạy tệp này dưới dạng tệp lệnh
Đầu ra mà chúng ta có thể thấy ở đây là kết quả của lần đầu tiên 0. Lưu ý rằng nhập từ 0và xác định 3không tạo ra đầu ra. Cụ thể, kết quả đầu ra của các lệnh gọi đến 0bên trong định nghĩa của 3 sẽ không được đưa raNhập Mô-đun Các phương pháp hay nhất trong mô-đun khác hoặc Trình thông tin tương tác Khi bạn nhập tệp này trong một phiên bản tương tác (hoặc một mô-đun khác), trình dịch Python sẽ thực hiện chính xác các bước giống như khi thực hiện tệp này dưới dạng tệp lệnh Sau khi trình thông dịch Python nhập tệp, bạn có thể sử dụng bất kỳ biến, lớp hoặc hàm nào được xác định trong mô-đun bạn đã nhập. Để chứng minh điều này, chúng tôi sẽ sử dụng trình thông dịch Python tương tác. Khởi động chương trình tương tác thông tin và sau đó nhập 4>>>
Đầu ra duy nhất từ công việc đầu vào 8tệp là từ lệnh 0 call đầu tiên được xác định bên ngoài 3. Nhập từ 0và xác định 3không tạo đầu ra, giống như khi bạn thực thi mã từ dòng lệnhSử dụng print("This is my file to test Python's execution methods.") print("The variable __name__ tells me which context this file is running in.") print("The value of __name__ is:", repr(__name__)) 00 để kiểm tra việc thực thi mã của bạnĐiều gì sẽ xảy ra nếu bạn muốn _______74_______3 thực thi khi bạn chạy tập lệnh từ dòng lệnh nhưng không phải khi trình dịch Python nhập tệp? Bạn có thể sử dụng 00thành ngữ để xác định ngữ cảnh thực thi và 3 chỉ chạy có điều kiện khi 5 bằng 3. Add the bottom code into the end____63_______8tep của bạn
Trong mã này, bạn đã thêm một câu lệnh điều kiện để kiểm tra giá trị của 5. Điều kiện này sẽ đánh giá 5khi nào 5 bằng chuỗi 3. Hãy nhớ rằng các giá trị đặc biệt của 3cho 5 biến có nghĩa là thông dịch Python được thực hiện kịch bản của bạn và không nhập nóBên trong điều kiện khối, bạn đã thêm bốn dòng mã (dòng 12, 13, 14 và 15)
Bây giờ, hãy chạy 8filelệnh của bạn từ dòng lệnh để xem kết quả đầu ra sẽ thay đổi như thế nào
Đầu tiên, đầu ra hiển thị kết quả của 0 cuộc gọi bên ngoài 3Sau đó, giá trị của 13được đưa ra. Điều này xảy ra là do biến 5có giá trị 3khi trình thông dịch Python thực thi tệp này dưới dạng tệp lệnh, vì vậy câu lệnh điều kiện được đánh giá là 5Tiếp theo, tập lệnh của bạn được gọi là 3và chuyển 13vào để sửa đổi. Khi ___74_______3 thực thi, nó sẽ ở một số thông báo trạng thái đến đầu ra. Cuối cùng, giá trị của 24được in raBây giờ bạn nên kiểm tra xem điều gì sẽ xảy ra khi bạn nhập 8tệp từ trình thông tin tương tác (hoặc một mô-đun khác). Ví dụ dưới đây minh họa sự cố này>>>
Lưu ý rằng bạn nhận được hành vi giống như trước khi bạn thêm câu lệnh điều kiện vào cuối tệp. Điều này là do 5 biến có giá trị 27, vì vậy Python đã không thực thi mã bên trong khối, bao gồm 3, bởi vì lệnh điều kiện được đánh giá là 29Tạo một hàm được gọi là hàm chính () để chứa mã bạn muốn chạyBây giờ bạn có thể viết mã Python có thể chạy từ dòng lệnh dưới dạng tệp lệnh và được nhập mà không có tác dụng phụ không mong muốn. Tiếp theo, bạn sẽ tìm hiểu về cách viết mã của mình để giúp các lập trình viên Python khác dễ dàng hơn theo ý bạn Nhiều ngôn ngữ, chẳng hạn như C , C ++ , Java và một số ngôn ngữ khác, xác định một hàm đặc biệt phải được gọi là 4 mà hệ điều hành tự động gọi khi nó thực hiện biên dịch chương trình này. Hàm này thường được gọi là điểm vào bởi vì nó là nơi thực thi đi vào chương trìnhNgược lại, Python không có chức năng đặc biệt nào đóng vai trò là điểm đến của một lệnh tập tin. Bạn thực sự có thể đặt cho điểm đầu vào hàm trong một tập lệnh Python bất kỳ tên nào bạn muốn Mặc dù Python không gán bất kỳ ý nghĩa nào cho một hàm được đặt tên 4, nhưng cách tốt nhất là đặt tên cho hàm điểm đầu vào 4. Bằng cách đó, bất kỳ lập trình viên nào khác khi đọc tập lệnh của bạn đều biết rằng chức năng này là điểm bắt đầu của mã hoàn thành nhiệm vụ chính của tập lệnhNgoài ra, 4 phải chứa bất kỳ mã nào bạn muốn chạy khi trình thông dịch Python thực thi tệp này. Điều này tốt hơn là đặt mã trực tiếp vào khối có điều kiện vì người dùng có thể sử dụng lại 4 nếu họ nhập mô-đun của bạnThay đổi 8tep để file trông giống như mã bên dưới 0Trong ví dụ này, bạn đã thêm định nghĩa của 4 điều kiện bao gồm mã trước đó nằm bên trong khối điều kiện. Sau đó, bạn đã thay đổi điều kiện khối để nó thực thi 4. Nếu bạn chạy mã này dưới dạng tệp lệnh hoặc nhập nó, bạn sẽ nhận được đầu giống như trong phần trướcGọi các chức năng khác từ main()Một thực tế phổ biến bằng Python là có 4 thực hiện các chức năng khác chứ không phải là bao gồm cả mã nhiệm vụ hoàn thành trong 4. Điều này đặc biệt hữu ích khi bạn có thể tạo ra nhiệm vụ tổng thể của mình từ một số nhiệm vụ con nhỏ hơn là có thể thực hiện chức vụ độc lậpVí dụ. you could have an a command doing the following task
Nếu bạn triển khai từng nhiệm vụ này trong các chức năng riêng biệt, thì bạn (hoặc người dùng khác) sẽ dễ dàng sử dụng lại một vài bước trong số các bước và bỏ qua các bước bạn không muốn. Sau đó, bạn có thể tạo ra một quy trình làm việc mặc định trong đó 4và bạn có thể có cả hai thế giới tốt nhấtViệc áp dụng phương pháp này cho mã của bạn hay không phải do bạn tự đánh giá. Việc chia nhỏ công việc thành nhiều chức năng giúp việc sử dụng lại dễ dàng hơn nhưng lại làm tăng khó khăn cho những người khác đang cố gắng diễn giải mã của bạn vì họ phải thực hiện theo một số bước nhảy trong quy trình của chương trình Sửa đổi 8tep của bạn để tệp trông giống như mã bên dưới 1Trong ví dụ mã này, 10 dòng đầu tiên của tệp có cùng nội dung mà chúng đã có trước đó. Định nghĩa hàm thứ hai trên dòng 12 tạo và trả về một số dữ liệu mẫu và định nghĩa hàm thứ ba trên dòng 17 mô phỏng việc ghi dữ liệu đã được sửa đổi vào cơ sở dữ liệu Ở dòng 21, 4đã được xác định. Trong ví dụ này, bạn đã sửa đổi 4 để nó gọi lần lượt các chức năng đọc dữ liệu, xử lý dữ liệu và ghi dữ liệuĐầu tiên, cái 13được tạo ra từ 45. Điều này 13được chuyển đến 3, được trả lại 24. Cuối cùng, 24được chuyển vào 50Hai dòng cuối cùng của câu lệnh là khối điều kiện kiểm tra 5và chạy 4 if 1câu lệnh là 5Bây giờ, bạn có thể chạy toàn bộ quy trình xử lý từ dòng lệnh, như được hiển thị bên dưới 2Khi bắt đầu thực hiện điều này, bạn có thể thấy rằng trình thông dịch Python thực thi 4, trong đó thực hiện 45, 3và 50. Tuy nhiên, bạn cũng có thể nhập 8tệp và sử dụng lại 3cho một nguồn dữ liệu đầu vào khác, như được hiển thị bên dưới>>> 3Trong ví dụ này, bạn đã nhập 61và rút ngắn tên 62cho mã nàyQuá trình nhập làm cho trình thông dịch Python thực thi tất cả các dòng mã trong 8tệp, hãy làm điều đó, bắt đầu hiển thị dòng giải thích đích của tệpSau đó, bạn lưu trữ dữ liệu từ một tệp trong 13đó là do đọc dữ liệu từ Web. Sau đó, bạn sử dụng lại 3và 50từ 8tép. Trong trường hợp này, bạn đã tận dụng lợi thế của công việc bằng cách sử dụng lại mã của mình thay vì xác định tất cả logic trong 4Tóm tắt các phương pháp hay nhất về hàm chính trong PythonDưới đây là bốn phương pháp hay nhất chính về 4Python mà bạn vừa xem
Phần kết luậnXin chúc mừng. Bây giờ bạn đã biết cách tạo các _______3_______4hàm Python Bạn đã học được những điều sau
|