Pourquoi ne puis-je pas définir de nouvelles fonctions lorsque j'exécute pdb
?
Par exemple, prenez myscript.py:
#!/gpfs0/export/opt/anaconda-2.3.0/bin/python
print "Hello World"
print "I see you"
Si je lance python -m pdb myscript.py
et essaie de définir de manière interactive une nouvelle fonction:
def foo():
Je reçois l'erreur:
*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)
Pourquoi est-ce?
3 réponses
Vous pouvez définir votre fonction dans une instruction d'une ligne en utilisant ;
au lieu de l'indentation, comme ceci:
(Pdb) def foo(): print 'Hello world'; print 'I see you'
(Pdb) foo()
Hello world
I see you
J'ai pu importer des modules python à partir de la ligne de commande pdb
.
Si vous pouvez importer des modules python, vous devriez pouvoir définir vos fonctions dans un fichier et simplement importer le fichier.
Je ne pense pas qu'il supporte l'entrée multi-ligne. Vous pouvez contourner ce problème en créant une session interactive à partir de pdb. Une fois que vous avez terminé la session interactive, quittez-la avec Ctrl + D.
>>> import pdb
>>> pdb.set_trace()
(Pdb) !import code; code.interact(local=vars())
(InteractiveConsole)
In : def foo():
...: print 'hello in pdb'
...:
In : # use ctrl+d here to return to pdb shell...
(Pdb) foo()
hello in pdb
Questions connexes
Questions liées
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.