免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1922 | 回复: 2
打印 上一主题 下一主题

想要把类似的函数存入一个list, for ... in 一次性调用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-22 10:32 |只看该作者 |倒序浏览
# 定义了多个具有相同接口的函数
def foo1():
    pass
   
def foo2():
    pass
   
def foo3():
    pass
   
   
# 现在想把他们存储在一个 list 中,用 for ... in 的形式 调用,达到一次性完成所有任务的目的

# 1.求一段样本代码

# 2.如果函数都以object 形式存储在list中后, 如何获得真实的函数名

# 3.有没有比较简单的  避免手工语句添加每一个函数名到list, 而采用类似自动注册函数名的方法?

谢谢~

论坛徽章:
0
2 [报告]
发表于 2010-03-22 11:27 |只看该作者

  1. def insert_list(q):
  2.     def _(fun):
  3.         q.append(fun)
  4.         return fun
  5.     return _

  6. fun_list=[]

  7. @insert_list(fun_list)
  8. def a():return 'hello'

  9. @insert_list(fun_list)
  10. def b():return 'world'

  11. for fun in fun_list:
  12.     print fun.__name__,fun()


复制代码

论坛徽章:
0
3 [报告]
发表于 2010-03-22 13:06 |只看该作者
本帖最后由 iamkey9 于 2010-03-23 10:13 编辑

回复 2# 3227049

感谢!

再次请教,如果函数名字在在一个外部的string 变量中被定义后,譬如
fooname="b"

是不是一定要用这种方式调用?
for fun in fun_list:
     if fun.__name__==fooname:
          fun()


#=========================================
查到了,记录一下:
>>> a
<function a at 0x9e1964c>
>>> eval("a")
<function a at 0x9e1964c>
>>> eval("a")()
'hello'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP