2006年10月26日 星期四 09:12
ÕýÔÚÊÔÓÃPil¿â£¬ÔÚÁí´æÎªÍ¼ÏñÎļþµÄʱºò£¬¿´Ô´ÂëÊÇ¿ÉÒÔ½ÓÊÕÒ»¸ö±àÂë²ÎÊý¡£
º¯ÊýµÄ¶¨ÒåÊÇ£º
def save(self, fp, format=None, **params):
µ«ÎÒÔÚÊÔÓõÄÊÔÓõÄʱºò¡£
×ÜÊÇÖ»ÄÜ im.save('e:/2.jpg', 'JPEG')
ºóÃæÎÞÂÛÔÚ¼Óʲô£¬¶¼Ìáʾ
TypeError: save() takes at most 3 arguments (4 given)
ÔÙÔÚIDLEµÄº¯ÊýÌáʾÖУ¬ÔòÊÇ(fp, format=None, ***)
Õâ¸ö***¸ÃÔõôÀ´Ê¹Óá£
½ØÍ¼¡£
--
feihu <feihu.list在gmail.com>
-------------- 下一部分 --------------
Ò»¸ö·ÇÎı¾¸½¼þ±»Çå³ý...
·¢ÐÅÈË: %(who)s
Ö÷Ìâ: %(subject)s
ÈÕÆÚ: %(date)s
´óС: 4089
Url: http://python.cn/pipermail/python-chinese/attachments/20061026/0e3a1880/attachment-0001.png
2006年10月26日 星期四 09:18
> > 函数的定义是: > def save(self, fp, format=None, **params): > 两个*,说明后面可以接任意的关键字参数。 -- http://codeplayer.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20061026/ece612dd/attachment.html
2006年10月26日 星期四 09:34
你看看下面的例子就明白啦
>>>def fun(a,b,**params):
print 'a:',a
print 'b:',b
for k in params.keys():print k,':',params[k]
>>>fun(1,2)
a: 1
b: 2
>>>fun(1,2,c=3,d=4)
a: 1
b: 2
c : 3
d : 4
**params表示是关键字参数的嘛,所以后面你得像这样的“c=3,d=4”
feihu 写道:
> 正在试用Pil库,在另存为图像文件的时候,看源码是可以接收一个编码参数。
> 函数的定义是:
> def save(self, fp, format=None, **params):
> 但我在试用的试用的时候。
> 总是只能 im.save('e:/2.jpg', 'JPEG')
> 后面无论在加什么,都提示
> TypeError: save() takes at most 3 arguments (4 given)
>
> 再在IDLE的函数提示中,则是(fp, format=None, ***)
> 这个***该怎么来使用。
>
> 截图。
>
>
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> 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
2006年10月26日 星期四 09:43
On 10/26/06, feihu <feihu.list在gmail.com> wrote: > 正在试用Pil库,在另存为图像文件的时候,看源码是可以接收一个编码参数。 > 函数的定义是: > def save(self, fp, format=None, **params): > 但我在试用的试用的时候。 > 总是只能 im.save('e:/2.jpg', 'JPEG') > 后面无论在加什么,都提示 > TypeError: save() takes at most 3 arguments (4 given) > > 再在IDLE的函数提示中,则是(fp, format=None, ***) > 这个***该怎么来使用。 > > 截图。 我想这里的save()函数可能只是一个入口,它会调用下层实际的save方法,因此这里这为了通用使用了可变关键字参数,但是当使用具体的save()方法时,可能它并不需要多余的参数,因此当你传入过多参数时就会出错。 而你的调用形式为: im.save('e:/2.jpg', 'JPEG') 转化一下就变成: Image.save(im, 'e:/2.jpg', 'JPEG') 因为python自动将im与save绑定了,所以im就是第一个参数,这样:im, 'e:/2.jpg', 'JPEG'已经是三个参数了。 -- I like python! UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad My Blog: http://www.donews.net/limodou
2006年10月26日 星期四 09:44
解决了。声明时的一个* 和两个* 在使用是是有区别的。 如果是 def a(*args)的形式,接收的是可变参数。 直接a(1, 2, 3)就Ok了。 def a(**args)的形式,接收的字典形式的参数 直接a(x=1, y=2, z=3)就Ok了。 > > > > 函数的定义是: > > def save(self, fp, format=None, **params): > > > > 两个*,说明后面可以接任意的关键字参数。 > > -- > http://codeplayer.blogspot.com/ -- feihu <feihu.list在gmail.com>
Zeuux © 2025
京ICP备05028076号