Lệnh ipython
Nếu được gọi mà không có tùy chọn nào, nó sẽ thực thi tất cả các tệp được liệt kê theo trình tự và đưa bạn vào trình thông dịch trong khi vẫn thừa nhận bất kỳ tùy chọn nào bạn có thể đã đặt trong ipython_config của mình. py. Hành vi này khác với Python tiêu chuẩn, khi được gọi là python -i sẽ chỉ thực thi một tệp và bỏ qua thiết lập cấu hình của bạn Show
Xin lưu ý rằng một số tùy chọn cấu hình không có sẵn ở dòng lệnh, đơn giản vì chúng không thực tế ở đây. Xem các tệp cấu hình của bạn để biết chi tiết về những. Có các tệp cấu hình riêng cho từng cấu hình và các tệp trông giống như In [8]: %cd /home/fperez5 hoặc In [8]: %cd /home/fperez6. Thư mục hồ sơ trông giống như In [8]: %cd /home/fperez7 và thường được cài đặt trong thư mục, mặc định là In [8]: %cd /home/fperez9. Đối với người dùng Windows, In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop0 phân giải thành In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop1 trong hầu hết các trường hợp Tùy chọn dòng lệnhĐể xem các tùy chọn mà IPython chấp nhận, hãy sử dụng In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop2 (và có lẽ bạn nên chạy đầu ra thông qua một máy nhắn tin chẳng hạn như In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop3 để đọc thuận tiện hơn). Điều này hiển thị tất cả các tùy chọn có bí danh một từ để kiểm soát chúng, nhưng IPython cho phép bạn định cấu hình tất cả các đối tượng của nó từ dòng lệnh bằng cách chuyển tên lớp đầy đủ và giá trị tương ứng; . Ví dụ ipython --matplotlib qt tương đương với In [8]: %cd /home/fperez0 Lưu ý rằng ở dạng thứ hai, bạn phải sử dụng dấu bằng, vì biểu thức được đánh giá là một phép gán Python thực tế. Mặc dù trong ví dụ trên, biểu mẫu ngắn thuận tiện hơn, nhưng chỉ các tùy chọn phổ biến nhất mới có biểu mẫu ngắn, trong khi bất kỳ biến cấu hình nào trong IPython đều có thể được đặt ở dòng lệnh bằng cách sử dụng biểu mẫu dài. Biểu mẫu dài này là cùng một cú pháp được sử dụng trong các tệp cấu hình, nếu bạn muốn đặt các tùy chọn này vĩnh viễn sử dụng tương tácIPython có nghĩa là hoạt động như một sự thay thế thả xuống cho trình thông dịch tương tác tiêu chuẩn. Như vậy, bất kỳ mã nào hợp lệ python sẽ thực thi bình thường theo IPython (trường hợp điều này không đúng sẽ được báo cáo là lỗi). Tuy nhiên, nó cung cấp nhiều tính năng không có sẵn trong dấu nhắc python tiêu chuẩn. Những gì sau đây là một danh sách của những Thận trọng cho người dùng WindowsThật không may, Windows sử dụng ký tự '\' làm dấu phân cách đường dẫn. Đây là một lựa chọn tồi tệ, bởi vì '\' cũng đại diện cho ký tự thoát trong hầu hết các ngôn ngữ lập trình hiện đại, bao gồm cả Python. Vì lý do này, nên sử dụng ký tự ‘/’ nếu bạn gặp sự cố với In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop5. Tuy nhiên, trong lệnh Windows tùy chọn cờ '/' nên bạn không thể sử dụng nó cho thư mục gốc. Điều này có nghĩa là các đường dẫn bắt đầu từ thư mục gốc phải được nhập theo cách giả tạo như. In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop6 Hệ thống lệnh ma thuậtIPython sẽ coi bất kỳ dòng nào có ký tự đầu tiên là % là lệnh gọi đặc biệt đến hàm 'ma thuật'. Những thứ này cho phép bạn kiểm soát hành vi của chính IPython, cộng với rất nhiều tính năng kiểu hệ thống. Tất cả chúng đều có tiền tố là ký tự %, nhưng các tham số được cung cấp không có dấu ngoặc đơn hoặc dấu ngoặc kép Các dòng bắt đầu bằng In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop7 báo hiệu một phép thuật tế bào. chúng lấy làm đối số không chỉ phần còn lại của dòng hiện tại, mà cả tất cả các dòng bên dưới chúng, trong khối thực thi hiện tại. Trên thực tế, các phép thuật tế bào có thể thực hiện các sửa đổi tùy ý đối với đầu vào mà chúng nhận được, thậm chí không cần phải là mã Python hợp lệ. Họ nhận toàn bộ khối dưới dạng một chuỗi Như một ví dụ về phép thuật dòng, phép thuật hoạt động giống như lệnh OS cùng tên In [8]: %cd /home/fperez Phần sau đây sử dụng nội trang trong chế độ ô In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop Trong trường hợp này, In [8]: %cd /home/fperez60 được gọi là đối số dòng và khối có In [8]: %cd /home/fperez61 và In [8]: %cd /home/fperez62 được gọi là thân ô. Phép thuật nhận được cả hai Nếu bạn đã bật 'ma thuật tự động' (theo mặc định), bạn không cần phải nhập rõ ràng In [8]: %cd /home/fperez64 đơn lẻ cho các phép thuật dòng; . Khi bật chế độ tự động, bạn có thể chỉ cần nhập In [8]: %cd /home/fperez65 để chuyển đến thư mục 'mydir' In [8]: %cd /home/fperez6 Phép thuật di động luôn yêu cầu tiền tố In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop7 rõ ràng, gọi phép thuật tự động chỉ hoạt động đối với phép thuật dòng Hệ thống ma thuật tự động có quyền ưu tiên thấp nhất có thể trong các tìm kiếm tên, vì vậy bạn có thể tự do sử dụng các biến có cùng tên với các lệnh ma thuật. Nếu một lệnh ma thuật bị 'che khuất' bởi một biến, bạn sẽ cần tiền tố In [8]: %cd /home/fperez64 rõ ràng để sử dụng nó In [8]: %cd /home/fperez4 Phép thuật dòng, nếu chúng trả về một giá trị, có thể được gán cho một biến bằng cú pháp In [8]: %cd /home/fperez68 (trong trường hợp cụ thể này trả về kết quả của In [8]: %cd /home/fperez69 dưới dạng danh sách python). Xem để biết thêm thông tin Nhập In [8]: %cd /home/fperez40 để biết thêm thông tin, bao gồm danh sách tất cả các hàm ma thuật có sẵn bất kỳ lúc nào và chuỗi tài liệu của chúng. Bạn cũng có thể gõ In [8]: %cd /home/fperez41 (xem thông tin trên hệ thống '?') để nhận thông tin về bất kỳ chức năng ma thuật cụ thể nào mà bạn quan tâm Tài liệu API cho mô-đun chứa chuỗi tài liệu đầy đủ của tất cả các lệnh ma thuật hiện có Xem thêm Các lệnh ma thuật tích hợp danh sách các phép thuật dòng và ô có sẵn trong Python theo mặc định Cách xác định và đăng ký các hàm ma thuật bổ sungTruy cập vào phần trợ giúp tiêu chuẩn của PythonChỉ cần gõ In [8]: %cd /home/fperez43 để truy cập hệ thống trợ giúp tiêu chuẩn của Python. Bạn cũng có thể nhập In [8]: %cd /home/fperez44 để biết thông tin về một đối tượng nhất định hoặc In [8]: %cd /home/fperez45 để biết thông tin về từ khóa. Bạn có thể cần định cấu hình biến môi trường PYTHONDOCS của mình để tính năng này hoạt động chính xác Thông tin đối tượng độngNhập In [8]: %cd /home/fperez46 hoặc In [8]: %cd /home/fperez47 in thông tin chi tiết về một đối tượng. Nếu một số chuỗi nhất định trong đối tượng quá dài (e. g. chữ ký chức năng) chúng được cắt ở trung tâm cho ngắn gọn. Hệ thống này cung cấp các loại và giá trị biến truy cập, chuỗi tài liệu, nguyên mẫu hàm và các thông tin hữu ích khác Nếu thông tin không vừa với thiết bị đầu cuối, nó sẽ được hiển thị trong máy nhắn tin ( In [8]: %cd /home/fperez48 nếu có, nếu không thì máy nhắn tin nội bộ cơ bản) Nhập In [8]: %cd /home/fperez49 hoặc In [8]: %cd /home/fperez60 để truy cập vào thông tin đầy đủ, bao gồm cả mã nguồn nếu có thể. Chuỗi dài không bị cắt Các chức năng ma thuật sau đây đặc biệt hữu ích để thu thập thông tin về môi trường làm việc của bạn
Các hàm thông tin đối tượng động (?/??, ________ 361, ________ 364, ________ 362, _______ 363) hoạt động trên các thuộc tính của đối tượng, cũng như trực tiếp trên các biến. Ví dụ: sau khi thực hiện In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop11, bạn có thể sử dụng In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop12 Các tính năng dựa trên dòng đọcCác tính năng này yêu cầu thư viện đường đọc GNU, vì vậy chúng sẽ không hoạt động nếu cài đặt Python của bạn thiếu hỗ trợ đường đọc. Trước tiên, chúng tôi sẽ mô tả hành vi mặc định mà IPython sử dụng, sau đó là cách thay đổi hành vi đó cho phù hợp với sở thích của bạn Hoàn thành dòng lệnhBất cứ lúc nào, nhấn TAB sẽ hoàn thành bất kỳ lệnh python hoặc tên biến nào có sẵn và hiển thị cho bạn danh sách các khả năng hoàn thành nếu không có lệnh nào rõ ràng. Nó cũng sẽ hoàn thành tên tệp trong thư mục hiện tại nếu không có tên python nào khớp với tên bạn đã nhập cho đến nay Tìm kiếm lịch sử lệnhIPython cung cấp hai cách để tìm kiếm thông qua đầu vào trước đó và do đó giảm nhu cầu nhập lặp đi lặp lại
IPython sẽ lưu lịch sử đầu vào của bạn khi nó rời đi và tải lại vào lần tới khi bạn khởi động lại nó. Theo mặc định, tệp lịch sử có tên là In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop16 tự độngIPython có thể nhận ra các dòng kết thúc bằng '. ' và thụt lề dòng tiếp theo, đồng thời tự động bỏ thụt lề sau 'raise' hoặc 'return' Tính năng này sử dụng thư viện readline, do đó, nó sẽ tôn trọng cấu hình In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop17 của bạn (hoặc bất kỳ tệp nào mà biến môi trường In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop18 của bạn trỏ tới). Việc thêm các dòng sau vào tệp In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop19 của bạn có thể giúp việc thụt lề/bỏ thụt lề thuận tiện hơn (M-i indents, M-u unindents) In [8]: %cd /home/fperez6 Lưu ý rằng có 4 dấu cách giữa các dấu ngoặc kép sau “M-i” ở trên Cảnh báo Đặt các khoảng thụt lề ở trên sẽ gây ra sự cố với mục nhập văn bản unicode trong thiết bị đầu cuối Cảnh báo Autoindent được BẬT theo mặc định, nhưng nó có thể gây ra sự cố khi dán mã thụt lề nhiều dòng (mã đã dán được thụt lề lại trên mỗi dòng). Một chức năng ma thuật %autoindent cho phép bạn bật/tắt nó khi chạy. Bạn cũng có thể tắt nó vĩnh viễn trong tệp In [8]: %cd /home/fperez5 của mình (đặt TerminalInteractiveShell. autoindent=False) Nếu bạn muốn dán nhiều dòng vào thiết bị đầu cuối, bạn nên sử dụng In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop21 Tùy chỉnh hành vi đường đọcTất cả các tính năng này đều dựa trên thư viện đường dẫn GNU, có giao diện cực kỳ tùy biến. Thông thường, readline được cấu hình thông qua tệp In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop19. IPython tôn trọng điều này và bạn cũng có thể tùy chỉnh đường đọc bằng cách đặt các tùy chọn cấu hình sau
Bạn sẽ tìm thấy các giá trị mặc định trong tệp cấu hình của mình Ghi nhật ký phiên và khôi phụcBạn có thể ghi nhật ký tất cả đầu vào từ một phiên bằng cách khởi động IPython bằng công tắc dòng lệnh In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop25 (xem ) hoặc bằng cách kích hoạt ghi nhật ký bất kỳ lúc nào với chức năng ma thuật Các tệp nhật ký sau đó có thể được tải lại bằng cách chạy chúng dưới dạng tập lệnh và IPython sẽ cố gắng 'phát lại' nhật ký bằng cách thực thi tất cả các dòng trong đó, do đó khôi phục trạng thái của phiên trước đó. Tính năng này không hẳn hoàn hảo nhưng vẫn có thể hữu ích trong nhiều trường hợp Các tệp nhật ký cũng có thể được sử dụng như một cách để có bản ghi vĩnh viễn về bất kỳ mã nào bạn đã viết trong khi thử nghiệm. Các tệp nhật ký là các tệp văn bản thông thường mà sau này bạn có thể mở trong trình soạn thảo văn bản yêu thích của mình để trích xuất mã hoặc để 'xóa chúng' trước khi sử dụng chúng để phát lại một phiên Chức năng kích hoạt đăng nhập giữa phiên được sử dụng như sau In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop1 Nếu không có tên, nó sẽ mặc định là một tệp có tên 'ipython_log. py' trong thư mục làm việc hiện tại của bạn, ở chế độ 'xoay' (xem bên dưới) ‘%logstart name’ lưu vào tệp ‘name’ trong chế độ ‘backup’. Nó lưu lịch sử của bạn cho đến thời điểm đó và sau đó tiếp tục đăng nhập %logstart nhận tham số tùy chọn thứ hai. chế độ đăng nhập. Đây có thể là một trong (lưu ý rằng các chế độ được cung cấp không được trích dẫn)
Các chức năng và cho phép bạn tạm thời dừng và tiếp tục đăng nhập vào một tệp đã được bắt đầu trước đó với %logstart. Họ sẽ thất bại (với một lời giải thích) nếu bạn cố gắng sử dụng chúng trước khi đăng nhập đã được bắt đầu Truy cập vỏ hệ thốngBất kỳ dòng đầu vào nào bắt đầu bằng một. ký tự được thông qua nguyên văn (trừ. , tất nhiên) vào hệ điều hành cơ bản. Ví dụ: gõ ipython --matplotlib qt00 sẽ chạy 'ls' trong thư mục hiện tại Chụp thủ công đầu ra lệnh và đầu ra ma thuậtBạn có thể gán kết quả của một lệnh hệ thống cho một biến Python bằng cú pháp ipython --matplotlib qt01. Tương tự, kết quả của một phép thuật (miễn là nó trả về một giá trị) có thể được gán cho một biến. Ví dụ: cú pháp ipython --matplotlib qt02 tương đương với ví dụ về lệnh hệ thống ở trên (ma thuật chạy lệnh shell và ghi lại kết quả). Mỗi trong số này có đầu ra có thể đọc được bằng máy từ thiết bị xuất chuẩn (e. g. không có màu) và phân tách trên các dòng mới. Để có được loại đầu ra này một cách rõ ràng mà không cần gán cho một biến, hãy sử dụng hai dấu chấm than ( ipython --matplotlib qt04) hoặc lệnh ma thuật mà không cần gán. (Tuy nhiên, lệnh ipython --matplotlib qt06 không thể được gán cho một biến. ) Danh sách đã chụp trong ví dụ này có một số tính năng tiện lợi. ipython --matplotlib qt07 hoặc ipython --matplotlib qt08 lần lượt trả về một chuỗi được phân cách bằng dấu cách hoặc dòng mới. ipython --matplotlib qt09 tạo các đối tượng đường dẫn từ các mục danh sách. Xem để biết chi tiết IPython cũng cho phép bạn mở rộng giá trị của biến python khi gọi hệ thống. Bọc các biến hoặc biểu thức trong {dấu ngoặc nhọn} In [10]: %%timeit x = range(10000) ...: min(x) ...: max(x) ...: 1000 loops, best of 3: 438 us per loop2 Đối với các trường hợp đơn giản, bạn có thể thêm $ vào trước tên biến ipython --matplotlib qt0 Lưu ý rằng ipython --matplotlib qt10 được sử dụng để đại diện cho một ipython --matplotlib qt11 theo nghĩa đen Bí danh lệnh hệ thốngHàm ma thuật cho phép bạn xác định các hàm ma thuật thực tế là các lệnh trình bao hệ thống. Các bí danh này có thể có các tham số ipython --matplotlib qt13 định nghĩa 'alias_name' là bí danh cho 'cmd' Sau đó, gõ ipython --matplotlib qt14 sẽ thực thi lệnh hệ thống 'cmd params' (từ hệ điều hành cơ bản của bạn) Bạn cũng có thể xác định bí danh với tham số bằng cách sử dụng bộ xác định %s (một bí danh cho mỗi tham số). Ví dụ sau định nghĩa hàm bộ phận là bí danh của lệnh 'echo first %s second %s' trong đó mỗi %s sẽ được thay thế bằng một tham số vị trí cho lệnh gọi %parts ipython --matplotlib qt1 Nếu được gọi không có tham số, hãy in bảng các bí danh hiện được xác định Điều kỳ diệu cho phép bạn tải toàn bộ $PATH của mình dưới dạng bí danh ipython. Xem chuỗi tài liệu của nó để biết thêm chi tiết tải lại đệ quyMô-đun cho phép bạn tải lại mô-đun một cách đệ quy. những thay đổi được thực hiện đối với bất kỳ phần phụ thuộc nào của nó sẽ được tải lại mà không cần phải thoát. Để bắt đầu sử dụng nó, hãy làm ipython --matplotlib qt2 Bản in theo dõi ngoại lệ dài dòng và có màuIPython cung cấp tùy chọn để xem các dấu vết ngoại lệ rất chi tiết, điều này có thể đặc biệt hữu ích khi gỡ lỗi các chương trình lớn. Bạn có thể chạy bất kỳ tệp Python nào bằng hàm %run để hưởng lợi từ các dấu vết chi tiết này. Hơn nữa, cả dấu vết bình thường và dài dòng đều có thể được tô màu (nếu thiết bị đầu cuối của bạn hỗ trợ nó), điều này giúp chúng dễ dàng phân tích cú pháp trực quan hơn nhiều Xem ma thuật và chức năng để biết chi tiết Các tính năng này về cơ bản là phiên bản đầu cuối của mô-đun cgitb của Ka-Ping Yee, hiện là một phần của thư viện Python tiêu chuẩn Hệ thống bộ đệm đầu vàoIPython cung cấp các lời nhắc được đánh số (Vào/Ra) với bộ nhớ đệm đầu vào và đầu ra (còn được gọi là 'lịch sử đầu vào'). Tất cả đầu vào được lưu và có thể được truy xuất dưới dạng các biến (ngoài việc gọi lại phím mũi tên thông thường), ngoài lệnh ma thuật ipython --matplotlib qt20 đưa mục nhập lịch sử lên để chỉnh sửa trên dòng lệnh tiếp theo Các biến sau luôn tồn tại
Additionally, global variables named _i Ví dụ: nội dung bạn nhập tại dấu nhắc 14 có sẵn dưới dạng ipython --matplotlib qt23, ipython --matplotlib qt24 và ipython --matplotlib qt25 Điều này cho phép bạn dễ dàng cắt và dán lời nhắc tương tác nhiều dòng bằng cách in chúng ra. chúng in như một chuỗi sạch, không có ký tự dấu nhắc. Bạn cũng có thể thao tác với chúng như các biến thông thường (chúng là các chuỗi), sửa đổi hoặc thực thi chúng Bạn cũng có thể dễ dàng thực hiện lại nhiều dòng nhập liệu bằng cách sử dụng phép thuật hoặc hàm. Hệ thống macro cũng cho phép bạn thực hiện lại các dòng trước đó bao gồm các lệnh gọi hàm kỳ diệu (yêu cầu xử lý đặc biệt). Nhập %vĩ mô? Hàm lịch sử cho phép bạn xem bất kỳ phần nào trong lịch sử nhập của mình bằng cách in một loạt các biến _i Bạn cũng có thể tìm kiếm (‘grep’) trong lịch sử của mình bằng cách nhập ipython --matplotlib qt29. Điều này rất hữu ích để tìm kiếm URL, địa chỉ IP, v.v. Bạn có thể đưa các mục nhập lịch sử được liệt kê bởi ‘%hist -g’ lên để chỉnh sửa bằng lệnh %recall hoặc chạy chúng ngay lập tức với Hệ thống bộ nhớ đệm đầu raĐối với đầu ra được trả về từ các hành động, tồn tại một hệ thống tương tự như bộ đệm đầu vào nhưng sử dụng _ thay vì _i. Chỉ các hành động tạo ra kết quả (ví dụ KHÔNG phải bài tập) mới được lưu vào bộ đệm. Nếu bạn đã quen thuộc với Mathematica, các biến _ của IPython hoạt động chính xác như các biến % của Mathematica Các biến sau luôn tồn tại
Additionally, global variables named _ Các biến này cũng được lưu trữ trong một từ điển chung (không phải danh sách, vì nó chỉ có các mục nhập cho các dòng trả về kết quả) có sẵn dưới tên _oh và Out (tương tự như _ih và In). Vì vậy, đầu ra từ dòng 12 có thể được lấy là ipython --matplotlib qt32, ipython --matplotlib qt33 hoặc ipython --matplotlib qt34. Nếu bạn vô tình ghi đè lên biến Out, bạn có thể khôi phục nó bằng cách gõ ipython --matplotlib qt35 tại dấu nhắc Hệ thống này rõ ràng có khả năng đặt yêu cầu bộ nhớ lớn lên hệ thống của bạn, vì nó ngăn trình thu gom rác của Python xóa mọi kết quả được tính toán trước đó. Bạn có thể kiểm soát số lượng kết quả được lưu trong bộ nhớ bằng tùy chọn cấu hình ipython --matplotlib qt36. Nếu bạn đặt thành 0, bộ nhớ đệm đầu ra sẽ bị tắt. Bạn cũng có thể sử dụng phép thuật và để xóa các mục lớn khỏi bộ nhớ lịch sử thư mụcLịch sử các thư mục đã truy cập của bạn được lưu trong danh sách chung _dh và lệnh ma thuật có thể được sử dụng để đi đến bất kỳ mục nào trong danh sách đó. Lệnh cho phép bạn xem lịch sử này. Thực hiện ipython --matplotlib qt41 để thuận tiện xem lịch sử thư mục Dấu ngoặc đơn và dấu ngoặc kép tự độngCác tính năng này được điều chỉnh từ LazyPython của Nathan Gray. Chúng có nghĩa là cho phép gõ ít hơn cho các tình huống phổ biến các đối tượng có thể gọi được (i. e. hàm, phương thức, v.v.) có thể được gọi như thế này (chú ý dấu phẩy giữa các đối số) ipython --matplotlib qt3 Ghi chú Tính năng này được tắt theo mặc định. Để kích hoạt nó, hãy sử dụng lệnh ma thuật ipython --matplotlib qt42. Tuy nhiên, các lệnh bên dưới với các tiền tố đặc biệt sẽ luôn hoạt động Bạn có thể buộc các dấu ngoặc đơn tự động bằng cách sử dụng '/' làm ký tự đầu tiên của một dòng. Ví dụ ipython --matplotlib qt4 Lưu ý rằng '/' PHẢI là ký tự đầu tiên trên dòng. Điều này sẽ không hoạt động ipython --matplotlib qt5 Trong hầu hết các trường hợp, thuật toán tự động sẽ hoạt động, vì vậy bạn hiếm khi cần gọi /. Một ngoại lệ đáng chú ý là nếu bạn đang cố gọi một hàm có danh sách các bộ dữ liệu làm đối số (dấu ngoặc đơn sẽ gây nhầm lẫn cho IPython) ipython --matplotlib qt6 nhưng điều này sẽ làm việc ipython --matplotlib qt7 IPython cho bạn biết rằng nó đã thay đổi dòng lệnh của bạn bằng cách hiển thị dòng lệnh mới trước ipython --matplotlib qt43 Bạn có thể buộc trích dẫn tự động các đối số của hàm bằng cách sử dụng ipython --matplotlib qt44 hoặc ipython --matplotlib qt45 làm ký tự đầu tiên của một dòng. Ví dụ ipython --matplotlib qt8 Nếu bạn sử dụng ';', toàn bộ đối số được trích dẫn dưới dạng một chuỗi, trong khi ',' phân tách trên khoảng trắng ipython --matplotlib qt9 Lưu ý rằng ',' hoặc ';' PHẢI là ký tự đầu tiên trên dòng. Điều này sẽ không hoạt động In [8]: %cd /home/fperez00 IPython làm môi trường Python mặc định của bạnPython tôn vinh biến môi trường và sẽ thực thi khi khởi động tệp được tham chiếu bởi biến này. Nếu bạn đặt đoạn mã sau vào cuối tệp đó, thì IPython sẽ là môi trường làm việc của bạn bất cứ khi nào bạn khởi động Python In [8]: %cd /home/fperez01 Cần có ipython --matplotlib qt47 để thoát khỏi Python khi nó kết thúc, nếu không, bạn sẽ quay lại dấu nhắc Python ipython --matplotlib qt48 bình thường Điều này có thể hữu ích cho các nhà phát triển quản lý nhiều phiên bản Python và không muốn có nhiều phiên bản IPython tương ứng. Lưu ý rằng trong chế độ này, không có cách nào để vượt qua bất kỳ tùy chọn dòng lệnh nào của IPython, vì chúng bị mắc kẹt trước bởi chính Python Nhúng IPythonBạn có thể bắt đầu phiên IPython thông thường với In [8]: %cd /home/fperez02 tại bất kỳ điểm nào trong chương trình của bạn. Điều này sẽ tải cấu hình IPython, tệp khởi động và mọi thứ, giống như đó là phiên IPython bình thường Cũng có thể nhúng trình bao IPython vào một không gian tên trong mã Python của bạn. Điều này cho phép bạn đánh giá động trạng thái mã của mình, vận hành với các biến của bạn, phân tích chúng, v.v. Tuy nhiên, xin lưu ý rằng bất kỳ thay đổi nào bạn thực hiện đối với các giá trị khi ở trong trình bao sẽ không lan truyền trở lại mã đang chạy, do đó, việc sửa đổi các giá trị của bạn là an toàn vì bạn sẽ không phá vỡ mã của mình theo những cách kỳ lạ khi làm như vậy Ghi chú Hiện tại, việc nhúng IPython không thể được thực hiện từ bên trong IPython. Chạy các mẫu mã bên dưới bên ngoài IPython Tính năng này cho phép bạn dễ dàng có một môi trường python đầy đủ chức năng để thực hiện nội quan đối tượng ở bất kỳ đâu trong mã của bạn bằng một lệnh gọi hàm đơn giản. Trong một số trường hợp, một câu lệnh in đơn giản là đủ, nhưng nếu bạn cần phân tích chi tiết hơn về một đoạn mã thì tính năng này có thể rất có giá trị Nó cũng có thể hữu ích trong các tình huống tính toán khoa học, nơi thông thường cần thực hiện một số phần tự động, tính toán chuyên sâu và sau đó dừng lại để xem dữ liệu, sơ đồ, v.v. Mở một phiên bản IPython sẽ cung cấp cho bạn toàn quyền truy cập vào dữ liệu và chức năng của mình, đồng thời bạn có thể tiếp tục thực thi chương trình sau khi hoàn thành phần tương tác (có thể dừng lại sau, nhiều lần nếu cần) Đoạn mã sau đây là mức tối thiểu bạn cần đưa vào chương trình Python của mình để mã này hoạt động (các ví dụ chi tiết sẽ có sau) In [8]: %cd /home/fperez03 Bạn cũng có thể nhúng hạt nhân IPython, để sử dụng với qtconsole, v.v. thông qua ipython --matplotlib qt49. Chức năng này sẽ hoạt động theo cùng một cách, nhưng bạn có thể kết nối một giao diện người dùng bên ngoài ( ipython --matplotlib qt50 hoặc ipython --matplotlib qt51), thay vì tương tác với nó trong thiết bị đầu cuối You can run embedded instances even in code which is itself being run at the IPython interactive prompt with ‘%run Bạn cũng có thể có nhiều phiên bản IPython trong chương trình của mình và mở chúng một cách riêng biệt, chẳng hạn như với các tùy chọn khác nhau để trình bày dữ liệu. Nếu bạn đóng và mở cùng một phiên bản nhiều lần, bộ đếm dấu nhắc của nó chỉ đơn giản là tiếp tục từ mỗi lần thực hiện này sang lần thực hiện tiếp theo Vui lòng xem các tài liệu trong mô-đun ipython --matplotlib qt52 để biết thêm chi tiết về việc sử dụng hệ thống này Tệp mẫu sau đây minh họa cách sử dụng chức năng nhúng được cung cấp trong thư mục ví dụ dưới dạng embed_class_long. py. Nó nên được khá tự giải thích In [8]: %cd /home/fperez04 Khi bạn hiểu cách thức hoạt động của hệ thống, bạn có thể sử dụng các đoạn mã sau trong chương trình của mình, sẵn sàng để cắt và dán In [8]: %cd /home/fperez05 Sử dụng trình gỡ lỗi Python (pdb)Chạy toàn bộ chương trình qua pdbpdb, trình gỡ lỗi Python, là một trình gỡ lỗi tương tác mạnh mẽ cho phép bạn lướt qua mã, đặt điểm dừng, xem các biến, v.v. IPython giúp dễ dàng bắt đầu bất kỳ tập lệnh nào dưới sự kiểm soát của pdb, bất kể bạn có gói nó vào hàm 'main()' hay không. Đối với điều này, chỉ cần gõ ipython --matplotlib qt53 tại dấu nhắc IPython. Xem tài liệu của lệnh để biết thêm chi tiết, bao gồm cách kiểm soát nơi pdb sẽ dừng thực thi trước Để biết thêm thông tin về việc sử dụng trình gỡ lỗi pdb, hãy xem trong tài liệu Python Gỡ lỗi sau khi chếtTruy cập trình gỡ lỗi khi xảy ra ngoại lệ có thể cực kỳ hữu ích để tìm ra nguồn gốc của các lỗi tinh vi, bởi vì pdb mở ra tại điểm trong mã của bạn đã kích hoạt ngoại lệ và trong khi chương trình của bạn ở điểm 'chết', tất cả Bạn có thể sử dụng phép thuật sau khi một ngoại lệ xảy ra để bắt đầu gỡ lỗi sau khi chết. IPython cũng có thể gọi trình gỡ lỗi mỗi khi mã của bạn kích hoạt một ngoại lệ chưa được phát hiện. Tính năng này có thể được bật bằng lệnh ma thuật hoặc bạn có thể khởi động IPython bằng tùy chọn ipython --matplotlib qt57 Đối với trình gỡ lỗi hậu kỳ trong các chương trình của bạn bên ngoài IPython, hãy đặt các dòng sau vào đầu quy trình 'chính' của bạn In [8]: %cd /home/fperez06 Từ khóa chế độ có thể là 'Verbose' hoặc 'Plain', tương ứng cung cấp các truy vết rất chi tiết hoặc bình thường. Từ khóa color_scheme có thể là một trong số ‘NoColor’, ‘Linux’ (mặc định) hoặc ‘LightBG’. Đây là những tùy chọn tương tự có thể được đặt trong IPython với ipython --matplotlib qt58 và ipython --matplotlib qt59 Điều này sẽ cung cấp cho bất kỳ chương trình nào của bạn các dấu vết chi tiết, có màu với lệnh gọi pdb tự động Dán mã bắt đầu bằng lời nhắc Python hoặc IPythonIPython đủ thông minh để lọc ra các lời nhắc đầu vào, có thể là lời nhắc Python đơn giản ( ipython --matplotlib qt48 và ipython --matplotlib qt61) hoặc lời nhắc IPython ( ipython --matplotlib qt62 và ipython --matplotlib qt63). Do đó, bạn có thể sao chép và dán từ các phiên tương tác hiện có mà không phải lo lắng Sau đây là 'ảnh chụp màn hình' về cách mọi thứ hoạt động, sao chép một ví dụ từ hướng dẫn Python tiêu chuẩn In [8]: %cd /home/fperez07 Và dán từ các phiên IPython hoạt động tốt như nhau In [8]: %cd /home/fperez08 Hỗ trợ vòng lặp sự kiện GUIMới trong phiên bản 0. 11. Phép thuật ipython --matplotlib qt64 và. IPython hỗ trợ tuyệt vời để làm việc tương tác với bộ công cụ Giao diện người dùng đồ họa (GUI), chẳng hạn như wxPython, PyQt4/PySide, PyGTK và Tk. Điều này được triển khai bằng cách sử dụng hook ________ 966 tích hợp sẵn của Python. Việc triển khai này cực kỳ mạnh mẽ so với phiên bản dựa trên luồng trước đây của chúng tôi. Ưu điểm của việc này là
Đối với người dùng, kích hoạt tích hợp vòng lặp sự kiện GUI rất đơn giản. Bạn đơn giản sử dụng phép thuật như sau In [8]: %cd /home/fperez09 Không có đối số, ipython --matplotlib qt64 xóa tất cả hỗ trợ GUI. Các đối số ipython --matplotlib qt70 hợp lệ là ipython --matplotlib qt71, ipython --matplotlib qt72, ipython --matplotlib qt73 và ipython --matplotlib qt74 Vì vậy, để sử dụng wxPython một cách tương tác và tạo một đối tượng ipython --matplotlib qt75 đang chạy, hãy làm In [8]: %cd /home/fperez0 Bạn cũng có thể bắt đầu IPython bằng một vòng lặp sự kiện được thiết lập bằng cờ ipython --matplotlib qt76 In [8]: %cd /home/fperez1 Để biết thông tin về tích hợp matplotlib của IPython (và chế độ ipython --matplotlib qt77), hãy xem Đối với các nhà phát triển muốn sử dụng tích hợp vòng lặp sự kiện GUI của IPython ở dạng thư viện, các khả năng này được hiển thị ở dạng thư viện trong và các mô-đun. Các nhà phát triển quan tâm nên xem các tài liệu mô-đun để biết thêm thông tin, nhưng có một số điểm cần được đề cập ở đây Đầu tiên, cách tiếp cận ipython --matplotlib qt66 chỉ hoạt động trong cài đặt dòng lệnh khi đường đọc được kích hoạt. Việc tích hợp với các vòng lặp sự kiện khác nhau được xử lý hơi khác (và đơn giản hơn) khi sử dụng kernel độc lập, như trong qtconsole và notebook Thứ hai, khi sử dụng phương pháp ipython --matplotlib qt66, ứng dụng GUI sẽ không bắt đầu vòng lặp sự kiện của nó. Thay vào đó, tất cả những điều này được xử lý bởi ipython --matplotlib qt66. Điều này có nghĩa là các ứng dụng được sử dụng cả trong IPython và dưới dạng các ứng dụng độc lập cần phải có mã đặc biệt để phát hiện cách ứng dụng đang chạy. Chúng tôi thực sự khuyên bạn nên sử dụng hỗ trợ của IPython cho việc này. Vì các chi tiết khác nhau một chút giữa các bộ công cụ, chúng tôi chỉ cho bạn các ví dụ khác nhau trong thư mục nguồn của chúng tôi ipython --matplotlib qt83 thể hiện các khả năng này Thứ ba, không giống như các phiên bản trước của IPython, chúng tôi không còn “chiếm quyền điều khiển” (thay thế chúng bằng no-op) các vòng lặp sự kiện. Điều này được thực hiện để cho phép các ứng dụng thực sự cần chạy các vòng lặp sự kiện thực để làm như vậy. Điều này thường cần thiết để xử lý các sự kiện đang chờ xử lý tại các điểm quan trọng Cuối cùng, chúng tôi cũng có một số ví dụ trong thư mục nguồn của chúng tôi ipython --matplotlib qt83 thể hiện những khả năng này PyQt và PySideKhi bạn sử dụng ipython --matplotlib qt85 hoặc ipython --matplotlib qt86, IPython có thể hoạt động với PyQt4 hoặc PySide. Có ba tùy chọn để cấu hình ở đây, vì PyQt4 có hai API cho QString và QVariant. v1, là mặc định trên Python 2 và v2 tự nhiên hơn, là API duy nhất được PySide hỗ trợ. v2 cũng là mặc định cho PyQt4 trên Python 3. Mã của IPython cho QtConsole sử dụng v2, nhưng bạn vẫn có thể sử dụng bất kỳ giao diện nào trong mã của mình vì giao diện người dùng Qt đang ở một quy trình khác Mặc định sẽ là nhập PyQt4 mà không cần cấu hình API, do đó phù hợp với những gì mà hầu hết các ứng dụng mong đợi. Nó sẽ quay trở lại PySide nếu PyQt4 không khả dụng Nếu được chỉ định, IPython sẽ tôn trọng biến môi trường ipython --matplotlib qt87 được sử dụng bởi ETS. ETS 4. 0 cũng hoạt động với cả PyQt4 và PySide, nhưng nó yêu cầu PyQt4 sử dụng API v2 của nó. Vì vậy, nếu ipython --matplotlib qt88 PySide sẽ được sử dụng và nếu ipython --matplotlib qt89 thì PyQt4 sẽ được sử dụng với API v2 cho QString và QVariant, vì vậy các mã ETS như MayaVi cũng sẽ hoạt động với IPython Nếu bạn khởi chạy IPython ở chế độ matplotlib với ipython --matplotlib qt90, thì IPython sẽ hỏi matplotlib thư viện Qt nào sẽ sử dụng (chỉ khi QT_API không được đặt), thông qua phần phụ trợ. qt4’ rcParam. Nếu matplotlib là phiên bản 1. 0. 1 trở lên, thì IPython sẽ luôn sử dụng PyQt4 mà không cần đặt API v2, vì cả PyQt và PySide v2 đều không hoạt động Cảnh báo Lưu ý rằng điều này có nghĩa là để ETS 4 hoạt động với PyQt4, ipython --matplotlib qt87 phải được đặt để hoạt động với tích hợp qt của IPython, vì nếu không thì PyQt4 sẽ được tải ở chế độ không tương thích Điều đó cũng có nghĩa là bạn không được đặt ipython --matplotlib qt87 nếu muốn sử dụng ipython --matplotlib qt85 với mã yêu cầu API PyQt4 v1 Vẽ đồ thị với matplotlibmatplotlib cung cấp đồ thị 2D và 3D chất lượng cao cho Python. matplotlib có thể tạo các ô trên màn hình bằng nhiều bộ công cụ GUI, bao gồm Tk, PyGTK, PyQt4 và wxPython. Nó cũng cung cấp một số lệnh hữu ích cho tính toán khoa học, tất cả đều có cú pháp tương thích với cú pháp của chương trình Matlab phổ biến Để bắt đầu IPython với hỗ trợ matplotlib, hãy sử dụng khóa chuyển đổi ipython --matplotlib qt94. Nếu IPython đã chạy, bạn có thể chạy phép thuật. Nếu không có đối số nào được đưa ra, IPython sẽ tự động phát hiện lựa chọn phụ trợ matplotlib của bạn. Bạn cũng có thể yêu cầu một chương trình phụ trợ cụ thể với ipython --matplotlib qt96, trong đó ipython --matplotlib qt97 phải là một trong. 'tk', 'qt', 'wx', 'gtk', 'osx'. Trong sổ ghi chép web và bảng điều khiển Qt, 'inline' cũng là một giá trị phụ trợ hợp lệ, tạo ra các số liệu tĩnh được đặt bên trong cửa sổ ứng dụng thay vì các số liệu tương tác của matplotlib nằm trong các cửa sổ riêng biệt Trình diễn tương tác với IPythonIPython cung cấp một hệ thống cơ bản để chạy các tập lệnh tương tác theo từng phần, hữu ích khi trình bày mã cho khán giả. Một vài thẻ được nhúng trong các nhận xét (để tập lệnh duy trì mã Python hợp lệ) chia tệp thành các khối riêng biệt và bản trình diễn có thể chạy từng khối một, với in IPython (có đánh dấu cú pháp) khối trước khi thực thi khối đó và . Không gian tên tương tác được cập nhật sau mỗi khối được chạy với nội dung của không gian tên demo Điều này cho phép bạn hiển thị một đoạn mã, chạy nó và sau đó thực thi các lệnh tương tác dựa trên các biến vừa tạo. Khi bạn muốn tiếp tục, bạn chỉ cần thực hiện khối tiếp theo của bản demo. Danh sách sau đây hiển thị đánh dấu cần thiết để chia tập lệnh thành các phần để thực thi dưới dạng bản trình diễn In [8]: %cd /home/fperez2 Để chạy một tệp dưới dạng bản demo, trước tiên bạn phải tạo một đối tượng Demo từ nó. Nếu tệp được đặt tên là myscript. py, đoạn mã sau sẽ tạo một bản demo In [8]: %cd /home/fperez3 Thao tác này tạo đối tượng mydemo, có các khối mà bạn chạy từng khối một bằng cách gọi đối tượng mà không có đối số. Rồi gọi nó chạy từng bước demo In [8]: %cd /home/fperez4 Các đối tượng demo có thể được khởi động lại, bạn có thể tiến hoặc lùi khi bỏ qua các khối, thực hiện lại khối cuối cùng, v.v. Xem mô-đun và lớp để biết chi tiết Hạn chế. Những bản trình diễn này được giới hạn ở những mục đích sử dụng khá đơn giản. Đặc biệt, bạn không thể chia nhỏ các phần trong mã thụt lề (vòng lặp, câu lệnh if, định nghĩa hàm, v.v. ) Hỗ trợ một cái gì đó như thế này về cơ bản sẽ yêu cầu theo dõi trạng thái thực thi bên trong của trình thông dịch Python, do đó, chỉ các phân chia cấp cao nhất mới được phép. Nếu bạn muốn có thể mở một phiên bản IPython tại một điểm tùy ý trong chương trình, bạn có thể sử dụng IPython's |