Python论坛  - 讨论区

标题:[python-chinese] Python中有没有类似于PHP中function_exists的函数

2007年07月17日 星期二 15:16

Xell Zhang xellzhang在gmail.com
星期二 七月 17 15:16:46 HKT 2007

¾ÍÊÇÅжϽÐij¸öÃû×ֵĺ¯ÊýÊÇ·ñ´æÔÚ¡£

ÁíÍâ¾ÍÊÇÓÐûÓÐÀàËÆPHPÖÐcall_user_func_arrayµÄº¯Êý£¿

-- 
Zhang Xiao

Engineer, Web development

Ethos Tech.
http://www.ethos.com.cn
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070717/95f29982/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月17日 星期二 15:27

limodou limodou在gmail.com
星期二 七月 17 15:27:48 HKT 2007

On 7/17/07, Xell Zhang <xellzhang在gmail.com> wrote:
> 就是判断叫某个名字的函数是否存在。
>
> 另外就是有没有类似PHP中call_user_func_array的函数?
>
可以考虑使用try/except来保护一下,另外如果是类的方法,可以使用hasattr,如果是全局方法,可以在func in globals()进行判断。

-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月17日 星期二 17:03

Xell Zhang xellzhang在gmail.com
星期二 七月 17 17:03:20 HKT 2007

ÊÇÕâÑùµÄ£¬±ÈÈçÓû§ÊäÈëfunction_name =
'hell'£¬ÎÒÏëÅжÏÊÇ·ñÓк¯Êý½Ð×ösay_hello£¬ÔÚphpÖÐÎÒ¿ÉÒÔÓÃfunction_exists('say' +
function_name)À´ÅжÏÕâ¸öº¯ÊýÊÇ·ñ´æÔÚ£¬Èç¹û´æÔÚ£¬ÎÒ¿ÉÒÔÓÃcall_user_func_array('say' +
function_name)À´µ÷ÓÃÕâ¸öº¯Êý¡£

pythonÄÜ×öÀàËƵÄÊÂÇéÂð£¿

On 7/17/07, limodou <limodou在gmail.com> wrote:
>
> On 7/17/07, Xell Zhang <xellzhang在gmail.com> wrote:
> > ¾ÍÊÇÅжϽÐij¸öÃû×ֵĺ¯ÊýÊÇ·ñ´æÔÚ¡£
> >
> > ÁíÍâ¾ÍÊÇÓÐûÓÐÀàËÆPHPÖÐcall_user_func_arrayµÄº¯Êý£¿
> >
> ¿ÉÒÔ¿¼ÂÇʹÓÃtry/exceptÀ´±£»¤Ò»Ï£¬ÁíÍâÈç¹ûÊÇÀàµÄ·½·¨£¬¿ÉÒÔʹÓÃhasattr£¬Èç¹ûÊÇÈ«¾Ö·½·¨£¬¿ÉÒÔÔÚfunc in
> globals()½øÐÐÅжϡ£
>
> --
> I like python!
> UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
> My Blog: http://www.donews.net/limodou
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese




-- 
Zhang Xiao

Engineer, Web development

Ethos Tech.
http://www.ethos.com.cn
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070717/dce57ab1/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月17日 星期二 17:08

Zoom.Quiet zoom.quiet在gmail.com
星期二 七月 17 17:08:47 HKT 2007

On 7/17/07, Xell Zhang <xellzhang在gmail.com> wrote:
> 是这样的,比如用户输入function_name =
> 'hell',我想判断是否有函数叫做say_hello,在php中我可以用function_exists('say'
> +
> function_name)来判断这个函数是否存在,如果存在,我可以用call_user_func_array('say'
> + function_name)来调用这个函数。
>
>  python能做类似的事情吗?
咔咔咔!
你print dir() 看一下就知道怎么作了 ;)

>
> On 7/17/07, limodou <limodou在gmail.com> wrote:
> > On 7/17/07, Xell Zhang <xellzhang在gmail.com> wrote:
> > > 就是判断叫某个名字的函数是否存在。
> > >
> > > 另外就是有没有类似PHP中call_user_func_array的函数?
> > >
> >
> 可以考虑使用try/except来保护一下,另外如果是类的方法,可以使用hasattr,如果是全局方法,可以在func
> in globals()进行判断。
> >
> > --
> > I like python!
> > UliPad <>:
> http://wiki.woodpecker.org.cn/moin/UliPad
> > My Blog: http://www.donews.net/limodou
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> > Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>
>
> --
> Zhang Xiao
>
> Engineer, Web development
>
> Ethos Tech.
> http://www.ethos.com.cn
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>


-- 
'''Time is unimportant, only life important!
http://zoomquiet.org
blog在http://blog.zoomquiet.org/pyblosxom/
wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet
scrap在http://floss.zoomquiet.org
douban在http://www.douban.com/people/zoomq/
____________________________________
Pls. use OpenOffice.org to replace M$ Office.
     http://zh.openoffice.org
Pls. use 7-zip to replace WinRAR/WinZip.
     http://7-zip.org/zh-cn/
You can get the truely Freedom 4 software.
'''

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月17日 星期二 17:22

huyuxin huyx在uniwelltech.com
星期二 七月 17 17:22:22 HKT 2007

def str2func(str):
try:
func = eval(str)
except NameError, e:
return None
if callable(func):
return func
return None

print str2func('dir') # 
print str2func('hello') # None

Xell Zhang 写道:
> 是这样的,比如用户输入function_name = 'hell',我想判断是否有函数叫做
> say_hello,在php中我可以用function_exists('say' + function_name)来判断
> 这个函数是否存在,如果存在,我可以用call_user_func_array('say' +
> function_name)来调用这个函数。
>
> python能做类似的事情吗?
>
> On 7/17/07, *limodou* <limodou在gmail.com limodou在gmail.com>>
> wrote:
>
>     On 7/17/07, Xell Zhang <xellzhang在gmail.com
>     xellzhang在gmail.com>> wrote:
>     > 就是判断叫某个名字的函数是否存在。
>     >
>     > 另外就是有没有类似PHP中call_user_func_array的函数?
>     >
>     可以考虑使用try/except来保护一下,另外如果是类的方法,可以使用
>     hasattr,如果是全局方法,可以在func in globals()进行判断。
>
>     --
>     I like python!
>     UliPad <>:
>     http://wiki.woodpecker.org.cn/moin/UliPad
>     My Blog: http://www.donews.net/limodou
>     _______________________________________________
>     python-chinese
>     Post: send python-chinese在lists.python.cn
>     python-chinese在lists.python.cn>
>     Subscribe: send subscribe to
>     python-chinese-request在lists.python.cn
>     python-chinese-request在lists.python.cn>
>     Unsubscribe: send unsubscribe to
>     python-chinese-request在lists.python.cn
>     python-chinese-request在lists.python.cn>
>     Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月17日 星期二 17:34

limodou limodou在gmail.com
星期二 七月 17 17:34:31 HKT 2007

On 7/17/07, Xell Zhang <xellzhang在gmail.com> wrote:
> 是这样的,比如用户输入function_name =
> 'hell',我想判断是否有函数叫做say_hello,在php中我可以用function_exists('say'
> +
> function_name)来判断这个函数是否存在,如果存在,我可以用call_user_func_array('say'
> + function_name)来调用这个函数。
>
>  python能做类似的事情吗?
>
可以使用

    func = globals().get('say'+function_name, None)
    if func and callable(func):
        func(arg)
-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号