这个是很常见的一个问题,我想学习python,用什么编辑器呢?
eclipse+pydev?
IDLE?
vim?
每个人有自己的习惯,可能是自己琢磨的,也可能是前辈指导的,这里只分享自己孤陋寡闻琢磨的。
简单的小脚本,,直接vim或者IDLE上即可。
那请问怎么调试复杂一点儿的呢?还是用IDE吧,这里我没选eclipse,因为我讨厌它,个人情绪问题。
好吧,其实我是被PyCharm吸引住了,用的是社区版本。
参考:http://www.jetbrains.com/pycharm/
传送门:http://download.jetbrains.com/python/pycharm-professional-4.5.2.exe
咱们不花时间对比哪个IDE好,习惯是最好的方式。
1. 因为我习惯用python3,默认是utf-8的格式,所以做了调整:
File->Settings->File Encodings
设置Project Encoding: UTF-8
2. 试着用用吧,来调试一个小小的c/s脚本
c.py
#!/usr/local/bin/python3 # from multiprocessing.connection import Client if __name__ == "__main__": s_ip = ‘127.0.0.1‘ s_port = 15000 conn = Client((s_ip, s_port), authkey=b‘123456‘) print(‘Connect to: \n {0}:{1}‘.format(s_ip, s_port)) while True: try: x = conn.recv() print("GET: {0}".format(x)) except EOFError: print(‘Why did you do an EOF on me?‘) except KeyboardInterrupt: print(‘You cancelled the operation.‘) except WindowsError: print(‘远程主机强迫关闭了一个现有的连接。‘) break except Exception as err: print("[ERROR] {0}".format(err)) conn.close()
s.py
#!/usr/local/bin/python3 # from multiprocessing.connection import Listener import time s_ip = ‘0.0.0.0‘ s_port = 15000 srv = Listener((s_ip, s_port), authkey=b‘123456‘) print(‘listen on: \n {0}:{1}‘.format(s_ip, s_port)) def notify(x=10000, y=10000): time.sleep(2) for i in range(1,x): for j in range (1,y): try: x = ‘SEND: i={0},j={1}‘.format(i,j) print(x) conn.send(x) except EOFError: print(‘[error] EOFError‘) break if __name__ == "__main__": while True: conn = srv.accept() try: notify() except OSError: print("[ERROR] IP或者端口已经被占用?") conn.close()
先在s.py中下个断点:
右键菜单选择debug:
这是启动后在左下角的debugger和console窗口,注意左下角有个灰色的tools方框可以打开/关闭
3:Find 4:Run 5:Debug 6:TODO这类窗口。
好,现在以debug方式启动了s.py,接着我们直接启动c.py,同样是用鼠标右键的菜单:
脚本跑起来了,哔哔。。。++。。。到断点处停了下来,看图说话,很清楚的:
我手累了,按了一会儿F8,我们再看变成了啥样:
见笑了,常用的该有的都有。
Step Over (F8)
Step Into (F7)
Step Into My Code (Alt+Shift+F7)
Step Out (Shift+F8)
Run to Cursor (Alt+F9)
对了,c.py的输出呢?好吧,我们切到“4:Run”这个窗口来瞧瞧:
简介到此结束,希望身为初学者的你,越来越棒。