当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [py]如何对付邪恶的可变参数?
帖子发表于 : 2012-03-06 19:09 

注册: 2011-06-27 0:57
帖子: 190
送出感谢: 7
接收感谢: 2
传说中有这么一种函数:
代码:
def func(*a):
    # OOXX...


他们的参数是可变的。

而我正试图动态生成参数,比如将一个列表中的东西当作这个参数。
按照情况参数可以是(1),(1,2)或是(1,2,3)

难道要用eval这种会留下黑历史的东西?


_________________
我的github: https://github.com/fy0


最后由 fy0 编辑于 2012-03-06 19:30,总共编辑了 2 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: [py]如何对付邪恶的可变参数?
帖子发表于 : 2012-03-06 19:12 
头像

注册: 2010-06-16 1:05
帖子: 14668
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
说实话,我没懂


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
3 楼 
 文章标题 : Re: [py]如何对付邪恶的可变参数?
帖子发表于 : 2012-03-06 19:27 

注册: 2011-06-27 0:57
帖子: 190
送出感谢: 7
接收感谢: 2
枫叶饭团 写道:
说实话,我没懂

好吧,举个具体例子。

现在我正在使用web.py,用web.form.Form()来初始化一些控件。
比如:
代码:
    baseform = form.Form(
            form.Textbox('name',description=u"名字:"),
            form.Dropdown('type',args=['0 ','1 ',  '2 ,'3'],description=u"类别:"),
            form.Textbox('rely',description=u"依赖:")
    )


这个类本身的定义是这个样子:
代码:
class Form(object):
    def __init__(self, *inputs, **kw):
        self.inputs = inputs


比如现在我忽然想要生成一堆Checkbox,就象这样:
代码:
    baseform = form.Form(
            form.Checkbox('cb1'),
            form.Checkbox('cb2'),
            form.Checkbox('cb3'),
            form.Checkbox('cbN')
    )


但是N不可知,能不能想个办法来用代码完成这个工作?


_________________
我的github: https://github.com/fy0


页首
 用户资料  
 
4 楼 
 文章标题 : Re: [py]如何对付邪恶的可变参数?
帖子发表于 : 2012-03-06 19:50 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
[python]
args = [
form.Checkbox('cb1'),
form.Checkbox('cb2'),
form.Checkbox('cb3'),
form.Checkbox('cbN'),
]
baseform = form.Form(*args)
[/python]

乖,好好看教程


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
5 楼 
 文章标题 : Re: [py]如何对付邪恶的可变参数?
帖子发表于 : 2012-03-06 19:53 

注册: 2011-06-27 0:57
帖子: 190
送出感谢: 7
接收感谢: 2
lilydjwg 写道:
[python]
args = [
form.Checkbox('cb1'),
form.Checkbox('cb2'),
form.Checkbox('cb3'),
form.Checkbox('cbN'),
]
baseform = form.Form(*args)
[/python]

乖,好好看教程


忽然感觉像是身中流弹数发,然后望天内牛满面不止……


_________________
我的github: https://github.com/fy0


页首
 用户资料  
 
6 楼 
 文章标题 : Re: [py]如何对付邪恶的可变参数?
帖子发表于 : 2012-03-11 23:34 
头像

注册: 2010-10-09 23:01
帖子: 7210
送出感谢: 8
接收感谢: 23
想到了Common Lisp的&rest修饰符,Python没有apply这样的函数吗? :em09


_________________
GitHub博客——稍微改了一下版面(于2012/8/23
新浪微博——话痨
新浪博客——伪技术博客
GitHub主页——充斥眼球的Common Lisp


页首
 用户资料  
 
7 楼 
 文章标题 : Re: [py]如何对付邪恶的可变参数?
帖子发表于 : 2012-03-11 23:39 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
dict 参数同理……


附件:
2012-03-11-233825_568x372_scrot.png
2012-03-11-233825_568x372_scrot.png [ 20.2 KiB | 被浏览 1384 次 ]



_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
页首
 用户资料  
 
8 楼 
 文章标题 : Re: [py]如何对付邪恶的可变参数?
帖子发表于 : 2012-03-15 8:23 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
liu滔 写道:
想到了Common Lisp的&rest修饰符,Python没有apply这样的函数吗? :em09

那是什么?


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
9 楼 
 文章标题 : Re: [py]如何对付邪恶的可变参数?
帖子发表于 : 2012-03-15 9:58 
头像

注册: 2010-10-09 23:01
帖子: 7210
送出感谢: 8
接收感谢: 23
lilydjwg 写道:
liu滔 写道:
想到了Common Lisp的&rest修饰符,Python没有apply这样的函数吗? :em09

那是什么?

例如定义一个Common Lisp函数有&rest修饰符如下
[lisp]
(defun foo (&rest args) (print args))
[/lisp]
那么可以用apply来这样调用,
[lisp]
(apply #'foo '(1 2 3))
(apply #'foo '(1 2 3 4))
[/lisp]
相当于手写下面的代码
[lisp]
(foo 1 2 3)
(foo 1 2 3 4)
[/lisp]
不知道是不是和你们讲的是差不多的东西呢 :em06


_________________
GitHub博客——稍微改了一下版面(于2012/8/23
新浪微博——话痨
新浪博客——伪技术博客
GitHub主页——充斥眼球的Common Lisp


页首
 用户资料  
 
10 楼 
 文章标题 : Re: [py]如何对付邪恶的可变参数?
帖子发表于 : 2012-03-15 10:31 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
liu滔 写道:
lilydjwg 写道:
liu滔 写道:
想到了Common Lisp的&rest修饰符,Python没有apply这样的函数吗? :em09

那是什么?

例如定义一个Common Lisp函数有&rest修饰符如下
[lisp]
(defun foo (&rest args) (print args))
[/lisp]
那么可以用apply来这样调用,
[lisp]
(apply #'foo '(1 2 3))
(apply #'foo '(1 2 3 4))
[/lisp]
相当于手写下面的代码
[lisp]
(foo 1 2 3)
(foo 1 2 3 4)
[/lisp]
不知道是不是和你们讲的是差不多的东西呢 :em06

哦,Python 不需要 apply 的。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Yahoo [Bot] 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译