当前位置: 首页 > news >正文

法国化妆品进口报关做网站受欢迎的网站建设案例

法国化妆品进口报关做网站,受欢迎的网站建设案例,网站推广网络推广,网站系统排名一、问题概述 回调函数是指一个函数执行完后#xff0c;调用另外一个函数的过程。 一般步骤是#xff0c;回调函数作为参数传递给原始函数#xff0c;原始函数执行完自己的逻辑后#xff0c;自动调用回调函数并将自己的执行结果作为参数传递给回调函数。 根据不同的用法调用另外一个函数的过程。 一般步骤是回调函数作为参数传递给原始函数原始函数执行完自己的逻辑后自动调用回调函数并将自己的执行结果作为参数传递给回调函数。 根据不同的用法回调函数可能在主线程/进程中也可能在其他线程/进程中。有时候这会给调试回调函数带来一点麻烦比如在回调函数内打的断点在调试模式下死活无法触发。是的在pycharm中遇到这个情况的就是我。。。 这时为了能正常调试可以考虑以下方法 1、如果回调函数是普通函数或者普通的类可以先不作为回调函数使用而是先当成普通函数来正常调试确认其中的逻辑没问题 再按回调函数的用法来调用。 2、不使用 pycharm 中内置的调试功能使用 ipdbwindow 或者 pudblinux来调试。 第1点比较简单以下介绍一下第 2 点中如何使用 ipdb 来调试回调函数。 二、ipdb 调试回调函数 1、ipdb是什么 pdbpython debugger是一个集成于Python标准库中的交互式无界面调试工具功能主要包括 a、断点设置与跳转 b、单步执行代码 c、任意变量查询、值修改不必重启程序 pdb 的弱点在于对多线程远程调试等支持得不够好没有界面不太适合大型的 python 项目。 ipdb是增强版的pdb它提供了更多的功能和更友好的交互界面,使得在开发过程中调试代码变得更加方便。 功能包括 a、在代码中的任意位置设置断点 b、单步运行语句并查看其结果 c、可查看当前执行上下文中的变量值 d、可跳过某个函数或循环 e、命令行界面 f、语法tab补全、条件断点、彩色输出等 2、ipdb的安装与常用命令简介 2.1、安装 pip install ipdb2.2、常用命令简介 ! 执行 python 命令或者显示变量值 ENTER 重复上次命令 a(rgs) 打印当前函数的参数 b(reakpoint) 设置断点 cl(ear) 清除断点 c(ontinue) 运行直到断点位置 h(elp) 帮助信息 j(ump) 让程序跳转到指定的行数 l(ist) 列出想了解的代码查找当前位置 n(ext) 让程序运行下一行当前语句有函数/子程序调用也不进入 s(tep) 让程序运行下一行当前语句有函数/子程序就进入 p(rint) 打印某个变量 q(uit) 退出调试 r(eturn) 继续执行直到函数体返回 disable/enable 禁用/启用断点3、ipdb的启动 假设 d:\download\callback_debug.py 需要调试。有两种方式能够对它进行调试 3.1、在IDE中启动 a、在代码中导入 ipdb 的 set_trace b、在要调试的行之前插入 set_trace() c、运行代码则代码自动在 set_trace() 处停止等待调试 3.2、在命令行启动 python -m ipdb d:/download/callback_debug.py方法 3.1 在IDE中执行会修改源码并且对循环等的调试支持不是很好相对来说方法 3.2 更加灵活一些但是对多线程、多进程的场景按方法 3.2非主进程、主线程上的断点不一定能抓住。 以下主要讨论方法 3.2但是使用方法也适用于 3.1。 4、举例以一个调试过程为例 4.0、原始代码 def on_callback(num, num2):a 1b 这是一串字符if num 3:print(haha)print(f回调处理后的数字是 {num} * {num} {num * num})def foo(num, callback: callable):print(f当前的数字是:{num})callback(num, 10)if __name__ __main__:for i in range(5):foo(i, on_callback)4.1、命令行启动 ipdb (base) D:\xxxx\trialpython -m ipdb callback_debug.py# 执行结果为d:\xxxx\trial\callback_debug.py(1)module() ---- 1 def on_callback(num):2 if num 3:3 print(haha)ipdb 此时自动进入单步执行状态ipdb 停留在第一行代码处待命。 4.2、查看代码 查看第1行至第10行的代码内容没有第0行 ipdb l 1,10 ---- 1 def on_callback(num):2 if num 3:3 print(haha)4 print(f回调处理后的数字是 {num} * {num} {num * num})5 6 7 def foo(num, callback: callable):8 print(f当前的数字是:{num})9 callback(num)10 ipdb ll 是查看整个源码文件 4.3、设置断点 在 on_callback() 函数内设置断点位置是第4、11行分别在回调函数、初始函数内。 ipdb b 4 Breakpoint 1 at d:\xxxx\trial\callback_debug.py:4 ipdb b 11 Breakpoint 2 at d:\xxxx\trial\callback_debug.py:11 ipdb 4.4、运行至断点处 断点2后设置但是运行逻辑上先运行到。 ipdb c 当前的数字是:0d:\xxxx\trial\callback_debug.py(11)foo()10 print(f当前的数字是:{num}) 2-- 11 callback(num, 10)12 ipdb 4.5、在函数 foo 里查看都有哪些参数 ipdb a num 0 callback function on_callback at 0x0000010B5C856940 ipdb 4.6、进入回调函数内部 ipdb s --Call--d:\xxxx\trial\callback_debug.py(1)on_callback() ---- 1 def on_callback(num, num2):2 a 13 b 这是一串字符ipdb 4.7、连续单步运行 其中第一次单步执行需要输入 n 后再回车之后2次直接回车即可 ipdb nd:\xxxx\trial\callback_debug.py(2)on_callback()1 def on_callback(num, num2): ---- 2 a 13 b 这是一串字符ipdb d:\xxxx\trial\callback_debug.py(3)on_callback()2 a 1 ---- 3 b 这是一串字符 1 4 if num 3:ipdbd:\xxxx\trial\callback_debug.py(4)on_callback()3 b 这是一串字符 1--- 4 if num 3:5 print(haha)ipdb 4.8、跳出、跳入回调函数并查看入参与变量值 ipdb ud:\xxxx\trial\callback_debug.py(11)foo()10 print(f当前的数字是:{num}) 2-- 11 callback(num, 10)12 ipdb dd:\xxxx\trial\callback_debug.py(4)on_callback()3 b 这是一串字符 1--- 4 if num 3:5 print(haha)ipdb args num 0 num2 10 ipdbp num 2 ipdb num 2 ipdb 4.9、跳转到指定行必须与跳转之前位置在同一个函数内 d:\xxxx\trial\callback_debug.py(2)on_callback()1 def on_callback(num, num2): ---- 2 a 13 b 这是一串字符ipdb j 4d:\xxxx\trial\callback_debug.py(4)on_callback()3 b 这是一串字符 1--- 4 if num 3:5 print(haha)ipdb 4.10、取消第一个断点并执行代码至第2个断点处 ipdb cl 1 Deleted breakpoint 1 at d:\xxxx\trial\callback_debug.py:4 ipdb c 当前的数字是:2d:\xxxx\trial\callback_debug.py(11)foo()10 print(f当前的数字是:{num}) 2-- 11 callback(num, 10)12 ipdb 4.11、显示当前所处的位置以及堆栈信息 ipdb wd:\anaconda3\lib\bdb.py(580)run()579 try: -- 580 exec(cmd, globals, locals)581 except BdbQuit:string(1)module()d:\xxxx\trial\callback_debug.py(16)module()14 if __name__ __main__:15 for i in range(5): --- 16 foo(i, on_callback) d:\xxxx\trial\callback_debug.py(11)foo()10 print(f当前的数字是:{num}) 2-- 11 callback(num, 10)12ipdb 4.12、退出调试 ipdb q(base) D:\xxxx\trial三、参考资料 1、pdb调试神器使用终极指南 2、pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-使用说明
http://www.hkea.cn/news/14569708/

相关文章:

  • 开网站需要投资多少钱wordpress添加js
  • 外贸网站做排名乐山网站公众号建设
  • 公司要做好网站怎样做水滴信用企业查询官网
  • 网站网站注册从建站到网络优化
  • 常州网站建设代理商做美食网站首页怎么做
  • 网站管理员怎么做板块建设青岛网站建设与设计制作
  • 网站优化合同东莞北京网站建设价格
  • 建设项目公告网站东莞百度网络推广
  • 有什么做家常菜的网站软文推广文案范文
  • 网站建站网站jp586 vip常德 网站建设
  • 有什么交易网站源码上海在哪建设网站
  • 注册免费的网站有吗成都专业网站建设机构
  • 佛山专业做淘宝网站网站公司制作
  • 做导购网站多少钱网络媒体设计是做什么的
  • 十大品牌网站微网站制作工具
  • 长春网站制作工具数据可视化网站
  • seo是指通过广州市口碑seo推广外包
  • 公司网站主页怎么做网站商城开发公司
  • 网站为契机建设校园数字化浏览器打不开wordpress
  • 台州做网站电话广东省建设厅网站查询
  • 成都网站建制作国外那些视频网站做的不错
  • 网站整站下载网站 方案
  • 嘉兴南湖区优秀营销型网站建设南昌企业网站排名优化
  • 网站建设的行业客户合肥建设局网站
  • 科技类公司网站怎么设计青岛网上房地产网官网
  • vue做网站的优缺点新建网站怎么保存
  • 机械设备 东莞网站建设发烧病例单子图片在线制作
  • 湛江企业自助建站系统百度惠生活小程序
  • 网站建设哪里最好接单子建站流程
  • 网站正在建设中的代码注册个人订阅号