2013-11-27 17 views
11

Có một số tương đương với from __future__ import print_function chuyển tiếp câu hỏi print từ python 2.x không?từ quá khứ nhập print_statement

Câu trả lời liên quan đến một số phép thuật ipython cho phép tôi in mà không cần các xung quanh xung quanh trong quá trình tạo mẫu cũng được chấp nhận.

+2

Nếu nó chỉ dành cho trình bao tương tác, bạn không cần phải in 'in', phải không? Chỉ cần viết một biểu thức và bạn thấy kết quả. –

+1

Bạn có thể đang tìm kiếm Ruby –

+0

@tobias_k Có, nhưng thông thường tôi thích in thông tin từ các chức năng, hoặc in nhiều câu lệnh liên tiếp từ bên trong một ô đơn lẻ. – beardc

Trả lời

0

câu trả lời tạm thời (Một giải pháp mà không liên quan đến một / hàng đầu sẽ được ưu tiên.): IPython automatically calls một đối tượng nếu dòng bắt đầu với một /, ngay cả khi nó thụt vào:

def f(): 
    /print 'foo' 

f() 

in foo.

Edit:

  1. IPython cũng có một chức năng kỳ diệu %autocall rằng, tốt, tự động gọi chức năng, vì vậy sau khi làm %autocall 1, gõ print 3 trong một hành vi tế bào như print trong python 2.x (mặc dù không may này không hoạt động ở các định nghĩa chức năng như /.

  2. Ngoài ra, vì đây là hàm và không phải là câu lệnh, bạn chỉ cần làm p = print, vì vậy sau đó /p 'foo' cuộc gọi cung cấp cho bạn gần như pdb hành vi giống như (điều tôi đang thực hiện nhưng điều đó không được nêu rõ trong câu hỏi).

1

Một số gợi ý cho IPython

Xác định ma thuật với autocall trên

from IPython.core.magic import register_line_magic 
@register_line_magic 
def p(line): 
    print(line) 
p "Hi" 

Xác định ma thuật với autocall tắt

from IPython.core.magic import register_line_magic 
@register_line_magic 
def p(line): 
    print(eval(line)) 
%p "Again" 

Bạn có thể tạo một .config/ipython/profile_default/startup/auto tệp print.py cho bạn các hàm ma thuật dòng.

Các vấn đề liên quan