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

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/fperez
5 hoặc
In [8]: %cd
/home/fperez
6. Thư mục hồ sơ trông giống như
In [8]: %cd
/home/fperez
7 và thường được cài đặt trong thư mục, mặc định là
In [8]: %cd
/home/fperez
9. Đố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 loop
0 phân giải thành
In [10]: %%timeit x = range[10000]
    ...: min[x]
    ...: max[x]
    ...:
1000 loops, best of 3: 438 us per loop
1 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 loop
2 [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 loop
3 để đọ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/fperez
0

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ác

IPython 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 Windows

Thậ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 loop
5. 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 loop
6

Hệ thống lệnh ma thuật

IPython 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 loop
7 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/fperez
60 được gọi là đối số dòng và khối có
In [8]: %cd
/home/fperez
61 và
In [8]: %cd
/home/fperez
62 đượ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/fperez
64 đơ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/fperez
65 để chuyển đến thư mục 'mydir'

In [8]: %cd
/home/fperez
6

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 loop
7 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/fperez
64 rõ ràng để sử dụng nó

In [8]: %cd
/home/fperez
4

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/fperez
68 [trong trường hợp cụ thể này trả về kết quả của
In [8]: %cd
/home/fperez
69 dưới dạng danh sách python]. Xem để biết thêm thông tin

Nhập

In [8]: %cd
/home/fperez
40 để 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/fperez
41 [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ổ sung

Truy cập vào phần trợ giúp tiêu chuẩn của Python

Chỉ cần gõ

In [8]: %cd
/home/fperez
43 để 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/fperez
44 để biết thông tin về một đối tượng nhất định hoặc
In [8]: %cd
/home/fperez
45 để 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 động

Nhập

In [8]: %cd
/home/fperez
46 hoặc
In [8]: %cd
/home/fperez
47 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/fperez
48 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/fperez
49 hoặc
In [8]: %cd
/home/fperez
60 để 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

  • . In [hoặc chạy qua máy nhắn tin nếu quá dài] chuỗi tài liệu cho một đối tượng. Nếu đối tượng đã cho là một lớp, nó sẽ in cả tài liệu về lớp và hàm tạo
  • . In chữ ký cuộc gọi cho bất kỳ đối tượng có thể gọi nào. Nếu đối tượng là một lớp, in thông tin hàm tạo
  • . In [hoặc chạy qua máy nhắn tin nếu quá dài] mã nguồn của một đối tượng
  • . Hiển thị toàn bộ tệp nguồn nơi một đối tượng được xác định qua máy nhắn tin, mở nó ở dòng bắt đầu định nghĩa đối tượng
  • /. Các chức năng này cung cấp thông tin về số nhận dạng mà bạn đã xác định một cách tương tác [không phải những thứ bạn đã tải hoặc xác định trong tệp cấu hình của mình]. %who chỉ in danh sách các mã định danh và %whos in một bảng với một số chi tiết cơ bản về từng mã định danh

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 loop
11, 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 loop
12

Các tính năng dựa trên dòng đọc

Cá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ệnh

Bấ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ệnh

IPython 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

  1. Bắt đầu nhập, sau đó sử dụng các phím mũi tên lên và xuống [hoặc
    In [10]: %%timeit x = range[10000]
        ...: min[x]
        ...: max[x]
        ...:
    1000 loops, best of 3: 438 us per loop
    
    13 và
    In [10]: %%timeit x = range[10000]
        ...: min[x]
        ...: max[x]
        ...:
    1000 loops, best of 3: 438 us per loop
    
    14] để chỉ tìm kiếm trong các mục lịch sử khớp với những gì bạn đã nhập cho đến nay
  2. Lần truy cập
    In [10]: %%timeit x = range[10000]
        ...: min[x]
        ...: max[x]
        ...:
    1000 loops, best of 3: 438 us per loop
    
    15. để mở một lời nhắc tìm kiếm. Bắt đầu nhập và hệ thống tìm kiếm lịch sử của bạn để tìm các dòng có chứa những gì bạn đã nhập cho đến nay, hoàn thành càng nhiều càng tốt

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 loop
16

tự động

IPython 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 loop
17 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 loop
18 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 loop
19 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/fperez
6

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/fperez
5 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 loop
21

Tùy chỉnh hành vi đường đọc

Tấ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 loop
19. 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

  • In [10]: %%timeit x = range[10000]
        ...: min[x]
        ...: max[x]
        ...:
    1000 loops, best of 3: 438 us per loop
    
    23. cái này chứa một danh sách các chuỗi sẽ được thực thi thông qua một dòng đọc. lệnh parse_and_bind[]. Có thể tìm thấy cú pháp cho các lệnh hợp lệ thuộc loại này bằng cách đọc tài liệu về thư viện đường dẫn GNU, vì các lệnh này thuộc loại mà đường đọc chấp nhận trong tệp cấu hình của nó
  • In [10]: %%timeit x = range[10000]
        ...: min[x]
        ...: max[x]
        ...:
    1000 loops, best of 3: 438 us per loop
    
    24. một chuỗi ký tự sẽ bị xóa khỏi danh sách dấu phân cách từ mặc định được sử dụng bởi dòng đọc, để việc hoàn thành có thể được thực hiện trên các chuỗi chứa chúng. Không thay đổi giá trị mặc định trừ khi bạn biết mình đang làm gì

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ục

Bạ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 loop
25 [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 loop
1

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]

  • [trên. ] ghi đè log_name hiện có
  • [sao lưu. ] đổi tên [nếu tồn tại] thành log_name~ và bắt đầu log_name
  • [ nối thêm. ] tốt, điều đó nói lên điều đó
  • [quay. ] tạo nhật ký luân phiên log_name. 1~, log_name. 2~, v.v.

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ống

Bấ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 qt
00 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ật

Bạ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 qt
01. 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 qt
02 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 qt
04] hoặc lệnh ma thuật mà không cần gán. [Tuy nhiên, lệnh
ipython --matplotlib qt
06 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 qt
07 hoặc
ipython --matplotlib qt
08 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 qt
09 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 loop
2

Đố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 qt
0

Lưu ý rằng

ipython --matplotlib qt
10 được sử dụng để đại diện cho một
ipython --matplotlib qt
11 theo nghĩa đen

Bí danh lệnh hệ thống

Hà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 qt
13 định nghĩa 'alias_name' là bí danh cho 'cmd'

Sau đó, gõ

ipython --matplotlib qt
14 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 qt
1

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 đệ quy

Mô-đ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 qt
2

Bản in theo dõi ngoại lệ dài dòng và có màu

IPython 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ào

IPython 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 qt
20 đư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

  • _i, _ii, _iii. lưu trữ các đầu vào trước đó, trước đó tiếp theo và tiếp theo-tiếp theo trước đó
  • Trong, _ih. một danh sách tất cả các đầu vào; . Nếu bạn ghi đè In bằng một biến của riêng mình, bạn có thể thực hiện lại việc gán cho danh sách nội bộ bằng một
    ipython --matplotlib qt
    
    21 đơn giản

Additionally, global variables named _i are dynamically created [ being the prompt counter], so

ipython --matplotlib qt
22.

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 qt
23,
ipython --matplotlib qt
24 và
ipython --matplotlib qt
25

Đ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 qt
29. Đ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

  • [_] [một dấu gạch dưới]. lưu trữ đầu ra trước đó, như trình thông dịch mặc định của Python
  • [__] [hai dấu gạch dưới]. tiếp theo trước đó
  • [___] [ba dấu gạch dưới]. kế tiếp kế trước

Additionally, global variables named _ are dynamically created [ being the prompt counter], such that the result of output is always available as _ [don’t use the angle brackets, just the number, e.g.

ipython --matplotlib qt
31].

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 qt
32,
ipython --matplotlib qt
33 hoặc
ipython --matplotlib qt
34. 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 qt
35 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 qt
36. 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ục

Lị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 qt
41 để thuận tiện xem lịch sử thư mục

Dấu ngoặc đơn và dấu ngoặc kép tự động

Cá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 qt
3

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 qt
42. 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 qt
4

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 qt
5

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 qt
6

nhưng điều này sẽ làm việc

ipython --matplotlib qt
7

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 qt
43

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 qt
44 hoặc
ipython --matplotlib qt
45 làm ký tự đầu tiên của một dòng. Ví dụ

ipython --matplotlib qt
8

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 qt
9

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/fperez
00

IPython làm môi trường Python mặc định của bạn

Python 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/fperez
01

Cần có

ipython --matplotlib qt
47 để 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 qt
48 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 IPython

Bạn có thể bắt đầu phiên IPython thông thường với

In [8]: %cd
/home/fperez
02

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/fperez
03

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 qt
49. 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 qt
50 hoặc
ipython --matplotlib qt
51], 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 ’. Since it’s easy to get lost as to where you are [in your top-level IPython or in your embedded one], it’s a good idea in such cases to set the in/out prompts to something different for the embedded instances. The code examples below illustrate this.

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 qt
52 để 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/fperez
04

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/fperez
05

Sử dụng trình gỡ lỗi Python [pdb]

Chạy toàn bộ chương trình qua pdb

pdb, 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 qt
53 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ết

Truy 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 qt
57

Đố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/fperez
06

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 qt
58 và
ipython --matplotlib qt
59

Đ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 IPython

IPython đủ 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 qt
48 và
ipython --matplotlib qt
61] hoặc lời nhắc IPython [
ipython --matplotlib qt
62 và
ipython --matplotlib qt
63]. 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/fperez
07

Và dán từ các phiên IPython hoạt động tốt như nhau

In [8]: %cd
/home/fperez
08

Hỗ trợ vòng lặp sự kiện GUI

Mới trong phiên bản 0. 11. Phép thuật

ipython --matplotlib qt
64 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à

  • GUI có thể được bật và tắt động khi chạy
  • GUI hoạt động có thể được chuyển động khi chạy
  • Trong một số trường hợp, nhiều GUI có thể chạy đồng thời mà không gặp vấn đề gì
  • Có một API dành cho nhà phát triển để tùy chỉnh tất cả những thứ này

Đố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/fperez
09

Không có đối số,

ipython --matplotlib qt
64 xóa tất cả hỗ trợ GUI. Các đối số
ipython --matplotlib qt
70 hợp lệ là
ipython --matplotlib qt
71,
ipython --matplotlib qt
72,
ipython --matplotlib qt
73 và
ipython --matplotlib qt
74

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 qt
75 đang chạy, hãy làm

In [8]: %cd
/home/fperez
0

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 qt
76

In [8]: %cd
/home/fperez
1

Để biết thông tin về tích hợp matplotlib của IPython [và chế độ

ipython --matplotlib qt
77], 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 qt
66 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 qt
66, ứ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 qt
66. Đ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 qt
83 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 qt
83 thể hiện những khả năng này

PyQt và PySide

Khi bạn sử dụng

ipython --matplotlib qt
85 hoặc
ipython --matplotlib qt
86, 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 qt
87 đượ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 qt
88 PySide sẽ được sử dụng và nếu
ipython --matplotlib qt
89 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 qt
90, 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 qt
87 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 qt
87 nếu muốn sử dụng
ipython --matplotlib qt
85 với mã yêu cầu API PyQt4 v1

Vẽ đồ thị với matplotlib

matplotlib 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 qt
94. 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 qt
96, trong đó
ipython --matplotlib qt
97 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 IPython

IPython 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/fperez
2

Để 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/fperez
3

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/fperez
4

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

Chủ Đề