2013-11-27 16 views
11

Czy istnieje jakiś odpowiednik from __future__ import print_function, który przesyła dalej instrukcję print z python 2.x?z poprzedniego importu print_statement

Dostępna jest także odpowiedź z magią, która pozwala mi drukować bez potrzeby otaczających paren podczas prototypowania.

+2

Jeśli chodzi tylko o interaktywną powłokę, w ogóle nie musisz "drukować", prawda? Po prostu napisz wyrażenie i zobaczysz rezultat. –

+1

Być może szukasz Rubiego –

+0

@tobias_k Tak, ale często lubię drukować informacje z funkcji lub drukować wiele kolejnych instrukcji z jednej komórki. – beardc

Odpowiedz

0

odpowiedź tymczasowa (A rozwiązanie, które nie wiąże się wiodącym / będą korzystne.): Ipython automatically calls obiekt jeśli linia rozpoczyna się /, nawet jeśli jest wcięty:

def f(): 
    /print 'foo' 

f() 

drukuje foo.

Edit:

  1. ipython posiada również funkcję magiczną %autocall że dobrze, automatycznie wywołuje funkcje, więc po zrobieniu %autocall 1, wpisując print 3 w ciągu aktów komórkowych takich jak print w Pythonie 2.x (choć to niestety nie działa w definicjach funkcji, takich jak /.

  2. Ponadto, ponieważ jest to funkcja, a nie oświadczenie, można po prostu zrobić p = print, więc później wywołania /p 'foo' dają niemalże podobne zachowanie (coś, na co miałem ochotę, ale nie było to wyraźnie określone w pytaniu).

1

Niektóre propozycja dla ipython

Definiowanie magii AUTOCALL na

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

Definiowanie magii AUTOCALL off

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

można utworzyć .config/ipython/profile_default/startup/auto plik print.py dla funkcji magicznych linii.