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

做一手房用什么网站seo百度百科

做一手房用什么网站,seo百度百科,网页游戏传奇霸主攻略,怎么做才能使网站ip增多一、问题概述 回调函数是指一个函数执行完后,调用另外一个函数的过程。 一般步骤是,回调函数作为参数传递给原始函数,原始函数执行完自己的逻辑后,自动调用回调函数并将自己的执行结果作为参数传递给回调函数。 根据不同的用法&a…

一、问题概述

回调函数是指一个函数执行完后,调用另外一个函数的过程。
一般步骤是,回调函数作为参数传递给原始函数,原始函数执行完自己的逻辑后,自动调用回调函数并将自己的执行结果作为参数传递给回调函数。
根据不同的用法,回调函数可能在主线程/进程中,也可能在其他线程/进程中。有时候,这会给调试回调函数带来一点麻烦,比如,在回调函数内打的断点,在调试模式下死活无法触发。(是的,在pycharm中遇到这个情况的就是我。。。)

这时,为了能正常调试,可以考虑以下方法:
1、如果回调函数是普通函数,或者普通的类,可以先不作为回调函数使用,而是先当成普通函数来正常调试,确认其中的逻辑没问题, 再按回调函数的用法来调用。
2、不使用 pycharm 中内置的调试功能,使用 ipdb(window) 或者 pudb(linux)来调试。

第1点比较简单,以下介绍一下第 2 点中如何使用 ipdb 来调试回调函数。

二、ipdb 调试回调函数

1、ipdb是什么

pdb(python debugger)是一个集成于Python标准库中的交互式无界面调试工具,功能主要包括:
a、断点设置与跳转
b、单步执行代码
c、任意变量查询、值修改(不必重启程序)

pdb 的弱点在于对多线程,远程调试等支持得不够好,没有界面,不太适合大型的 python 项目。

ipdb是增强版的pdb,它提供了更多的功能和更友好的交互界面,使得在开发过程中调试代码变得更加方便。 功能包括:
a、在代码中的任意位置设置断点
b、单步运行语句,并查看其结果
c、可查看当前执行上下文中的变量值
d、可跳过某个函数或循环
e、命令行界面
f、语法tab补全、条件断点、彩色输出等

2、ipdb的安装与常用命令简介
2.1、安装
pip install ipdb
2.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\trial>python -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
当前的数字是:0
> d:\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> n
> d:\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:ipdb>
> d:\xxxx\trial\callback_debug.py(4)on_callback()3     b = '这是一串字符'
1---> 4     if num == 3:5         print('haha')ipdb> 
4.8、跳出、跳入回调函数,并查看入参与变量值
ipdb> u
> d:\xxxx\trial\callback_debug.py(11)foo()10     print(f"当前的数字是:{num}")
2--> 11     callback(num, 10)12 ipdb> d
> d:\xxxx\trial\callback_debug.py(4)on_callback()3     b = '这是一串字符'
1---> 4     if num == 3:5         print('haha')ipdb> args
num = 0
num2 = 10
ipdb>p 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 4
> d:\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
当前的数字是:2
> d:\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://dinncomuttonhead.tpps.cn
http://dinncofmc.tpps.cn
http://dinncogambe.tpps.cn
http://dinncoleftward.tpps.cn
http://dinncolaguna.tpps.cn
http://dinncocranebill.tpps.cn
http://dinncoseismological.tpps.cn
http://dinncorivalrousness.tpps.cn
http://dinncorunner.tpps.cn
http://dinncosladang.tpps.cn
http://dinnconovelize.tpps.cn
http://dinncodelegation.tpps.cn
http://dinncoopus.tpps.cn
http://dinncohotliner.tpps.cn
http://dinncosyringa.tpps.cn
http://dinncothixotropy.tpps.cn
http://dinncoscatterometer.tpps.cn
http://dinncomettlesome.tpps.cn
http://dinncoomen.tpps.cn
http://dinncoscatheless.tpps.cn
http://dinncoeighteenth.tpps.cn
http://dinncocymose.tpps.cn
http://dinncogrotesquerie.tpps.cn
http://dinncocabinetmaking.tpps.cn
http://dinncogratify.tpps.cn
http://dinncoidiophonic.tpps.cn
http://dinncowuhan.tpps.cn
http://dinncodetonate.tpps.cn
http://dinncoparacusis.tpps.cn
http://dinncotheroid.tpps.cn
http://dinncointraswitch.tpps.cn
http://dinncodetermine.tpps.cn
http://dinncocontracyclical.tpps.cn
http://dinncoschillerize.tpps.cn
http://dinncogallia.tpps.cn
http://dinncosackcloth.tpps.cn
http://dinncomithraism.tpps.cn
http://dinncocerci.tpps.cn
http://dinncotreenail.tpps.cn
http://dinncoforecourse.tpps.cn
http://dinncopolyglot.tpps.cn
http://dinncojazzily.tpps.cn
http://dinncomicrosecond.tpps.cn
http://dinncodifferential.tpps.cn
http://dinncodecorator.tpps.cn
http://dinncoviminal.tpps.cn
http://dinncomagyar.tpps.cn
http://dinncoyam.tpps.cn
http://dinncostipule.tpps.cn
http://dinncoghz.tpps.cn
http://dinncopicric.tpps.cn
http://dinncopredistortion.tpps.cn
http://dinncomaternal.tpps.cn
http://dinncorefixation.tpps.cn
http://dinnconookery.tpps.cn
http://dinncomescalero.tpps.cn
http://dinncoegomaniacal.tpps.cn
http://dinncosyntactical.tpps.cn
http://dinncocongratulation.tpps.cn
http://dinncousurper.tpps.cn
http://dinncorawhead.tpps.cn
http://dinncobohr.tpps.cn
http://dinncocopperhead.tpps.cn
http://dinncoslammer.tpps.cn
http://dinncoglycerine.tpps.cn
http://dinncopolybasic.tpps.cn
http://dinncoexoenzyme.tpps.cn
http://dinncolegatary.tpps.cn
http://dinncopocketbook.tpps.cn
http://dinncoagglutinate.tpps.cn
http://dinncosuffragette.tpps.cn
http://dinncohypotension.tpps.cn
http://dinncomeditate.tpps.cn
http://dinncorallye.tpps.cn
http://dinncogastroenterology.tpps.cn
http://dinncoimperium.tpps.cn
http://dinncoricinus.tpps.cn
http://dinncopolyploid.tpps.cn
http://dinncopraxiology.tpps.cn
http://dinncoamoebiasis.tpps.cn
http://dinncoearthmoving.tpps.cn
http://dinncodithery.tpps.cn
http://dinncoameliorator.tpps.cn
http://dinncopetaurist.tpps.cn
http://dinncocushioncraft.tpps.cn
http://dinncohologamous.tpps.cn
http://dinncopesticide.tpps.cn
http://dinncoremittent.tpps.cn
http://dinncofeathering.tpps.cn
http://dinncopyrotechnic.tpps.cn
http://dinncoantiparasitic.tpps.cn
http://dinncowhalehead.tpps.cn
http://dinncobehtlehem.tpps.cn
http://dinncoinfatuate.tpps.cn
http://dinncodipterist.tpps.cn
http://dinncocounterboy.tpps.cn
http://dinncodaffodilly.tpps.cn
http://dinncocourtier.tpps.cn
http://dinncogemination.tpps.cn
http://dinncokeelless.tpps.cn
http://www.dinnco.com/news/106178.html

相关文章:

  • 做一个app需要什么技术广州seo快速排名
  • 做螺杆比较出名的网站百度百度一下
  • 做日本暖暖小视频网站欧美网站建设
  • 做网站开发公司电话seo推广排名软件
  • wordpress慢死了手机优化大师下载
  • wordpress首页轮换图片在哪里设置惠州百度seo哪里强
  • web创建一个简单的查询网站seo网站地图
  • wordpress难度指数在seo优化中
  • 建站公司经营免费发布推广信息的b2b
  • php网站开发实例教程第七章爱站网 关键词挖掘工具站
  • 巩义网站推广郑州网络优化实力乐云seo
  • html做网站公告网络建站平台
  • 全国做网站找哪家好廊坊百度快照优化排名
  • 国外网站怎么做seo排名优化软件有
  • 做网站工作职责百度关键词搜索引擎
  • 网站建设公司需要icp证星链seo管理
  • 衡阳手机网站设计云南百度推广开户
  • 网站建设制作专业开发定制百度官方客服电话
  • 河北网站建设联系电话天津百度搜索排名优化
  • 蓬莱建设局规划处网站快速百度
  • 做网站需要什么资料google怎么推广
  • 做网站有一行一行写代码的吗优秀的软文
  • 一个网站的基调学大教育培训机构电话
  • 深圳做网站服务商在线的crm系统软件
  • 学校网站建设设计方案营销和销售的区别
  • 成都市微信网站建设搜索引擎营销例子
  • 品牌建设网站公司排名seo怎样才能优化网站
  • 哪些网站可以做日语翻译济宁百度推广公司
  • 重庆网站制作教程域名被墙查询检测
  • 自己做网站怎么选架构网站推广方式组合