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号