Python论坛  - 讨论区

标题:回复:Re: [python-chinese] 请问各位,如何调试python程序

2005年04月08日 星期五 09:37

a512225508 at sohu.com a512225508 at sohu.com
Fri Apr 8 09:37:43 HKT 2005

-----  原文  -----
From: Bruce Who 
To: python-chinese at lists.python.cn 
Subject: Re: [python-chinese] 请问各位,如何调试python程序
Sent: Fri Apr 08 09:24:21 CST 2005

> lifr:
> 
> 	可以用Komodo,wingIDE或pythonwin.
> 
> ======= 2005-04-08 09:03:11 lifr wrote: =======
> 
> >目前我没有什么好的调试工具。
> >由于一遍程序比较小,调试的机会也较小。但如果实在需要调试,我就写打印语
> >句。
> >可是,print并不是处处有用,所以,我尝试了IDLE的调试,实在不敢恭维(我用
> >2.4 ).
> >
> >那么各位是如何调试程序的呢?有没有好的方法或者工具推荐?
> >
> >谢谢
> >_______________________________________________
> >python-chinese list
> >python-chinese at lists.python.cn
> >http://python.cn/mailman/listinfo/python-chinese
> >
> 
> = = = = = = = = = = = = = = = = = = = =
> 			
> 
>         Bruce Who
>         whoonline at msn.com
>           2005-04-08
> 
写个脚本  然后调

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月08日 星期五 10:09

alang yin alang.yl at gmail.com
Fri Apr 8 10:09:18 HKT 2005

调试的最高境界是UnitTest。哈哈。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月08日 星期五 10:18

Zoom Quiet zoom.quiet at gmail.com
Fri Apr 8 10:18:30 HKT 2005

是也乎!!
Python 不是强数据结构语言!是脚本语言!

快速开发中,关注的是逻辑实现,
所以,不会有C哪样的内存追查debug 行为,

print 和 logging 的综合使用足矣!!!

好工具初始好设计!!
如果一步一步,清晰的,安全的,快捷的接近你的目标,
根本不用调试的!!!

推荐 Leo + Command 窗口!!
简直是在快乐的编程!而且随时可以自由的重构!

On Apr 8, 2005 9:37 AM, a512225508 at sohu.com <a512225508 at sohu.com> wrote:
> 
> -----  原文  -----
> From: Bruce Who
> To: python-chinese at lists.python.cn
> Subject: Re: [python-chinese] 请问各位,如何调试python程序
> Sent: Fri Apr 08 09:24:21 CST 2005
> 
> > lifr:
> >
> >       可以用Komodo,wingIDE或pythonwin.
> >
> > ======= 2005-04-08 09:03:11 lifr wrote: =======
> >
> > >目前我没有什么好的调试工具。
> > >由于一遍程序比较小,调试的机会也较小。但如果实在需要调试,我就写打印语
> > >句。
> > >可是,print并不是处处有用,所以,我尝试了IDLE的调试,实在不敢恭维(我用
> > >2.4 ).
> > >
> > >那么各位是如何调试程序的呢?有没有好的方法或者工具推荐?
> > >
> > >谢谢
> > >_______________________________________________
> > >python-chinese list
> > >python-chinese at lists.python.cn
> > >http://python.cn/mailman/listinfo/python-chinese
> > >
> >
> > = = = = = = = = = = = = = = = = = = = =
> >
> >
> > Bruce Who
> > whoonline at msn.com
> > 2005-04-08
> >
> 写个脚本  然后调
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


-- 
[Time is unimportant, only life important!]

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月08日 星期五 11:05

Qiangning Hong hongqn at gmail.com
Fri Apr 8 11:05:38 HKT 2005

On Apr 8, 2005 10:09 AM, alang yin <alang.yl at gmail.com> wrote:
> 
> 调试的最高境界是UnitTest。哈哈。
> 

unit test也是要debug的

-- 
Qiangning Hong
Get Firefox! <
http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050408/d90e36a5/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月08日 星期五 15:53

lifr lifr_sh at yeah.net
Fri Apr 8 15:53:50 HKT 2005

终于调试出来了,用了Pythonwin(为什么,最终还是要用我最不想用的*win*).
问题是这样开始的:
我发现我的一个xml到object的转换程序转换出来的结果总是不正确,具体是一个
list的对象多了(一些本不应该在这个list里面出现的object也在这个lit里面出
现)
这个转换程序由于有交叉的递归调用,所以特别难调试,我用过print
statemetn,pdb,idle,pythonwin。

折腾了几乎一天,刚才终于发现了“罪魁祸首”,那就是python compiler 的某种
优化措施"搞的鬼"
1 如果你的某个class的__init__的某个缺省参数是一个list,且用[]赋初值,那
么很可能会出现每一个使用了缺省参数初始化的object都“共享”了同一个list.
2 同样的情况出现在递归调用的函数上。
3 同样的情况也出现在map上,也就是缺省参数是map

这绝对不是你想要的!!!

我给出一个例子:
=============================exp1
def loop(i, l=[]):
    if i<=0: return
    print id(l)
    loop(i-1)

loop(4)
>>>>>>>output>>>>>>>>>>
19538688
19538688
19538688
19538688
=============================exp2
def loop(i):
    if i<=0: return
    l = []
    print id(l)
    loop(i-1)

loop(4)
>>>>>>>output>>>>>>>>>>
19538688
19538288
19538808
19538608

我不知道这是不是一个 known-issue,反正把我是害苦了,写出来让不知道的朋友
不要在犯这样的错。
我的解决办法是用这样的表达式:
def __init__(self, argList=None):
	self.myList = argList or []

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月08日 星期五 16:35

limodou limodou at gmail.com
Fri Apr 8 16:35:28 HKT 2005

这个问题早就有了。只不过不同的人注意力不同罢了。

On Apr 8, 2005 3:53 PM, lifr <lifr_sh at yeah.net> wrote:
> 终于调试出来了,用了Pythonwin(为什么,最终还是要用我最不想用的*win*).
> 问题是这样开始的:
> 我发现我的一个xml到object的转换程序转换出来的结果总是不正确,具体是一个
> list的对象多了(一些本不应该在这个list里面出现的object也在这个lit里面出
> 现)
> 这个转换程序由于有交叉的递归调用,所以特别难调试,我用过print
> statemetn,pdb,idle,pythonwin。
> 
> 折腾了几乎一天,刚才终于发现了"罪魁祸首",那就是python compiler 的某种
> 优化措施"搞的鬼"
> 1 如果你的某个class的__init__的某个缺省参数是一个list,且用[]赋初值,那
> 么很可能会出现每一个使用了缺省参数初始化的object都"共享"了同一个list.
> 2 同样的情况出现在递归调用的函数上。
> 3 同样的情况也出现在map上,也就是缺省参数是map
> 
> 这绝对不是你想要的!!!
> 
> 我给出一个例子:
> =============================exp1
> def loop(i, l=[]):
>     if i<=0: return
>     print id(l)
>     loop(i-1)
> 
> loop(4)
> >>>>>>>output>>>>>>>>>>
> 19538688
> 19538688
> 19538688
> 19538688
> =============================exp2
> def loop(i):
>     if i<=0: return
>     l = []
>     print id(l)
>     loop(i-1)
> 
> loop(4)
> >>>>>>>output>>>>>>>>>>
> 19538688
> 19538288
> 19538808
> 19538608
> 
> 我不知道这是不是一个 known-issue,反正把我是害苦了,写出来让不知道的朋友
> 不要在犯这样的错。
> 我的解决办法是用这样的表达式:
> def __init__(self, argList=None):
>         self.myList = argList or []
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
My Sina Blog: http://blog.sina.com.cn/blog/1148608914
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月08日 星期五 16:42

Qiangning Hong hongqn at gmail.com
Fri Apr 8 16:42:10 HKT 2005

On Apr 8, 2005 3:53 PM, lifr <lifr_sh at yeah.net> wrote:
> 
> 折腾了几乎一天,刚才终于发现了"罪魁祸首",那就是python compiler 的某种
> 优化措施"搞的鬼"
> 1 如果你的某个class的__init__的某个缺省参数是一个list,且用[]赋初值,那
> 么很可能会出现每一个使用了缺省参数初始化的object都"共享"了同一个list.
> 2 同样的情况出现在递归调用的函数上。
> 3 同样的情况也出现在map上,也就是缺省参数是map


[snip] 

我不知道这是不是一个 known-issue,反正把我是害苦了,写出来让不知道的朋友
> 不要在犯这样的错。


这是一个很著名的陷阱。原因是缺省参数是在编译时就产生了的,而不是调用时临时创建。每次用缺省参数调用时所引用的是同一个对象,在该对象是immutable时反正都无所谓,但在是mutable
object时就会出现这种情况。
这个特性常常用来作为实现类似C中static变量的trick。

我的解决办法是用这样的表达式:
> def __init__(self, argList=None):
> self.myList = argList or []
> 

这是正解。


-- 
Qiangning Hong
Get Firefox! <
http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050408/936b1dc7/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月09日 星期六 14:38

Chun Lin Zhang zhangcl at smmail.cn
Sat Apr 9 14:38:46 HKT 2005

what is Leo, where can I download it? Thanks

----- Original Message ----- 
From: "Zoom Quiet" <zoom.quiet at gmail.com>
To: <python-chinese at lists.python.cn>; "Python.cn at google"
<python-cn at googlegroups.com>
Sent: Friday, April 08, 2005 10:18 AM
Subject: [python-chinese] Re: Re: [python-chine se] 请问各位,如何调试python
程序


是也乎!!
Python 不是强数据结构语言!是脚本语言!

快速开发中,关注的是逻辑实现,
所以,不会有C哪样的内存追查debug 行为,

print 和 logging 的综合使用足矣!!!

好工具初始好设计!!
如果一步一步,清晰的,安全的,快捷的接近你的目标,
根本不用调试的!!!

推荐 Leo + Command 窗口!!
简直是在快乐的编程!而且随时可以自由的重构!

On Apr 8, 2005 9:37 AM, a512225508 at sohu.com <a512225508 at sohu.com> wrote:
>
> -----  原文  -----
> From: Bruce Who
> To: python-chinese at lists.python.cn
> Subject: Re: [python-chinese] 请问各位,如何调试python程序
> Sent: Fri Apr 08 09:24:21 CST 2005
>
> > lifr:
> >
> >       可以用Komodo,wingIDE或pythonwin.
> >
> > ======= 2005-04-08 09:03:11 lifr wrote: =======
> >
> > >目前我没有什么好的调试工具。
> > >由于一遍程序比较小,调试的机会也较小。但如果实在需要调试,我就写打印语
> > >句。
> > >可是,print并不是处处有用,所以,我尝试了IDLE的调试,实在不敢恭维(我用
> > >2.4 ).
> > >
> > >那么各位是如何调试程序的呢?有没有好的方法或者工具推荐?
> > >
> > >谢谢
> > >_______________________________________________
> > >python-chinese list
> > >python-chinese at lists.python.cn
> > >http://python.cn/mailman/listinfo/python-chinese
> > >
> >
> > = = = = = = = = = = = = = = = = = = = =
> >
> >
> > Bruce Who
> > whoonline at msn.com
> > 2005-04-08
> >
> 写个脚本  然后调
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
>


-- 
[Time is unimportant, only life important!]
_______________________________________________
python-chinese list
python-chinese at lists.python.cn
http://python.cn/mailman/listinfo/python-chinese


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月09日 星期六 15:37

Qiangning Hong hongqn at gmail.com
Sat Apr 9 15:37:18 HKT 2005

http://webpages.charter.net/edreamleo/front.html

Leo is... 
   
   - A *general data management environment*.
   Leo shows *user-created* relationships among any kind data:
   computer programs, web sites, etc.
   - An *outlining editor for programmers*. 
   Leo embeds the noweb <http://www.eecs.harvard.edu/%7Enr/noweb/> and 
   CWEB <http://www-cs-faculty.stanford.edu/%7Eknuth/cweb.html> markup 
   languages in an outline context.
   - A flexible *browser* for projects, programs, classes or any other 
   data.
   - A *project manager*. 
   Leo provides multiple views of a project within a single outline. 
   Leo naturally represents tasks that remain up-to-date.
   - *Portable*. Leo runs on Windows, Linux and MacOS X.
   - *100% pure * *Python* <http://www.python.org/>. Leo uses
Tk/tcl<http://tcl.activestate.com/>to draw the screen.
   - *Fully scriptable using * *Python* <http://www.python.org/>. Leo's 
   outline files are XML <http://www.w3.org/XML/> format.
   - *Open Software* <http://www.opensource.org/>, distributed under the Python 
   License <http://www.python.org/doc/Copyright.html>. 



On Apr 9, 2005 2:38 PM, Chun Lin Zhang <zhangcl at smmail.cn> wrote:
> 
> what is Leo, where can I download it? Thanks
> 
> ----- Original Message -----
> From: "Zoom Quiet" <zoom.quiet at gmail.com>
> To: <python-chinese at lists.python.cn>; "Python.cn at google"
> <python-cn at googlegroups.com>
> Sent: Friday, April 08, 2005 10:18 AM
> Subject: [python-chinese] Re: Re: [python-chine se] 请问各位,如何调试python
> 程序
> 
> 是也乎!!
> Python 不是强数据结构语言!是脚本语言!
> 
> 快速开发中,关注的是逻辑实现,
> 所以,不会有C哪样的内存追查debug 行为,
> 
> print 和 logging 的综合使用足矣!!!
> 
> 好工具初始好设计!!
> 如果一步一步,清晰的,安全的,快捷的接近你的目标,
> 根本不用调试的!!!
> 
> 推荐 Leo + Command 窗口!!
> 简直是在快乐的编程!而且随时可以自由的重构!
> 
> On Apr 8, 2005 9:37 AM, a512225508 at sohu.com <a512225508 at sohu.com> wrote:
> >
> > ----- 原文 -----
> > From: Bruce Who
> > To: python-chinese at lists.python.cn
> > Subject: Re: [python-chinese] 请问各位,如何调试python程序
> > Sent: Fri Apr 08 09:24:21 CST 2005
> >
> > > lifr:
> > >
> > > 可以用Komodo,wingIDE或pythonwin.
> > >
> > > ======= 2005-04-08 09:03:11 lifr wrote: =======
> > >
> > > >目前我没有什么好的调试工具。
> > > >由于一遍程序比较小,调试的机会也较小。但如果实在需要调试,我就写打印语
> > > >句。
> > > >可是,print并不是处处有用,所以,我尝试了IDLE的调试,实在不敢恭维(我用
> > > >2.4 ).
> > > >
> > > >那么各位是如何调试程序的呢?有没有好的方法或者工具推荐?
> > > >
> > > >谢谢
> > > >_______________________________________________
> > > >python-chinese list
> > > >python-chinese at lists.python.cn
> > > >http://python.cn/mailman/listinfo/python-chinese
> > > >
> > >
> > > = = = = = = = = = = = = = = = = = = = =
> > >
> > >
> > > Bruce Who
> > > whoonline at msn.com
> > > 2005-04-08
> > >
> > 写个脚本 然后调
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> 
> --
> [Time is unimportant, only life important!]
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 



-- 
Qiangning Hong
Get Firefox! <
http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050409/97832b52/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月09日 星期六 16:25

Zoom Quiet zoom.quiet at gmail.com
Sat Apr 9 16:25:05 HKT 2005

是也乎!
现在我简直爱死 Leo 了!!
啄木鸟中有一些介绍,我会逐步将有关 Leo 的最佳体验汇报出来的
Leo 环境简介:
http://wiki.woodpecker.org.cn/moin/LeoEnvironment
文学编程阐述:
http://wiki.woodpecker.org.cn/moin/LiterateProgramming
利用Leo 快速组织代码,解决问题:
http://wiki.woodpecker.org.cn/moin/CvsWeeklyStat

On Apr 9, 2005 3:37 PM, Qiangning Hong <hongqn at gmail.com> wrote:
> http://webpages.charter.net/edreamleo/front.html
>  
>  
> Leo is... 
>  
> A general data management environment.
> Leo shows user-created relationships among any kind data:
> computer programs, web sites, etc.
> An outlining editor for programmers. 
> Leo embeds the noweb and CWEB markup languages in an outline context.
> A flexible browser for projects, programs, classes or any other data.
> A project manager. 
> Leo provides multiple views of a project within a single outline. 
> Leo naturally represents tasks that remain up-to-date.
> Portable. Leo runs on Windows, Linux and MacOS X.
> 100% pure Python. Leo uses Tk/tcl to draw the screen.
> Fully scriptable using Python.  Leo's outline files are XML format.
> Open Software, distributed under the Python License. 
>  
> 
> On Apr 9, 2005 2:38 PM, Chun Lin Zhang <zhangcl at smmail.cn> wrote:
> > what is Leo, where can I download it? Thanks
> > 
> > ----- Original Message -----
> > From: "Zoom Quiet" <zoom.quiet at gmail.com>
> > To: <python-chinese at lists.python.cn>; "Python.cn at google"
> > <python-cn at googlegroups.com>
> > Sent: Friday, April 08, 2005 10:18 AM
> > Subject: [python-chinese] Re: Re: [python-chine se] 请问各位,如何调试python
> > 程序
> > 
> > 是也乎!!
> > Python 不是强数据结构语言!是脚本语言!
> > 
> > 快速开发中,关注的是逻辑实现,
> > 所以,不会有C哪样的内存追查debug 行为,
> > 
> > print 和 logging 的综合使用足矣!!!
> > 
> > 好工具初始好设计!!
> > 如果一步一步,清晰的,安全的,快捷的接近你的目标,
> > 根本不用调试的!!!
> > 
> > 推荐 Leo + Command 窗口!!
> > 简直是在快乐的编程!而且随时可以自由的重构!
> > 
> > On Apr 8, 2005 9:37 AM, a512225508 at sohu.com <a512225508 at sohu.com> wrote:
> > >
> > > -----  原文  -----
> > > From: Bruce Who
> > > To: python-chinese at lists.python.cn
> > > Subject: Re: [python-chinese] 请问各位,如何调试python程序
> > > Sent: Fri Apr 08 09:24:21 CST 2005
> > >
> > > > lifr:
> > > >
> > > >       可以用Komodo,wingIDE或pythonwin.
> > > >
> > > > ======= 2005-04-08 09:03:11 lifr wrote: =======
> > > >
> > > > >目前我没有什么好的调试工具。
> > > > >由于一遍程序比较小,调试的机会也较小。但如果实在需要调试,我就写打印语
> > > > >句。
> > > > >可是,print并不是处处有用,所以,我尝试了IDLE的调试,实在不敢恭维(我用
> > > > >2.4 ).
> > > > >
> > > > >那么各位是如何调试程序的呢?有没有好的方法或者工具推荐?
> > > > >
> > > > >谢谢
> > > > >_______________________________________________
> > > > >python-chinese list
> > > > >python-chinese at lists.python.cn
> > > > >http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > >
> > > > = = = = = = = = = = = = = = = = = = = =
> > > >
> > > >
> > > > Bruce Who
> > > > whoonline at msn.com
> > > > 2005-04-08
> > > >
> > > 写个脚本  然后调
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > 
> > --
> > [Time is unimportant, only life important!]
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> > 
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> > 
> 
> 
> 
> -- 
> Qiangning Hong
> Get Firefox!
> <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
[Time is unimportant, only life important!]

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号