Python论坛  - 讨论区

标题:[python-chinese] 使用求助:大家用PYTHONWIN的时候有异常么?

2005年09月06日 星期二 11:36

su suyushi2004 suyushi2004 at gmail.com
Tue Sep 6 11:36:16 HKT 2005

今天使用PYTHONWIN的IDEL使用时总出毛病
具体症状":
  写WHILE循环时爱出一直循环,有时候还显示错误。
另外请教大家谁有PYTHONWIN的使用说明中文的,我英文成问题。
谢谢打家了。

-- 
-------------------------------------------------------------
理想在火焰与-275度中徘徊,仍能想起的是那风吹过静谧的草原。

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

2005年09月06日 星期二 13:33

jzx++ jzx19770812 at yahoo.com.cn
Tue Sep 6 13:33:51 HKT 2005

我用的时候它常常会死掉,不稳定

On Tue, 6 Sep 2005 11:36:16 +0800
su suyushi2004 <suyushi2004 at gmail.com> wrote:

> 今天使用PYTHONWIN的IDEL使用时总出毛病
> 具体症状":
>   写WHILE循环时爱出一直循环,有时候还显示错误。
> 另外请教大家谁有PYTHONWIN的使用说明中文的,我英文成问题。
> 谢谢打家了。
> 
> -- 
> -------------------------------------------------------------
> 理想在火焰与-275度中徘徊,仍能想起的是那风吹过静谧的草原。

-- 
jzx <jzx19770812 at yahoo.com.cn>

__________________________________________________
Do You Yahoo!?
雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱
http://cn.mail.yahoo.com/?id=77071

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

2005年09月06日 星期二 14:53

goopler alang.yl at gmail.com
Tue Sep 6 14:53:29 HKT 2005

建设用它写代码,执行还是在cmd下面。

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

2005年09月06日 星期二 15:09

刀波儿 metallica_coo at yahoo.com.cn
Tue Sep 6 15:09:01 HKT 2005

PYTHON中如何实现象C中把函数中的值回传给参数(指针or引用).

举简例:

def test(x,y):
    x=3
    y=6
x=1
y=2
test(x,y)
print "x ",x
print "y ",y

output:
  1
  2

要把test函数中x计算结果传回参数,
可在函数外得到计算结果.
觉得这是一个很基本的功能,这在多返回时犹为有用, 
谢谢


####################################################   My webblog: http://logins.blogchina.com/   ####################################################


	

	
		
___________________________________________________________ 
雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱 
http://cn.mail.yahoo.com


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

2005年09月06日 星期二 16:56

Jason Liu telecomliu at gmail.com
Tue Sep 6 16:56:31 HKT 2005

在 05-9-6,刀波儿<metallica_coo at yahoo.com.cn> 写道:
> PYTHON中如何实现象C中把函数中的值回传给参数(指针or引用).
> 觉得这是一个很基本的功能,这在多返回时犹为有用,
> 谢谢

可以返回一个tuple,就有多个返回值了
test(x, y)
    x = 3
    y = 4
    return x, y

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

2005年09月06日 星期二 17:22

刀波儿 metallica_coo at yahoo.com.cn
Tue Sep 6 17:22:39 HKT 2005

这是一种办法,
还有一种是把参数设为global:
def add():
   global a
   global b
   a=5
   b=6
a=1
b=2
add()
print "a ",a
print "b ",b

但觉得这两种方法都不是我想要的,
第一种好一些,但所有这种应用场合都需要引入Tuple或List
第二种方法会使模块之间的耦合度变得太大。
我想Python应该有更好办法做这种Pass-By-Ref

下面是别人做的一个实现传reference的代码,
Python中有更多方便的解决这一问题的方案吗?

#passbyref.py
#
#Implementing pass by reference operations
#in python.
#
#Example
#python passbyref.py
#>>>@passbyreference(sym.b)
#...def func(a):
#...    a.set("hello")
#>>>
#>>>v = 5
#>>>func(1, sym.v, 3)
#>>>print v
#hello
#

import inspect

class _symbol(object):
    def __getattribute__(self, name):
        return name
sym = _symbol()


class ref:
    def __init__(self, value):
        self.value = value
    
    def set(self, value):
        self.value = value

    def get(self):
        return self.value
    
    def __repl__(self):
        return "ref(%s)" % self.value

    def __str__(self):
        return self.value
    
 
def passbyreference(*refparams):
    def getfunc(func):
        fc = func.func_code
        paramcount = fc.co_argcount
        paramnames = list(fc.co_varnames[:paramcount])
        def pbr(*args, **aargs):
            callerLocals =
inspect.currentframe(1).f_locals
            callerRefVars = []
            argsMap = {}
           
argsMap.update(dict(zip(paramnames[:len(args)],
args)))
            argsMap.update(aargs)
            for paramName in refparams:
                varName = argsMap[paramName]
                varRef = ref(callerLocals[varName])
                argsMap[paramName] = varRef
                callerRefVars.append((varName,
varRef))
            
            retval = func(**argsMap)

            for varName, varRef in callerRefVars:
                callerLocals[varName] = varRef.get()
            return retval
        return pbr
    return getfunc



--- Jason Liu <telecomliu at gmail.com>写道:

> 在 05-9-6,刀波儿<metallica_coo at yahoo.com.cn> 写道:
> >
>
PYTHON中如何实现象C中把函数中的值回传给参数(指针or引用).
> > 觉得这是一个很基本的功能,这在多返回时犹为有用,
> > 谢谢
> 
> 可以返回一个tuple,就有多个返回值了
> test(x, y)
>     x = 3
>     y = 4
>     return x, y
> > _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


####################################################   My webblog: http://logins.blogchina.com/   ####################################################


	

	
		
___________________________________________________________ 
雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱 
http://cn.mail.yahoo.com


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

2005年09月06日 星期二 17:28

Jerry jetport at gmail.com
Tue Sep 6 17:28:27 HKT 2005

> 在 05-9-6,刀波儿<metallica_coo at yahoo.com.cn> 写道:
> > PYTHON中如何实现象C中把函数中的值回传给参数(指针or引用).
> > 觉得这是一个很基本的功能,这在多返回时犹为有用,
> > 谢谢
> 
> 可以返回一个tuple,就有多个返回值了
> test(x, y)
>    x = 3
>    y = 4
>    return x, y
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 

python中除了值对象(如:int)是直接赋值外,其他对象变量都是引用赋值的
所以你可以很容易完成这个任务:

x=1
y=1

def test(T):
    T[0] = 3
    T[1] = 4

test( [x,y] )



-- 
If U can see it, then U can do it
If U just believe it, there's nothing to it
I believe U can fly 
From Jetport at gmail.com

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

2005年09月06日 星期二 17:29

Fluke fluke.l at gmail.com
Tue Sep 6 17:29:14 HKT 2005

不大明白你说的,你是不是想要x,y是全局变量?在c里面应该是可以用static静态变量来实现的。这样的话,你的输出结果就是3,6了,在python中我不清楚有没有这样的方法,但是你可以返回多个值的。
def test():
 x=3
 y=6
 return x,y
 x,y=test()
 On 9/6/05, 刀波儿 <metallica_coo at yahoo.com.cn> wrote: 
> 
> PYTHON中如何实现象C中把函数中的值回传给参数(指针or引用).
> 
> 举简例:
> 
> def test(x,y):
> x=3
> y=6
> x=1
> y=2
> test(x,y)
> print "x ",x
> print "y ",y
> 
> output:
> 1
> 2
> 
> 要把test函数中x计算结果传回参数,
> 可在函数外得到计算结果.
> 觉得这是一个很基本的功能,这在多返回时犹为有用,
> 谢谢
> 
> 
> #################################################### My webblog: 
> http://logins.blogchina.com/####################################################
> 
> 
> 
> 
> 
> 
> ___________________________________________________________
> 雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱
> http://cn.mail.yahoo.com
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 



-- 
Yours,
fluke
fluke at sfcube.net
http://sfcube.net/blog
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050906/b1d1cc70/attachment-0001.htm

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

2005年09月06日 星期二 17:29

goopler alang.yl at gmail.com
Tue Sep 6 17:29:30 HKT 2005

这个代码的方法挺好的。

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

2005年09月06日 星期二 17:34

Hong Yuan hongyuan at homemaster.cn
Tue Sep 6 17:34:54 HKT 2005

个人觉得这个问题上需要技术python中所有变量都是对象这个本质,还有更应该关
注对象有mutable和immutable之分。另外变量名只是一个对应到对象上的符号
binding。这个和C里面函数调用是先拷贝,在把参数压入堆栈的实现很不一样,所
以无法直接去比较。

例如:

a = [1, 2, 3, 4]
print id(a)
def foo(b)
print id(b)
b[3]=5
print b

100669264
100669264
[1, 2, 3, 5]

可见函数外的a和函数内的b其实是同一个对象。这里用C函数来类比的话就是传入
了对list的引用,因为函数里面的操作改变了外部变量的值。


刀波儿 wrote:

>PYTHON中如何实现象C中把函数中的值回传给参数(指针or引用).
>
>举简例:
>
>def test(x,y):
>    x=3
>    y=6
>x=1
>y=2
>test(x,y)
>print "x ",x
>print "y ",y
>
>output:
>  1
>  2
>

-- 
HONG Yuan

大管家网上建材超市
http://www.homemaster.cn


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

2005年09月06日 星期二 17:44

Qiangning Hong hongqn at gmail.com
Tue Sep 6 17:44:06 HKT 2005

Jerry wrote:
>>在 05-9-6,刀波儿<metallica_coo at yahoo.com.cn> 写道:
>>>PYTHON中如何实现象C中把函数中的值回传给参数(指针or引用).
> 
> python中除了值对象(如:int)是直接赋值外,其他对象变量都是引用赋值的
> 所以你可以很容易完成这个任务:
> 
> x=1
> y=1
> 
> def test(T):
>     T[0] = 3
>     T[1] = 4
> 
> test( [x,y] )

Have you ever tried your code?

-- 
Qiangning Hong
http://www.hn.org/hongqn (RSS: http://feeds.feedburner.com/hongqn)

Registered Linux User #396996
Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=1>
Thunderbird! <http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=183>

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

2005年09月06日 星期二 20:31

limodou limodou at gmail.com
Tue Sep 6 20:31:27 HKT 2005

在 05-9-6,刀波儿<metallica_coo at yahoo.com.cn> 写道:
> 这是一种办法,
> 还有一种是把参数设为global:
> def add():
>    global a
>    global b
>    a=5
>    b=6
> a=1
> b=2
> add()
> print "a ",a
> print "b ",b
> 
> 但觉得这两种方法都不是我想要的,
> 第一种好一些,但所有这种应用场合都需要引入Tuple或List
> 第二种方法会使模块之间的耦合度变得太大。
> 我想Python应该有更好办法做这种Pass-By-Ref
> 

我很少看到在python中使用类似引用的处理方法。最简单的是写一个空类,然后将实例传进去,想加什么属性都可以。使用起来也方便。

-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou

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

2005年09月06日 星期二 21:18

刀波儿 metallica_coo at yahoo.com.cn
Tue Sep 6 21:18:54 HKT 2005

能否看一个相关的有指导意义的例子
期待中。。。

--- limodou <limodou at gmail.com>写道:

> 在 05-9-6,刀波儿<metallica_coo at yahoo.com.cn> 写道:
> > 这是一种办法,
> > 还有一种是把参数设为global:
> > def add():
> >    global a
> >    global b
> >    a=5
> >    b=6
> > a=1
> > b=2
> > add()
> > print "a ",a
> > print "b ",b
> > 
> > 但觉得这两种方法都不是我想要的,
> >
>
第一种好一些,但所有这种应用场合都需要引入Tuple或List
> > 第二种方法会使模块之间的耦合度变得太大。
> > 我想Python应该有更好办法做这种Pass-By-Ref
> > 
> 
>
我很少看到在python中使用类似引用的处理方法。最简单的是写一个空类,然后将实例传进去,想加什么属性都可以。使用起来也方便。
> 
> -- 
> I like python! 
> My Donews Blog: http://www.donews.net/limodou
> > _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


####################################################   My webblog: http://logins.blogchina.com/   ####################################################


		
___________________________________________________________ 
雅虎邮箱超强增值服务-2G超大空间、pop3收信、无限量邮件提醒 
http://cn.mail.yahoo.com

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

2005年09月06日 星期二 21:34

Qiangning Hong hongqn at gmail.com
Tue Sep 6 21:34:07 HKT 2005

刀波儿 wrote:
> 能否看一个相关的有指导意义的例子
> 期待中。。。

Python FAQ里有
http://www.python.org/doc/faq/programming.html#how-do-i-write-a-function-with-output-parameters-call-by-reference

-- 
Qiangning Hong
http://www.hn.org/hongqn (RSS: http://feeds.feedburner.com/hongqn)

Registered Linux User #396996
Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=1>
Thunderbird! <http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=183>

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

2005年09月06日 星期二 21:47

Fluke fluke.l at gmail.com
Tue Sep 6 21:47:30 HKT 2005

seems wrong

On 9/6/05, Qiangning Hong <hongqn at gmail.com> wrote: 
> 
> Jerry wrote:
> >>在 05-9-6,刀波儿<metallica_coo at yahoo.com.cn> 写道:
> >>>PYTHON中如何实现象C中把函数中的值回传给参数(指针or引用).
> >
> > python中除了值对象(如:int)是直接赋值外,其他对象变量都是引用赋值的
> > 所以你可以很容易完成这个任务:
> >
> > x=1
> > y=1
> >
> > def test(T):
> > T[0] = 3
> > T[1] = 4
> >
> > test( [x,y] )
> 
> Have you ever tried your code?
> 
> --
> Qiangning Hong
> http://www.hn.org/hongqn (RSS: http://feeds.feedburner.com/hongqn)
> 
> Registered Linux User #396996
> Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=1>
> Thunderbird! <http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=183>
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 



-- 
Yours,
fluke
fluke at sfcube.net
http://sfcube.net/blog
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050906/f1e256fb/attachment.htm

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

2005年09月06日 星期二 21:53

limodou limodou at gmail.com
Tue Sep 6 21:53:51 HKT 2005

比如:

class DUMY_CLASS:pass

obj = DUMY_CLASS()
def p(obj):
    obj.a = 1
    obj.b = [1,2]

p(obj)
print obj.a, obj.b

这种使用空类的方法在Python中非常多见,比如pickle模块。因为在Python中生成一个空类非常容易,又因为python的动态特性可以方便地给生成的实例增加属性,因此用它来处理非常方便。

-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou

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

2005年09月06日 星期二 22:05

刀波儿 metallica_coo at yahoo.com.cn
Tue Sep 6 22:05:40 HKT 2005

看懂了,但是不是太明白这样做的目的和好处
继续修炼吧......!!

--- limodou <limodou at gmail.com>写道:

> 比如:
> 
> class DUMY_CLASS:pass
> 
> obj = DUMY_CLASS()
> def p(obj):
>     obj.a = 1
>     obj.b = [1,2]
> 
> p(obj)
> print obj.a, obj.b
> 
>
这种使用空类的方法在Python中非常多见,比如pickle模块。因为在Python中生成一个空类非常容易,又因为python的动态特性可以方便地给生成的实例增加属性,因此用它来处理非常方便。
> 
> -- 
> I like python! 
> My Donews Blog: http://www.donews.net/limodou
> > _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


####################################################   My webblog: http://logins.blogchina.com/   ####################################################


	

	
		
___________________________________________________________ 
雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱 
http://cn.mail.yahoo.com


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

2005年09月06日 星期二 22:07

刀波儿 metallica_coo at yahoo.com.cn
Tue Sep 6 22:07:48 HKT 2005

非常好的资料,值得学习.
粗看了几个问题,都在点子上,推荐!!
谢!



--- Qiangning Hong <hongqn at gmail.com>写道:

> 刀波儿 wrote:
> > 能否看一个相关的有指导意义的例子
> > 期待中。。。
> 
> Python FAQ里有
>
http://www.python.org/doc/faq/programming.html#how-do-i-write-a-function-with-output-parameters-call-by-reference
> 
> -- 
> Qiangning Hong
> http://www.hn.org/hongqn (RSS:
> http://feeds.feedburner.com/hongqn)
> 
> Registered Linux User #396996
> Get Firefox!
>
<http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=1>
> Thunderbird!
>
<http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=183>
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


####################################################   My webblog: http://logins.blogchina.com/   ####################################################


	

	
		
___________________________________________________________ 
雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱 
http://cn.mail.yahoo.com


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

2005年09月07日 星期三 10:20

wafd Alex liuguodong at gmail.com
Wed Sep 7 10:20:37 HKT 2005

长见识了

在 05-9-6,刀波儿<metallica_coo at yahoo.com.cn> 写道:
> 非常好的资料,值得学习.
> 粗看了几个问题,都在点子上,推荐!!
> 谢!
> 
> 
> 
> --- Qiangning Hong <hongqn at gmail.com>写道:
> 
> > 刀波儿 wrote:
> > > 能否看一个相关的有指导意义的例子
> > > 期待中。。。
> >
> > Python FAQ里有
> >
> http://www.python.org/doc/faq/programming.html#how-do-i-write-a-function-with-output-parameters-call-by-reference
> >
> > --
> > Qiangning Hong
> > http://www.hn.org/hongqn (RSS:
> > http://feeds.feedburner.com/hongqn)
> >
> > Registered Linux User #396996
> > Get Firefox!
> >
> <http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=1>
> > Thunderbird!
> >
> <http://www.spreadfirefox.com/?q=affiliates&id;=67907&t;=183>
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> 
> 
> ####################################################   My webblog: http://logins.blogchina.com/   ####################################################
> 
> 
> 
> 
> 
> 
> ___________________________________________________________
> 雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱
> http://cn.mail.yahoo.com
> 
> _______________________________________________
> 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年09月07日 星期三 12:24

goopler alang.yl at gmail.com
Wed Sep 7 12:24:36 HKT 2005

直是很好的资料,太好。要好好的研究一下。
http://www.python.org/doc/faq/programming.html#id1
可以回答从其它语言过来的程序员们80%必定要问的问题。

建议整理成中文分享之。
太爽了。用python以来从来没有像今天这么爽过。

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

2005年09月08日 星期四 11:01

shhgs shhgs.efhilt at gmail.com
Thu Sep 8 11:01:21 HKT 2005

Python的对象分mutable和immutable的。如果是mutable的,那么对象的修改是就地完成的。如果是immutable的,对象修改的时候,其实上是创建了一个新的对象,因此当函数返回之后,老对象又回来了。

据我所知Python的immutable对象包括string, int, float。

要想做到C的传指针或引用的效果,直接把对象穿过去,然后在函数里修改对象就成了。倒是Python的instance type应该体动一个clone方法才是。

On 9/6/05, limodou <limodou at gmail.com> wrote:
> 比如:
> 
> class DUMY_CLASS:pass
> 
> obj = DUMY_CLASS()
> def p(obj):
>     obj.a = 1
>     obj.b = [1,2]
> 
> p(obj)
> print obj.a, obj.b
> 
> 这种使用空类的方法在Python中非常多见,比如pickle模块。因为在Python中生成一个空类非常容易,又因为python的动态特性可以方便地给生成的实例增加属性,因此用它来处理非常方便。
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号