关键时刻,第一时间送达!
先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明明只是灵武七重,而在这两个月不到的时间,连跳两重修为,又跳过一个大境界,踏入了元武一重,这般进步速度,简直堪称变态啊。
“这楚枫不简单,原来是一位天才,若是让他继续成长下去,绝对能成为一号人物,不过可惜,他太狂妄了,竟与龚师兄定下生死约战,一年时间,他再厉害也无法战胜龚师兄。”有人认识到楚枫的潜力后,为楚枫感到惋惜。
“哼,何须一年,此子今日就必败,巫九与龚师兄关系甚好,早就看他不顺眼了,如今他竟敢登上生死台挑战巫九,巫九岂会放过他?”但也有人认为,楚枫今日就已是在劫难逃。
“何人挑战老子?”就在这时,又是一声爆喝响起,而后一道身影自人群之中掠出,最后稳稳的落在了比斗台上。
这位身材瘦弱,身高平平,长得那叫一个猥琐,金钩鼻子蛤蟆眼,嘴巴一张牙带色儿,说话臭气能传三十米,他若是当面对谁哈口气,都能让那人跪在地上狂呕不止。
不过别看这位长得不咋地,他在核心地带可是鼎鼎有名,剑道盟创建者,青龙榜第九名,正是巫九是也。
“你就是巫九?”楚枫眼前一亮,第一次发现,世间还有长得如此奇葩的人。
巫九鼻孔一张,大嘴一咧,拍着那干瘪的肚子,得意洋洋的道:“老子就是巫九,你挑战老子?”
“不是挑战你,是要宰了你。”楚枫冷声笑道。
“好,老子满足你这个心愿,长老,拿张生死状来,老子今日在这里了解了这小子。”巫九扯开嗓子,对着下方吼了一声。
如果他对内门长老这么说话,也就算了,但是敢这么跟核心长老说话的,他可真是算作胆肥的,就连许多核心弟子,都是倒吸了一口凉气,心想这楚枫够狂,想不到这巫九更狂。
不过最让人无言的就是,巫九话音落下不久,真有一位核心长老自人群走出,缓缓得来到了比斗台上,左手端着笔墨,右手拿着生死状,来到了巫九的身前。
“我去,这巫九什么身份,竟能这般使唤核心长老?”有人吃惊不已,那长老修为不低,乃是元武七重,比巫九还要高两个层次,但却这般听巫九的话,着实让人吃惊不已。
“这你就不知道了吧,巫九在前些时日,拜了钟离长老为师尊,已正式得到钟离长老的亲传。”有人解释道。
“钟离长老?可是那位性情古怪的钟离一护?”
“没错,就是他。”
“天哪,巫九竟然拜入了他的门下?”
人们再次大吃一惊,那钟离一护在青龙宗可是赫赫有名,若要是论其个人实力,在青龙宗内绝对能够排入前三,连护宗六老单打独斗都不会是他的对手。
只不过那钟离一护,如同诸葛青云一样,也是一位客卿长老,所以在青龙宗内只是挂个头衔,什么事都不管,更别说传授宗内弟子技艺了,如今巫九竟然能拜入他老人家门下,着实让人羡慕不已。
“恩怨生死台,的确可以决斗生死,但必须要有所恩怨,你们两个人,可有恩怨?”那位长老开口询问道。
编译:linux中国-Flowsnow ,英文:Clément Verna
https://linux.cn/article-9979-1.html
python开发整理发布,转载请联系作者获得授权
Python 生态系统包含丰富的工具和库,可以让开发人员更加舒适。 例如,我们之前已经介绍了如何使用交互式 shell 增强 Python。本文重点介绍另一种可以节省时间并提高 Python 技能的工具:Python 调试器。
Python 调试器
Python 标准库提供了一个名为 pdb 的调试器。此调试器提供了调试所需的大多数功能,如断点、单行步进、堆栈帧的检查等等。
了解一些pdb 的基本知识很有用,因为它是标准库的一部分。 你可以在无法安装其他增强的调试器的环境中使用它。
运行 pdb
运行 pdb 的最简单方法是从命令行,将程序作为参数传递来调试。 看看以下脚本:
# pdb_test.py
#!/usr/bin/python3
fromtimeimportsleep
defcountdown(number):
foriinrange(number,,-1):
print(i)
sleep(1)
if__name__=="__main__":
seconds=10
countdown(seconds)
你可以从命令行运行 pdb,如下所示:
$python3-mpdbpdb_test.py
> /tmp/pdb_test.py(1)()
->fromtimeimportsleep
(Pdb)
使用 pdb 的另一种方法是在程序中设置断点。为此,请导入模块并使用函数:
# pdb_test.py
#!/usr/bin/python3
fromtimeimportsleep
defcountdown(number):
foriinrange(number,,-1):
importpdb;pdb.set_trace()
print(i)
sleep(1)
if__name__=="__main__":
seconds=10
countdown(seconds)
$python3pdb_test.py
> /tmp/pdb_test.py(6)countdown()
->print(i)
(Pdb)
脚本在断点处停止,pdb 显示脚本中的下一行。 你也可以在失败后执行调试器。 这称为事后调试postmortem debugging。
穿行于执行堆栈
调试中的一个常见用例是在执行堆栈中穿行。 Python 调试器运行后,可以使用以下命令:
:显示当前执行的行以及执行堆栈的位置。
$python3test_pdb.py
> /tmp/test_pdb.py(10)countdown()
->print(i)
(Pdb)w
/tmp/test_pdb.py(16)()
->countdown(seconds)
> /tmp/test_pdb.py(10)countdown()
->print(i)
(Pdb)
:显示当前位置周围更多的上下文(代码)
$python3test_pdb.py
> /tmp/test_pdb.py(10)countdown()
->print(i)
(Pdb)l
5
6
7defcountdown(number):
8foriinrange(number,,-1):
9importpdb;pdb.set_trace()
10->print(i)
11sleep(1)
12
13
14if__name__=="__main__":
15seconds=10
/:向上或向下穿行调用堆栈。
$py3test_pdb.py
> /tmp/test_pdb.py(10)countdown()
->print(i)
(Pdb)up
> /tmp/test_pdb.py(16)()
->countdown(seconds)
(Pdb)down
> /tmp/test_pdb.py(10)countdown()
->print(i)
(Pdb)
单步执行程序
pdb提供以下命令来执行和单步执行代码:
:继续执行,直到达到当前函数中的下一行,或者返回
:执行当前行并在第一个可能的场合停止(在被调用的函数或当前函数中)
:继续执行,仅在断点处停止。
$py3test_pdb.py
> /tmp/test_pdb.py(10)countdown()
->print(i)
(Pdb)n
10
> /tmp/test_pdb.py(11)countdown()
->sleep(1)
(Pdb)n
> /tmp/test_pdb.py(8)countdown()
->foriinrange(number,,-1):
(Pdb)n
> /tmp/test_pdb.py(9)countdown()
->importpdb;pdb.set_trace()
(Pdb)s
--Call--
> /usr/lib64/python3.6/pdb.py(1584)set_trace()
->defset_trace():
(Pdb)c
> /tmp/test_pdb.py(10)countdown()
->print(i)
(Pdb)c
9
> /tmp/test_pdb.py(9)countdown()
->importpdb;pdb.set_trace()
(Pdb)
该示例显示了 和 之间的区别。 实际上,当使用 时,调试器会进入 模块源代码,而接下来就会执行 函数。
检查变量内容
pdb 非常有用的地方是检查执行堆栈中存储的变量的内容。 例如,命令打印当前函数的变量,如下所示:
py3test_pdb.py
> /tmp/test_pdb.py(10)countdown()
->print(i)
(Pdb)where
/tmp/test_pdb.py(16)()
->countdown(seconds)
> /tmp/test_pdb.py(10)countdown()
->print(i)
(Pdb)args
number=10
(Pdb)
pdb 打印变量的值,在本例中是 10。
可用于打印变量值的另一个命令是。
$py3test_pdb.py
> /tmp/test_pdb.py(10)countdown()
->print(i)
(Pdb)list
5
6
7defcountdown(number):
8foriinrange(number,,-1):
9importpdb;pdb.set_trace()
10->print(i)
11sleep(1)
12
13
14if__name__=="__main__":
15seconds=10
(Pdb)print(seconds)
10
(Pdb)pi
10
(Pdb)pnumber-i
(Pdb)
如示例中最后的命令所示, 可以在显示结果之前计算表达式。
Python 文档包含每个 pdb 命令的参考和示例。 对于开始使用 Python 调试器人来说,这是一个有用的读物。
增强的调试器
一些增强的调试器提供了更好的用户体验。 大多数为 pdb 添加了有用的额外功能,例如语法突出高亮、更好的回溯和自省。 流行的增强调试器包括 IPython 的 ipdb 和 pdb++。
这些示例显示如何在虚拟环境中安装这两个调试器。 这些示例使用新的虚拟环境,但在调试应用程序的情况下,应使用应用程序的虚拟环境。
安装 IPython 的 ipdb
要安装 IPython ipdb,请在虚拟环境中使用 :
$python3-mvenv.test_pdb
$source.test_pdb/bin/activate
(test_pdb)$pip installipdb
要在脚本中调用 ipdb,必须使用以下命令。 请注意,该模块称为 ipdb 而不是 pdb:
importipdb;ipdb.set_trace()
IPython 的 ipdb 也可以用 Fedora 包安装,所以你可以使用 Fedora 的包管理器来安装它:
$sudo dnf installpython3-ipdb
安装 pdb++
你可以类似地安装 pdb++:
$python3-mvenv.test_pdb
$source.test_pdb/bin/activate
(test_pdb)$pip installpdbp
pdb++ 重写了 pdb 模块,因此你可以使用相同的语法在程序中添加断点:
importpdb;pdb.set_trace()
总结
学习如何使用 Python 调试器可以节省你在排查应用程序问题时的时间。 对于了解应用程序或某些库的复杂部分如何工作也是有用的,从而提高 Python 开发人员的技能。