python调用函数方法_Python通过eval调用函数及其他使用函数名字符串调用函数的方法...

Python中exec,eval函数都可以通过函数名直接调用函数,exec,eval的参数都为一个字符串,不同的是,exec将字符串当成python表达式来执行不返回结果,而eval将接收的字符串当作表达式来执行,并返回结果。具体的例子请看下面:

example1:

def a():

print '1'

func_a = 'a'

eval(func_a)()

结果:1

———————————————————————————–

example2:

def a():

print '1'

def b():

print '2'

def c():

print '3'

func_list = ['a','c']

for func in func_list:

eval(func)()

结果:1

3

是不是很方便,当然也有它的缺点,那就是安全性差。

不使用eval使用函数名字符串调用函数其他方法

example1:

# Call it

func()For example:class A:

def __init__(self):

pass

def sampleFunc(self, arg):

print('you called sampleFunc({})'.format(arg))

m = globals()['A']()

func = getattr(m, 'sampleFunc')

func('sample arg')  ##调用

example2:

假设模块foo有函数bar:

import foo

methodToCall = getattr(foo, 'bar')

result = methodToCall()

或者一行搞定

result = getattr(foo, 'bar')()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值