2009-06-24 5 views
3

Je souhaite désactiver "return" pour l'impression de tout objet retourné dans shell Python.Désactiver l'instruction de retour Python de l'objet d'impression retourné

Un script par exemple python exemple test.py ressemble:

def func1(): 
    list = [1,2,3,4,5] 
    print list 
    return list 

Si je ne suit:

python -i test.py 
>>>func1() 

Cela me donne toujours deux impressions sur shell python. Je veux juste imprimer et obtenir l'objet retourné.

Répondre

6

Il est impossible de configurer le shell Python pour supprimer les valeurs de retour des appels de fonction. Toutefois, si vous affectez la valeur renvoyée à une variable, elle ne sera pas imprimée. Par exemple, si vous dites que

rv = func1() 

au lieu de

func1() 

alors rien ne sera imprimé.

10

La raison de l'impression n'est pas l'instruction return, mais le shell lui-même. Le shell imprime tout objet résultant d'une opération sur la ligne de commande.

Cest la raison pour laquelle cela se produit:

>>> a = 'hallo' 
>>> a 
'hallo' 

La dernière instruction a la valeur d'un résultat en (car il n'est pas affecté à rien d'autre). Donc, il est imprimé par la coquille.

Le problème n'est pas "retour" mais le shell lui-même. Mais ce n'est pas un problème, puisque le code de travail normaly n'est pas exécuté dans le shell interactif (donc, rien n'est imprimé). Donc, pas de problème.

+0

+1: Redresser la « coquille » par rapport à la confusion Python –

5

En général, imprimer à partir d'une fonction, puis renvoyer la valeur, n'est pas une bonne idée. En fait, l'impression dans une fonction est le plus souvent une mauvaise chose. Le plus souvent, les fonctions sont appelées plusieurs fois dans un programme. Parfois, vous voulez imprimer la valeur, le plus souvent vous voulez juste utiliser ces données pour quelque chose.

Laissez la fonction retourner simplement sa valeur. Laissez le code qui a appelé la fonction l'imprimer, si c'est la bonne chose à faire.

0

Si vous ne voulez pas montrer la valeur, puis attribuez-lui le résultat de la fonction à une variable:

H:\test>copy con test.py 
def func1(): 
    list = [1,2,3,4,5] 
    print list 
    return list 
^Z 
     1 file(s) copied. 

H:\test>python -i test.py 
>>> func1() 
[1, 2, 3, 4, 5] 
[1, 2, 3, 4, 5] 
>>> x = func1() # assign result to a variable to suppress auto printout 
[1, 2, 3, 4, 5] 
>>> 
Questions connexes