急问:python中问题

hft19850423 2009-04-18 10:16:28
请问如何将从xml解析出的函数名(字符串类型)作为函数存入到tuple类型变量中,谢谢!

例如:
a="fun1" #fun1是我定义的一个函数

...全文
243 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kiuyongfa218 2009-04-28
  • 打赏
  • 举报
回复
使用反射机制,globals或是locals,通过定义这个命名空间,反射到相应的函数。
globals()['fun1']

locals()['fun1']
kiuyongfa218 2009-04-23
  • 打赏
  • 举报
回复
同意7楼的哥们,用locals或globals将表示函数的字符串映射为函数名字,使用起来很方便,特别是在需要动态声明变量,并动态使用时,很方便。
CDSoftwareWj 2009-04-23
  • 打赏
  • 举报
回复
同意9楼 嘿嘿
不得闲 2009-04-21
  • 打赏
  • 举报
回复
使用lxml来处理xml的分析很容易的哦
sharp_future 2009-04-21
  • 打赏
  • 举报
回复
def ppt(request):
pc = Home.objects.get(id=1).ppt_count
ppt = Ppt.objects.all()[:pc]
return render_to_response('ppt.xml', {'ppt':ppt,})
自己调用
DDGG 2009-04-20
  • 打赏
  • 举报
回复
上面如果要让b成为一个tuple,需要在行末括号前加个逗号,遗漏了呵呵。
DDGG 2009-04-20
  • 打赏
  • 举报
回复
def fun1(s):
print "fun1(%s) ..." % s

a='fun1'
b= (locals()[a])

print b
b("1234")


---------------

<function fun1 at 0x00A56D30>
fun1(1234) ...

chg_lele 2009-04-19
  • 打赏
  • 举报
回复
没太理解清你的想法,不过我按照自己理解的给你提供点思路。
你解析出func1这个字符串,但想存在字典中的是他的函数,是这个意思么?
如果是这样的话,可以先定义一个字典,类似于:
{"func1": func1,} #func1为函数所生成的对象,之后在解析XML后,在稍微转换一下

[Quote=引用 6 楼 hft19850423 的回复:]
其实就是这样的
这是xml文件
<?xml version="1.0" encoding="UTF-8"?>
<rulelist>
<rule>
<key>asdf </key>
<hook>func1 </hook>
<level>4 </level>
<warning>this is warning </warning>
<suggestion>Consider using another </suggestion>
<category>buffer </category>
<url> </url>
<other>
<a>12 </a>
<b>23 </b>
</other>
</rul…
[/Quote]
hft19850423 2009-04-19
  • 打赏
  • 举报
回复
补充上贴:

func1是自己定义的函数,level, a, b标签里都是整数类型
url和other标签里可能为空
hft19850423 2009-04-19
  • 打赏
  • 举报
回复
其实就是这样的
这是xml文件
<?xml version="1.0" encoding="UTF-8"?>
<rulelist>
<rule>
<key>asdf</key>
<hook>func1</hook>
<level>4</level>
<warning>this is warning</warning>
<suggestion>Consider using another</suggestion>
<category>buffer</category>
<url></url>
<other>
<a>12</a>
<b>23</b>
</other>
</rule>
</rulelist>

需要解析成下面的格式
c_dict={"asdf":(func1, 4, "this is warning", "Consider using another", "buffer", "", {'a':12, 'b':23}}

请大家帮帮忙,小弟刚开始学python,时间有点急!谢谢
duzif 2009-04-18
  • 打赏
  • 举报
回复
不太明白你的意思,是问怎么实现动态调用?用getattr

比如使用list对象的append方法你可以这样:
getattr(list, 'append')('hello')
guzl86 2009-04-18
  • 打赏
  • 举报
回复
学习
hft19850423 2009-04-18
  • 打赏
  • 举报
回复
我是想作为函数对象存入一个tuple中,想用的时候直接取用即可。

例如:

def fun1()

从xml里面解析出来a='fun1'
b是一个tuple类型的变量

想达到效果是b(fun1,)

请问大家该怎样实现?谢谢啦
lixq2000 2009-04-18
  • 打赏
  • 举报
回复
路过学习
iambic 2009-04-18
  • 打赏
  • 举报
回复
首先要保证把函数都写在一个module里(非必要,但是推荐)。然后import这个module,然后获得函数:
func = getattr(module, func_name)

37,741

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧