標籤:

pycharm 如何程序運行後,仍可查看變數值?(非Debug mode, 因為debug運行太慢)

python pycharm


pycharm+ipython(現在叫jupyter notebook了) 能完美解決這個問題。功能甚至比matlab更強大。

作為曾經的matlab重度使用者,轉到Python之後一直不適應,斷點什麼的實在是太麻煩了。。。matlab的workspace記住所有中間變數,一旦出錯隨時調用中間變數查看debug方便的多。

pycharm也能有同樣的功能,先安裝玩pycharm,然後安裝jupyter notebook。 這時候pycharm裡面的python console自動就會被替換成ipython 的console。

運行python 程序時,不要用菜單欄里的run,在當前的console 下面敲入

run 你的python 文件名

運行debug的小腳本,比如可視化幾個變數之類的小腳本時可以用

run -i 你的python 文件名

-i的意思是 源文件就在當前IPython的名字空間下運行而不是在一個新的名字空間中 , 也就是和MATLAB一樣當成腳本運行。 這時就能直接調用workspace裡面的變數了。

結果如圖:

右邊欄就是全部的變數,和MATLAB的workspace類似。對面向對象的支持比matlab還好。

MATLAB裡面的ans 和 Python console 里的 _ 對應。

上下箭頭同樣是查看歷史命令。

另外,console也支持自動補全。同時因為變數的類型已經知道,自動補全的結果比在editor裡面寫代碼時要準確得多。

————————

2017年10月29號更新:

補充幾個pycharm自己常用的看變數思路。

  1. 設置斷點之後debug運行,程序運行到斷點掛起,這時選擇console窗口旁邊的show python prompt可以直接在ipython裡面看變數,運行腳本,什麼的

2. 斷點可以設條件,這樣就不用辛苦的在代碼裡面加判斷語句了


pycharm這個功能藏得很隱蔽,不過確實經常會有這個需求。我也是找了好久才發現。

在菜單欄里,選擇項目的下拉菜單里選擇 Edit Configuration

在對應項目的設置里勾選上 Show command line afterwards

就OK了。

程序執行後會保持在 python shell 的狀態,可以對程序中的數據進行調試。

關於 PyCharm,之前還寫過一篇:喏,你們要的 PyCharm 快速上手指南 - 知乎專欄,轉需。

其中,兩個重要的配置:編碼和 python 路徑,開發前最好確認下。一個實用的功能:斷點調試,用好了可以節省很多時間。


加斷點

https://www.jetbrains.com/pycharm/help/breakpoints.html


那叫debug


Pycharm 不錯,但最近在用 [Rodeo](http://rodeo.yhat.com) 這個 IDE, 用起來和 RStudio 非常像,連默認的快捷鍵都一樣,當然也支持程序運行後仍可以查看變數值這個需求


Run ur script in python shell

Python 2:

execfile("pwd.py")

Python 3:

exec(open("pwd.py").read())


pdb大法好


1. 樓主可以試試spyder,界面簡陋了點

2.可以分段在ipython console裡面運行(如果裝了的話pycharm可以直接調用,另外可以把快捷鍵設置一下比如f9 是在Python consloe運行選中..


import pdb

pdb.set_trace()

出現斷點,隨意查看之前出現的變數值,dir(變數)查看變數用法。

n 執行下一條........


想要Debug方便,必須是Spyder啊,這是它的強項。Spyder的界面和Matlab很像,可以對程序里的變數進行監視。

圖中的標記就是變數監視窗口,就連位置都和Matlab的一樣。

另外,Spyder的Debug功能也不錯,設斷點、單步調試···這些該有的都有,而且用戶體驗挺好的。

當然,Pycharm的功能也是異常強大,而且顏值超過Spyder,所以建議題主用Pycharm寫代碼,用Spyder來調試程序。


推薦閱讀:

python對變數賦值為什麼會出現以下的情況?
在同一台電腦下如何進行 Python 2 與 3 的切換?
python3是如何處理字元異常的?
python3.5 pip 安裝lxml出錯?
python3如何查找list1中有而list2中沒有的元素??

TAG:Python | Python3x |