Hàm xác định IPython
Một trong những tính năng thú vị của IPython là các hàm ma thuật - các hàm trợ giúp được tích hợp trong IPython. Chúng có thể giúp bạn dễ dàng bắt đầu trình gỡ lỗi tương tác, tạo macro, chạy câu lệnh thông qua trình lược tả mã hoặc đo thời gian thực thi của nó và thực hiện nhiều việc phổ biến khác Show Đừng nhầm các hàm ma thuật IPython với các hàm ma thuật Python (các hàm có dấu gạch dưới kép ở đầu và cuối, ví dụ như 6 hoặc 7) - đó là những thứ hoàn toàn khác nhau. Trong phần này và các phần tiếp theo của bài viết, bất cứ khi nào bạn thấy một hàm ma thuật - đó là hàm ma thuật IPythonHơn nữa, bạn có thể tạo các chức năng kỳ diệu của riêng mình. Có 2 loại chức năng ma thuật khác nhau. 0 và hoạt động giống như một lệnh được nhập trong thiết bị đầu cuối của bạn. Bạn bắt đầu với tên của hàm và sau đó truyền một số đối số, chẳng hạn.
Cái tôi thích nhất là chức năng %debug. Hãy tưởng tượng bạn chạy một số mã và nó ném ra một ngoại lệ. Nhưng do bạn chưa chuẩn bị cho trường hợp ngoại lệ, nên bạn đã không chạy nó thông qua trình gỡ lỗi. Bây giờ, để có thể gỡ lỗi, bạn thường phải quay lại, đặt một số điểm dừng và chạy lại cùng mã. May mắn thay, nếu bạn đang sử dụng IPython, có một cách tốt hơn. Bạn có thể chạy 1 ngay sau khi ngoại lệ xảy ra và IPython sẽ bắt đầu trình gỡ lỗi tương tác cho ngoại lệ đó. Nó được gọi là gỡ lỗi sau khi chết và tôi hoàn toàn thích nóLoại hàm ma thuật thứ hai là ma thuật ô và chúng hoạt động trên một khối mã, không phải trên một dòng. Chúng có tiền tố là 2. Để đóng một khối mã, khi bạn đang ở trong một chức năng ma thuật của ô, hãy nhấn 3 hai lần. Đây là một ví dụ về hàm 4 hoạt động trên một khối mã
Cả ma thuật dòng và ma thuật ô đều có thể được tạo bằng cách trang trí một hàm Python. Một cách khác là viết một lớp kế thừa từ lớp 5. Tôi sẽ đề cập đến phương pháp thứ hai này trong một bài viết khácTạo chức năng ma thuật dòng #Đó là tất cả lý thuyết. Bây giờ, hãy viết hàm ma thuật đầu tiên của chúng ta. Chúng ta sẽ bắt đầu với một 6 và trong phần thứ hai của hướng dẫn này, chúng ta sẽ tạo một 7Loại chức năng kỳ diệu nào chúng ta sẽ tạo ra? . Tôi đến từ Ba Lan và ở Ba Lan, chúng tôi sử dụng ký hiệu tiếng Ba Lan để viết các phép toán. Vì vậy, thay vì viết 8, chúng tôi viết 9. Và thay vì viết 20, chúng tôi viết 21[1]Hãy viết một trình thông dịch ký hiệu tiếng Ba Lan đơn giản. Nó sẽ lấy một biểu thức bằng ký hiệu tiếng Ba Lan làm đầu vào và đưa ra câu trả lời đúng. Để giữ cho ví dụ này ngắn gọn, tôi sẽ giới hạn nó chỉ trong các phép tính số học cơ bản. 22, 23, 24 và 25Đây là mã giải thích ký hiệu tiếng Ba Lan 2Tiếp theo, chúng ta sẽ tạo một hàm ma thuật 26 sẽ sử dụng đoạn mã trên để diễn giải ký hiệu tiếng Ba Lan 0Và đó là nó. Trình trang trí 27 biến chức năng 28 của chúng ta thành một chức năng ma thuật 26. Tham số 00 chứa bất cứ thứ gì được truyền cho hàm ma thuật. Nếu chúng ta gọi nó theo cách sau. 01, 00 sẽ chứa 03Để đảm bảo rằng IPython tải chức năng ma thuật của chúng tôi khi khởi động, hãy sao chép tất cả mã mà chúng tôi vừa viết (bạn có thể tìm thấy toàn bộ tệp trên GitHub) vào một tệp bên trong thư mục khởi động IPython. Bạn có thể đọc thêm về thư mục này trong bài đăng tệp khởi động IPython. Trong trường hợp của tôi, tôi đang lưu nó trong một tệp có tên 8(tên của tệp không quan trọng, nhưng thư mục bạn đặt nó mới quan trọng) Ok, đã đến lúc kiểm tra nó. Bắt đầu IPython và hãy làm một số phép toán Ba Lan 9Hoàn hảo, nó hoạt động. Tất nhiên, nó khá thô sơ - nó chỉ hỗ trợ 4 toán tử, nó không xử lý tốt các trường hợp ngoại lệ và do nó sử dụng đệ quy nên nó có thể bị lỗi đối với các biểu thức rất dài. Ngoài ra, mô-đun 04 và hàm 05 hiện sẽ có sẵn trong các phiên IPython của bạn, vì bất kỳ mã nào bạn đặt trong tệp 06 sẽ được chạy khi khởi động IPython. Nhưng, bạn vừa viết hàm ma thuật đầu tiên của mình. Và nó không quá khó. Tại thời điểm này, có lẽ bạn đang tự hỏi - Tại sao chúng ta không viết một hàm Python tiêu chuẩn? 3hoặc thậm chí 4Như tôi đã nói lúc đầu, các hàm ma thuật thường là các hàm trợ giúp. Ưu điểm chính của chúng là khi ai đó nhìn thấy các hàm có tiền tố 0, thì rõ ràng đó là một hàm ma thuật từ IPython, không phải là một hàm được xác định ở đâu đó trong mã hoặc tích hợp sẵn. Ngoài ra, không có nguy cơ tên của chúng xung đột với các chức năng từ các mô-đun PythonPhần kết luận #Tôi hy vọng bạn thích hướng dẫn ngắn này và nếu bạn có thắc mắc hoặc nếu bạn có một chức năng kỳ diệu thú vị mà bạn muốn chia sẻ - hãy gửi email cho tôi hoặc ping tôi trên Twitter Hãy theo dõi các phần tiếp theo. Chúng ta vẫn cần đề cập đến các chức năng ma thuật ô, chức năng ma thuật dòng VÀ ô và các lớp ma thuật Chụp %% trong Python là gì?IPython có một phép thuật ô, %%capture , ghi lại thiết bị xuất chuẩn/thiết bị xuất chuẩn của một ô . Với phép thuật này, bạn có thể loại bỏ các luồng này hoặc lưu trữ chúng trong một biến. từ __future__ nhập print_function nhập sys. Theo mặc định, %%capture loại bỏ các luồng này. Đây là một cách đơn giản để chặn đầu ra không mong muốn.
Lệnh ma thuật IPython là gì?Các loại lệnh ma thuật . ma thuật dòng. Chúng tương tự như các cuộc gọi dòng lệnh. . phép thuật di động. Họ có tiền tố ký tự %%. . Phép thuật dòng tích hợp. %autocall [chế độ]. %automagic. Các hàm ma thuật có thể gọi được mà không cần phải nhập % ban đầu nếu được đặt thành 1. . %đĩa CD. Phép thuật dòng này thay đổi thư mục hiện tại. . Cách sử dụng. . %dist. . %chỉnh sửa Làm cách nào để viết hàm trong Python?Cú pháp cơ bản để xác định hàm trong Python
. Điều tiếp theo bạn phải làm là đảm bảo rằng bạn thụt lề bằng một tab hoặc 4 dấu cách, sau đó chỉ định những gì bạn muốn chức năng thực hiện cho mình. define a function with the def keyword, then write the function identifier (name) followed by parentheses and a colon. The next thing you have to do is make sure you indent with a tab or 4 spaces, and then specify what you want the function to do for you.
IPython và Jupyter có giống nhau không?IPython Notebook hiện được gọi là Jupyter Notebook . Đó là một môi trường tính toán tương tác, trong đó bạn có thể kết hợp thực thi mã, văn bản đa dạng thức, toán học, sơ đồ và đa phương tiện. Để biết thêm chi tiết về Jupyter Notebook, vui lòng xem trang web Jupyter. |