Python论坛  - 讨论区

标题:[python-chinese] 请教 *的意思

2006年10月23日 星期一 02:18

jiang hongbo larkdream在gmail.com
星期一 十月 23 02:18:44 HKT 2006

看到如下代码,不明白这里*的用法,似乎是将size分解为类定义中的两个属性的意思:
size = self.GetClientSize()
glViewport( 0,0, *size)            #相当于glViewport( 0,0, size.width,
size.height)
请教大家*号这种用法的意思和该用在什么地方,谢谢。
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061023/ab0bb46a/attachment.html 

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

2006年10月23日 星期一 07:36

yi huang yi.codeplayer在gmail.com
星期一 十月 23 07:36:42 HKT 2006

size 是一个tuple
http://groups.google.com/group/python-cn/browse_thread/thread/171562599ef2f9f1/518a3f0f021e9263?lnk=gst&q;=%E4%BC%A0%E9%80%81%E5%85%83%E7%BB%84%E7%9A%84*%E8%BF%98%E5%8F%AF%E4%BB%A5%E6%94%BE%E5%85%A5%E5%87%BD%E6%95%B0%3F++&rnum;=1#518a3f0f021e9263

On 10/23/06, jiang hongbo <larkdream at gmail.com> wrote:
>
> 看到如下代码,不明白这里*的用法,似乎是将size分解为类定义中的两个属性的意思:
> size = self.GetClientSize()
> glViewport( 0,0, *size)            #相当于glViewport( 0,0, size.width,
> size.height)
> 请教大家*号这种用法的意思和该用在什么地方,谢谢。
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061023/d0d11994/attachment.html 

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

2006年10月23日 星期一 09:31

马踏飞燕 honeyday.mj在gmail.com
星期一 十月 23 09:31:54 HKT 2006

代表这个参数是一个列表或者是元组。
2个星号代表是一个字典。

在 06-10-23,jiang hongbo<larkdream在gmail.com> 写道:
> 看到如下代码,不明白这里*的用法,似乎是将size分解为类定义中的两个属性的意思:
> size = self.GetClientSize()
> glViewport( 0,0, *size)            #相当于glViewport( 0,0, size.width,
> size.height)
> 请教大家*号这种用法的意思和该用在什么地方,谢谢。
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>

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

2006年10月23日 星期一 09:58

amingsc amingsc在gmail.com
星期一 十月 23 09:58:12 HKT 2006

举个例子,下面的函数fun×完成显示参数的功能:
def fun1(arg1,arg2,arg3):
    print arg1,arg2,arg3,
fun1(1,2,3)

def fun2(args):
    for i in args:print i,
fun2([1,2,3])
fun2([1,2,3,4])

def fun3(*args)
    for i in args:print i,
fun3(1,2,3,4,5)
fun3(1,2)
比较三个函数可以看出
fun2比fun1灵活,因为fun1的参数个数固定
fun3比fun2灵活,因为fun3的多个参数都不必用序列来传递,这在实现参数个数不
定的函数时很有用;

至于**类似,只是**表示的是带关键字的参数
def fun4(**args):
    for k,v in enumerate(args):
       print k,v
fun4(id=1001,name='xx')
fun4(id=1001,name='xx',age=28)

马踏飞燕 写道:
> 代表这个参数是一个列表或者是元组。
> 2个星号代表是一个字典。
>
> 在 06-10-23,jiang hongbo<larkdream at gmail.com> 写道:
>   
>> 看到如下代码,不明白这里*的用法,似乎是将size分解为类定义中的两个属性的意思:
>> size = self.GetClientSize()
>> glViewport( 0,0, *size)            #相当于glViewport( 0,0, size.width,
>> size.height)
>> 请教大家*号这种用法的意思和该用在什么地方,谢谢。
>> _______________________________________________
>> python-chinese
>> Post: send python-chinese at lists.python.cn
>> Subscribe: send subscribe to
>> python-chinese-request at lists.python.cn
>> Unsubscribe: send unsubscribe to
>> python-chinese-request at lists.python.cn
>> Detail Info:
>> http://python.cn/mailman/listinfo/python-chinese
>>
>>     
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese


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

2006年10月23日 星期一 10:24

Qutr qutianrang在gmail.com
星期一 十月 23 10:24:52 HKT 2006

Õý½â£¡


Qutr£¬qutianrang在gmail.com
2006-10-23 
----- Original Message ----- 
From: amingsc 
To: python-chinese 
Sent: 2006-10-23, 09:58:12
Subject: Re: [python-chinese] Çë½Ì *µÄÒâ˼


¾Ù¸öÀý×Ó£¬ÏÂÃæµÄº¯Êýfun¡ÁÍê³ÉÏÔʾ²ÎÊýµÄ¹¦ÄÜ£º
def fun1(arg1,arg2,arg3):
    print arg1,arg2,arg3,
fun1(1,2,3)

def fun2(args):
    for i in args:print i,
fun2([1,2,3])
fun2([1,2,3,4])

def fun3(*args)
    for i in args:print i,
fun3(1,2,3,4,5)
fun3(1,2)
±È½ÏÈý¸öº¯Êý¿ÉÒÔ¿´³ö
fun2±Èfun1Áé»î£¬ÒòΪfun1µÄ²ÎÊý¸öÊý¹Ì¶¨
fun3±Èfun2Áé»î£¬ÒòΪfun3µÄ¶à¸ö²ÎÊý¶¼²»±ØÓÃÐòÁÐÀ´´«µÝ£¬ÕâÔÚʵÏÖ²ÎÊý¸öÊý²»
¶¨µÄº¯ÊýʱºÜÓÐÓã»

ÖÁÓÚ**ÀàËÆ,Ö»ÊÇ**±íʾµÄÊÇ´ø¹Ø¼ü×ֵIJÎÊý
def fun4(**args):
    for k,v in enumerate(args):
       print k,v
fun4(id=1001,name='xx')
fun4(id=1001,name='xx',age=28)

Âí̤·ÉÑà дµÀ:
> ´ú±íÕâ¸ö²ÎÊýÊÇÒ»¸öÁбí»òÕßÊÇÔª×é¡£
> 2¸öÐǺŴú±íÊÇÒ»¸ö×ֵ䡣
>
> ÔÚ 06-10-23£¬jiang hongbo<larkdream在gmail.com> дµÀ£º
> 
>> ¿´µ½ÈçÏ´úÂ룬²»Ã÷°×ÕâÀï*µÄÓ÷¨£¬ËƺõÊǽ«size·Ö½âΪÀඨÒåÖеÄÁ½¸öÊôÐÔµÄÒâ˼£º
>> size = self.GetClientSize()
>> glViewport( 0,0, *size) #Ï൱ÓÚglViewport( 0,0, size.width,
>> size.height)
>> Çë½Ì´ó¼Ò*ºÅÕâÖÖÓ÷¨µÄÒâ˼ºÍ¸ÃÓÃÔÚʲôµØ·½£¬Ð»Ð»¡£
>> _______________________________________________
>> python-chinese
>> Post: send python-chinese在lists.python.cn
>> Subscribe: send subscribe to
>> python-chinese-request在lists.python.cn
>> Unsubscribe: send unsubscribe to
>> python-chinese-request在lists.python.cn
>> Detail Info:
>> http://python.cn/mailman/listinfo/python-chinese
>>
>> 
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

_______________________________________________
python-chinese
Post: send python-chinese在lists.python.cn
Subscribe: send subscribe to python-chinese-request在lists.python.cn
Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn
Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20061023/9e93020b/attachment.html 

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

2006年10月23日 星期一 14:41

Leira Hua lhua在altigen.com.cn
星期一 十月 23 14:41:32 HKT 2006

你所讲解的,是在形参(parameters)中,这种用法是python比较基本的。
但是楼主说的情况,似乎是*用在了实参(arguments)中,似乎是把一个列表替换成其 
各个成员填入形参中。这种用法,我还是第一次看到~

查了一下Python Reference Manual, 在5.3.4 Calls中,看到了这种用法:

If the syntax "*expression" appears in the function call, "expression"  
must evaluate to a sequence. Elements from this sequence are treated as if  
they were additional positional arguments; if there are postional  
arguments x1,...,xN , and "expression" evaluates to a sequence y1,...,yM,  
this is equivalent to a call with M+N positional arguments  
x1,...,xN,y1,...,yM.

If the syntax "**expression" appears in the function call, "expression"  
must evaluate to a (subclass of) dictionary, the contents of which are  
treated as additional keyword arguments. In the case of a keyword  
appearing in both "expression" and as an explicit keyword argument, a  
TypeError exception is raised.


对于在函数调用中,传入实参有形为*exp的,则exp必须是一个序列类型,将exp序列 
中的每一个元素按顺序填入到该函数的形参列表中:
>>> def fun(a, b, c, d):
...     print a, b, c, d
...
>>> li = [7,8]
>>> fun(1,2, *li)
1 2 7 8
>>>

对于在函数调用中,传入实参有形为**exp的,则exp必须是一个字典,将exp字典的内 
容,以关键字参数的方式填入函数的形参中,例子还是上面的fun()函数:
>>> di = {'b':7, 'c':8}
>>> fun(1, d=4, **di)
1 7 8 4
>>>


On Mon, 23 Oct 2006 09:58:12 +0800, amingsc  
<amingsc at gmail.com> wrote:

> 举个例子,下面的函数fun×完成显示参数的功能:
> def fun1(arg1,arg2,arg3):
>     print arg1,arg2,arg3,
> fun1(1,2,3)
>
> def fun2(args):
>     for i in args:print i,
> fun2([1,2,3])
> fun2([1,2,3,4])
>
> def fun3(*args)
>     for i in args:print i,
> fun3(1,2,3,4,5)
> fun3(1,2)
> 比较三个函数可以看出
> fun2比fun1灵活,因为fun1的参数个数固定
> fun3比fun2灵活,因为fun3的多个参数都不必用序列来传递,这在实现参数个数不
> 定的函数时很有用;
>
> 至于**类似,只是**表示的是带关键字的参数
> def fun4(**args):
>     for k,v in enumerate(args):
>        print k,v
> fun4(id=1001,name='xx')
> fun4(id=1001,name='xx',age=28)
>
> 马踏飞燕 写道:
>> 代表这个参数是一个列表或者是元组。
>> 2个星号代表是一个字典。
>>
>> 在 06-10-23,jiang hongbo<larkdream at gmail.com> 写道:
>>
>>> 看到如下代码,不明白这里*的用法,似乎是将size分解为类定义中的两个属性的 
>>> 意思:
>>> size = self.GetClientSize()
>>> glViewport( 0,0, *size)            #相当于glViewport( 0,0, size.width,
>>> size.height)
>>> 请教大家*号这种用法的意思和该用在什么地方,谢谢。
>>> _______________________________________________
>>> python-chinese
>>> Post: send python-chinese at lists.python.cn
>>> Subscribe: send subscribe to
>>> python-chinese-request at lists.python.cn
>>> Unsubscribe: send unsubscribe to
>>> python-chinese-request at lists.python.cn
>>> Detail Info:
>>> http://python.cn/mailman/listinfo/python-chinese
>>>
>>>
>> _______________________________________________
>> python-chinese
>> Post: send python-chinese at lists.python.cn
>> Subscribe: send subscribe to python-chinese-request at lists.python.cn
>> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
>> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese



-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/


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

2006年10月23日 星期一 14:54

fdcn fdcn64在gmail.com
星期一 十月 23 14:54:13 HKT 2006

thank you

On 10/23/06, Leira Hua <lhua在altigen.com.cn> wrote:
>
> 你所讲解的,是在形参(parameters)中,这种用法是python比较基本的。
> 但是楼主说的情况,似乎是*用在了实参(arguments)中,似乎是把一个列表替换成其
> 各个成员填入形参中。这种用法,我还是第一次看到~
>
> 查了一下Python Reference Manual, 在5.3.4 Calls中,看到了这种用法:
>
> If the syntax "*expression" appears in the function call, "expression"
> must evaluate to a sequence. Elements from this sequence are treated as if
> they were additional positional arguments; if there are postional
> arguments x1,...,xN , and "expression" evaluates to a sequence y1,...,yM,
> this is equivalent to a call with M+N positional arguments
> x1,...,xN,y1,...,yM.
>
> If the syntax "**expression" appears in the function call, "expression"
> must evaluate to a (subclass of) dictionary, the contents of which are
> treated as additional keyword arguments. In the case of a keyword
> appearing in both "expression" and as an explicit keyword argument, a
> TypeError exception is raised.
>
>
> 对于在函数调用中,传入实参有形为*exp的,则exp必须是一个序列类型,将exp序列
> 中的每一个元素按顺序填入到该函数的形参列表中:
> >>> def fun(a, b, c, d):
> ...     print a, b, c, d
> ...
> >>> li = [7,8]
> >>> fun(1,2, *li)
> 1 2 7 8
> >>>
>
> 对于在函数调用中,传入实参有形为**exp的,则exp必须是一个字典,将exp字典的内
> 容,以关键字参数的方式填入函数的形参中,例子还是上面的fun()函数:
> >>> di = {'b':7, 'c':8}
> >>> fun(1, d=4, **di)
> 1 7 8 4
> >>>
>
>
> On Mon, 23 Oct 2006 09:58:12 +0800, amingsc
> <amingsc在gmail.com> wrote:
>
> > 举个例子,下面的函数fun×完成显示参数的功能:
> > def fun1(arg1,arg2,arg3):
> >     print arg1,arg2,arg3,
> > fun1(1,2,3)
> >
> > def fun2(args):
> >     for i in args:print i,
> > fun2([1,2,3])
> > fun2([1,2,3,4])
> >
> > def fun3(*args)
> >     for i in args:print i,
> > fun3(1,2,3,4,5)
> > fun3(1,2)
> > 比较三个函数可以看出
> > fun2比fun1灵活,因为fun1的参数个数固定
> > fun3比fun2灵活,因为fun3的多个参数都不必用序列来传递,这在实现参数个数不
> > 定的函数时很有用;
> >
> > 至于**类似,只是**表示的是带关键字的参数
> > def fun4(**args):
> >     for k,v in enumerate(args):
> >        print k,v
> > fun4(id=1001,name='xx')
> > fun4(id=1001,name='xx',age=28)
> >
> > 马踏飞燕 写道:
> >> 代表这个参数是一个列表或者是元组。
> >> 2个星号代表是一个字典。
> >>
> >> 在 06-10-23,jiang hongbo<larkdream在gmail.com> 写道:
> >>
> >>> 看到如下代码,不明白这里*的用法,似乎是将size分解为类定义中的两个属性的
> >>> 意思:
> >>> size = self.GetClientSize()
> >>> glViewport( 0,0, *size)            #相当于glViewport( 0,0, size.width,
> >>> size.height)
> >>> 请教大家*号这种用法的意思和该用在什么地方,谢谢。
> >>> _______________________________________________
> >>> python-chinese
> >>> Post: send python-chinese在lists.python.cn
> >>> Subscribe: send subscribe to
> >>> python-chinese-request在lists.python.cn
> >>> Unsubscribe: send unsubscribe to
> >>> python-chinese-request在lists.python.cn
> >>> Detail Info:
> >>> http://python.cn/mailman/listinfo/python-chinese
> >>>
> >>>
> >> _______________________________________________
> >> python-chinese
> >> Post: send python-chinese在lists.python.cn
> >> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> >> Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> >> Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
>
> --
> Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20061023/b28e86ed/attachment-0001.html 

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

2006年10月23日 星期一 15:22

刘鑫 march.liu在gmail.com
星期一 十月 23 15:22:31 HKT 2006

ÔÚʵ²ÎÖÐͨ¹ý*ÔËËã·û½â¹¹´«µÝÒ»¸öÐòÁлòÕßͨ¹ý**ÔËËã·û´«µÝÒ»¸ö×ֵ䣬ÊÇÎÒ¾­³£×öµÄÊÂÇ飺£©¡£

2006/10/23, Leira Hua <lhua在altigen.com.cn>:
>
> ÄãËù½²½âµÄ,ÊÇÔÚÐβÎ(parameters)ÖУ¬ÕâÖÖÓ÷¨ÊÇpython±È½Ï»ù±¾µÄ¡£
> µ«ÊÇÂ¥Ö÷˵µÄÇé¿ö£¬ËƺõÊÇ*ÓÃÔÚÁËʵ²Î(arguments)ÖУ¬ËƺõÊÇ°ÑÒ»¸öÁбíÌæ»»³ÉÆä
> ¸÷¸ö³ÉÔ±ÌîÈëÐβÎÖС£ÕâÖÖÓ÷¨£¬ÎÒ»¹ÊǵÚÒ»´Î¿´µ½~
>
> ²éÁËÒ»ÏÂPython Reference Manual£¬ ÔÚ5.3.4 CallsÖУ¬¿´µ½ÁËÕâÖÖÓ÷¨£º
>
> If the syntax "*expression" appears in the function call, "expression"
> must evaluate to a sequence. Elements from this sequence are treated as if
> they were additional positional arguments; if there are postional
> arguments x1,...,xN , and "expression" evaluates to a sequence y1,...,yM,
> this is equivalent to a call with M+N positional arguments
> x1,...,xN,y1,...,yM.
>
> If the syntax "**expression" appears in the function call, "expression"
> must evaluate to a (subclass of) dictionary, the contents of which are
> treated as additional keyword arguments. In the case of a keyword
> appearing in both "expression" and as an explicit keyword argument, a
> TypeError exception is raised.
>
>
> ¶ÔÓÚÔÚº¯Êýµ÷ÓÃÖУ¬´«Èëʵ²ÎÓÐÐÎΪ*expµÄ£¬Ôòexp±ØÐëÊÇÒ»¸öÐòÁÐÀàÐÍ£¬½«expÐòÁÐ
> ÖеÄÿһ¸öÔªËØ°´Ë³ÐòÌîÈëµ½¸Ãº¯ÊýµÄÐβÎÁбíÖУº
> >>> def fun(a, b, c, d):
> ...     print a, b, c, d
> ...
> >>> li = [7,8]
> >>> fun(1,2, *li)
> 1 2 7 8
> >>>
>
> ¶ÔÓÚÔÚº¯Êýµ÷ÓÃÖУ¬´«Èëʵ²ÎÓÐÐÎΪ**expµÄ£¬Ôòexp±ØÐëÊÇÒ»¸ö×ֵ䣬½«exp×ÖµäµÄÄÚ
> ÈÝ£¬ÒԹؼü×Ö²ÎÊýµÄ·½Ê½ÌîÈ뺯ÊýµÄÐβÎÖУ¬Àý×Ó»¹ÊÇÉÏÃæµÄfun()º¯Êý£º
> >>> di = {'b':7, 'c':8}
> >>> fun(1, d=4, **di)
> 1 7 8 4
> >>>
>
>
> On Mon, 23 Oct 2006 09:58:12 +0800, amingsc
> <amingsc在gmail.com> wrote:
>
> > ¾Ù¸öÀý×Ó£¬ÏÂÃæµÄº¯Êýfun¡ÁÍê³ÉÏÔʾ²ÎÊýµÄ¹¦ÄÜ£º
> > def fun1(arg1,arg2,arg3):
> >     print arg1,arg2,arg3,
> > fun1(1,2,3)
> >
> > def fun2(args):
> >     for i in args:print i,
> > fun2([1,2,3])
> > fun2([1,2,3,4])
> >
> > def fun3(*args)
> >     for i in args:print i,
> > fun3(1,2,3,4,5)
> > fun3(1,2)
> > ±È½ÏÈý¸öº¯Êý¿ÉÒÔ¿´³ö
> > fun2±Èfun1Áé»î£¬ÒòΪfun1µÄ²ÎÊý¸öÊý¹Ì¶¨
> > fun3±Èfun2Áé»î£¬ÒòΪfun3µÄ¶à¸ö²ÎÊý¶¼²»±ØÓÃÐòÁÐÀ´´«µÝ£¬ÕâÔÚʵÏÖ²ÎÊý¸öÊý²»
> > ¶¨µÄº¯ÊýʱºÜÓÐÓã»
> >
> > ÖÁÓÚ**ÀàËÆ,Ö»ÊÇ**±íʾµÄÊÇ´ø¹Ø¼ü×ֵIJÎÊý
> > def fun4(**args):
> >     for k,v in enumerate(args):
> >        print k,v
> > fun4(id=1001,name='xx')
> > fun4(id=1001,name='xx',age=28)
> >
> > Âí̤·ÉÑà дµÀ:
> >> ´ú±íÕâ¸ö²ÎÊýÊÇÒ»¸öÁбí»òÕßÊÇÔª×é¡£
> >> 2¸öÐǺŴú±íÊÇÒ»¸ö×ֵ䡣
> >>
> >> ÔÚ 06-10-23£¬jiang hongbo<larkdream在gmail.com> дµÀ£º
> >>
> >>> ¿´µ½ÈçÏ´úÂ룬²»Ã÷°×ÕâÀï*µÄÓ÷¨£¬ËƺõÊǽ«size·Ö½âΪÀඨÒåÖеÄÁ½¸öÊôÐÔµÄ
> >>> Òâ˼£º
> >>> size = self.GetClientSize()
> >>> glViewport( 0,0, *size)            #Ï൱ÓÚglViewport( 0,0, size.width,
> >>> size.height)
> >>> Çë½Ì´ó¼Ò*ºÅÕâÖÖÓ÷¨µÄÒâ˼ºÍ¸ÃÓÃÔÚʲôµØ·½£¬Ð»Ð»¡£
> >>> _______________________________________________
> >>> python-chinese
> >>> Post: send python-chinese在lists.python.cn
> >>> Subscribe: send subscribe to
> >>> python-chinese-request在lists.python.cn
> >>> Unsubscribe: send unsubscribe to
> >>> python-chinese-request在lists.python.cn
> >>> Detail Info:
> >>> http://python.cn/mailman/listinfo/python-chinese
> >>>
> >>>
> >> _______________________________________________
> >> python-chinese
> >> Post: send python-chinese在lists.python.cn
> >> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> >> Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> >> Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
>
> --
> Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese




-- 
»¶Ó­·ÃÎÊ£º
http://blog.csdn.net/ccat

ÁõöÎ
March.Liu
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20061023/64357829/attachment.htm 

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

2006年10月23日 星期一 16:45

amingsc amingsc在gmail.com
星期一 十月 23 16:45:24 HKT 2006

哈哈,这样的啊,俺大意了,不过其实是一回事,反正是函数进行参数传递时进行
的特殊处理罢了,这个特殊处理也就是用“*序列”来将序列解包成序列中的各个元
素,以实现形参与实参的匹配及传递,这两种情况也就是“*”操作分别出现在形参
与实参的区别啦!
FUN(*实参 ~  形参)
FUN( 实参 ~ *形参)
python不加这个*也是完全可以的,只不过加上就使得用户不需要自己编码进行解
包,用起来更省事,这正体现了python本身的宗旨--让一切变得更简单!
例子:
def fun1(a,b,c):
    print a,b,c
def fun2(*abc):
    for i in abc:print i,

>>> fun1(*[1,2,3])
1 2 3
>>> fun1(**{'a':1,'b':2,'c':3})
1 2 3
>>> fun1(**{'a':1,'c':3,'b':2})
1 2 3

>>> fun2( 1,2,3 )
1 2 3



fdcn 写道:
> thank you
>
> On 10/23/06, *Leira Hua* <lhua at altigen.com.cn 
> lhua at altigen.com.cn>> wrote:
>
>     你所讲解的,是在形参(parameters)中,这种用法是python比较基本的。
>     但是楼主说的情况,似乎是*用在了实参(arguments)中,似乎是把一个列表
>     替换成其
>     各个成员填入形参中。这种用法,我还是第一次看到~
>
>     查了一下Python Reference Manual, 在5.3.4 Calls中,看到了这种用法:
>
>     If the syntax "*expression" appears in the function call,
>     "expression"
>     must evaluate to a sequence. Elements from this sequence are
>     treated as if
>     they were additional positional arguments; if there are postional
>     arguments x1,...,xN , and "expression" evaluates to a sequence
>     y1,...,yM,
>     this is equivalent to a call with M+N positional arguments
>     x1,...,xN,y1,...,yM.
>
>     If the syntax "**expression" appears in the function call,
>     "expression"
>     must evaluate to a (subclass of) dictionary, the contents of which
>     are
>     treated as additional keyword arguments. In the case of a keyword
>     appearing in both "expression" and as an explicit keyword argument, a
>     TypeError exception is raised.
>
>
>     对于在函数调用中,传入实参有形为*exp的,则exp必须是一个序列类型,
>     将exp序列
>     中的每一个元素按顺序填入到该函数的形参列表中:
>     >>> def fun(a, b, c, d):
>     ...     print a, b, c, d
>     ...
>     >>> li = [7,8]
>     >>> fun(1,2, *li)
>     1 2 7 8
>     >>>
>
>     对于在函数调用中,传入实参有形为**exp的,则exp必须是一个字典,将
>     exp字典的内
>     容,以关键字参数的方式填入函数的形参中,例子还是上面的fun()函数:
>     >>> di = {'b':7, 'c':8}
>     >>> fun(1, d=4, **di)
>     1 7 8 4
>     >>>
>
>
>     On Mon, 23 Oct 2006 09:58:12 +0800, amingsc
>     < amingsc at gmail.com amingsc at gmail.com>> wrote:
>
>     > 举个例子,下面的函数fun×完成显示参数的功能:
>     > def fun1(arg1,arg2,arg3):
>     >     print arg1,arg2,arg3,
>     > fun1(1,2,3)
>     >
>     > def fun2(args):
>     >     for i in args:print i,
>     > fun2([1,2,3])
>     > fun2([1,2,3,4])
>     >
>     > def fun3(*args)
>     >     for i in args:print i,
>     > fun3(1,2,3,4,5)
>     > fun3(1,2)
>     > 比较三个函数可以看出
>     > fun2比fun1灵活,因为fun1的参数个数固定
>     > fun3比fun2灵活,因为fun3的多个参数都不必用序列来传递,这在实现参
>     数个数不
>     > 定的函数时很有用;
>     >
>     > 至于**类似,只是**表示的是带关键字的参数
>     > def fun4(**args):
>     >     for k,v in enumerate(args):
>     >        print k,v
>     > fun4(id=1001,name='xx')
>     > fun4(id=1001,name='xx',age=28)
>     >
>     > 马踏飞燕 写道:
>     >> 代表这个参数是一个列表或者是元组。
>     >> 2个星号代表是一个字典。
>     >>
>     >> 在 06-10-23,jiang hongbo<larkdream at gmail.com
>     larkdream at gmail.com>> 写道:
>     >>
>     >>> 看到如下代码,不明白这里*的用法,似乎是将size分解为类定义中的
>     两个属性的
>     >>> 意思:
>     >>> size = self.GetClientSize()
>     >>> glViewport( 0,0, *size)            #相当于glViewport( 0,0,
>     size.width,
>     >>> size.height)
>     >>> 请教大家*号这种用法的意思和该用在什么地方,谢谢。
>     >>> _______________________________________________
>     >>> python-chinese
>     >>> Post: send python-chinese at lists.python.cn
>     python-chinese at lists.python.cn>
>     >>> Subscribe: send subscribe to
>     >>> python-chinese-request at lists.python.cn
>     python-chinese-request at lists.python.cn>
>     >>> Unsubscribe: send unsubscribe to
>     >>> python-chinese-request at lists.python.cn
>     python-chinese-request at lists.python.cn>
>     >>> Detail Info:
>     >>> http://python.cn/mailman/listinfo/python-chinese
>     >>>
>     >>>
>     >> _______________________________________________
>     >> python-chinese
>     >> Post: send python-chinese at lists.python.cn
>     python-chinese at lists.python.cn>
>     >> Subscribe: send subscribe to
>     python-chinese-request at lists.python.cn
>     python-chinese-request at lists.python.cn>
>     >> Unsubscribe: send unsubscribe
>     to  python-chinese-request at lists.python.cn
>     python-chinese-request at lists.python.cn>
>     >> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>     >
>     > _______________________________________________
>     > python-chinese
>     > Post: send python-chinese at lists.python.cn
>     python-chinese at lists.python.cn>
>     > Subscribe: send subscribe to
>     python-chinese-request at lists.python.cn
>     python-chinese-request at lists.python.cn>
>     > Unsubscribe: send unsubscribe
>     to  python-chinese-request at lists.python.cn
>     python-chinese-request at lists.python.cn>
>     > Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
>
>     --
>     Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
>
>     _______________________________________________
>     python-chinese
>     Post: send python-chinese at lists.python.cn
>     python-chinese at lists.python.cn>
>     Subscribe: send subscribe to
>     python-chinese-request at lists.python.cn
>     python-chinese-request at lists.python.cn>
>     Unsubscribe: send unsubscribe
>     to  python-chinese-request at lists.python.cn
>     python-chinese-request at lists.python.cn>
>     Detail Info: http://python.cn/mailman/listinfo/python-chinese
>     <http://python.cn/mailman/listinfo/python-chinese>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese


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

2006年10月24日 星期二 02:33

jiang hongbo larkdream在gmail.com
星期二 十月 24 02:33:17 HKT 2006

      谢谢大家,这么一说俺就明白了。

以前就知道*做形参的时候的用法,没想到做实参时也可以这么用。和形参的这种用法结合,可以派上不少用场啊,比C语言的不定参数用法要灵活,更加动态。
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061024/990707b1/attachment.html 

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号