-
python通过字符串调用函数
2018-09-19 20:46:19通过字符串调用已经定义好的函数 初始状态 def chinese(text): print("jieba分词") def english(text): print("nltk处理对文本进行分词") def textprocess(file, language): text = open...通过字符串调用已经定义好的函数
初始状态
def chinese(text): print("jieba分词") def english(text): print("nltk处理对文本进行分词") def textprocess(file, language): text = open(file).read() # 字符串调用函数 language(text) file = '1.txt' language = 'english' textprocess(file, language)
but
textprocess(file, language)
language(text)
TypeError: ‘str’ object is not callable字典调用
# The first def chinese(text): print("jieba分词") def english(text): print("nltk处理对文本进行分词") str_func_pair = {"chinese": chinese, 'english': english} def textprocess(file, language): text = open(file).read() # 字典调用函数名 str_func_pair[language](text) file = '1.txt' language = 'english' textprocess(file, language)
globals()或者eval
使用globals()函数获取全局变量,其实实现方式跟字典差不多
def chinese(text): print("jieba分词") def english(text): print("nltk处理对文本进行分词") # 查看全局变量 print(globals()) def textprocess(file, language): text = open(file).read() eval(language)(text) #或者通过globals调用函数名 # globals()[language](text) file = '1.txt' language = 'english' textprocess(file, language)
because
print(globals)
{‘name’: ‘main’,
‘doc’: None,
‘package’: None,
‘loader’: <_frozen_importlib_external.SourceFileLoader object at 0x7f5d6000f1d0>,
‘spec’: None,
‘annotations’: {},
‘builtins’: <module ‘builtins’ (built-in)>,
‘file’: ‘/home/yue/PycharmProjects/web_static_server/dict_def.py’,
‘cached’: None,
‘chinese’: <function chinese at 0x7f5d60033e18>,
‘english’: <function english at 0x7f5d5e5c3510>} -
Python通过字符串调用函数
2018-04-26 21:53:28有时候我们想通过字符串调用已经定义好的函数,一开始的思路及实现方式如下:def chinese(text): print('jieba分词')def english(text): print('nltk处理对文本进行分词')def textprocess(file, language): text ...有时候我们想通过字符串调用已经定义好的函数,一开始的思路及实现方式如下:
def chinese(text): print('jieba分词')
def english(text): print('nltk处理对文本进行分词')
def textprocess(file, language): text = open(file).read() #字符串调用chinese()或english()函数。 language(text)
#调用函数file =
'
data.txt
'
language =
'english'
textprocess(file, language)
但是
textprocess(file='data.txt', language='english') language(text) TypeError: 'str' object is not callable
百度谷歌一番,我查到以下几种方式
1-字典
最简单,易上手的方式,使用字典配对。
def chinese(text): print('jieba分词')
def english(text): print('nltk处理对文本进行分词')
str_func_pair = {'chinese': chinese, 'english': english}
def textprocess(file, language): text = open(file).read()
#字典调用出函数名 str_func_pair[language](text) file ='data.txt'
language ='english'
textprocess(file, language)2- globals()
使用globals()函数获取全局变量,其实实现方式跟字典差不多。我们先看看代码当前的变量们有哪些
def chinese(text): print('jieba分词')
def english(text): print('nltk处理对文本进行分词')
#查看全局变量
print(globals())我们发现这不就是字典吗?
{'__name__': '__main__',
'__doc__': None,
此处省略一部分变量,方便展示
'chinese': <function chinese at 0x101f62e18>,
'english': <function english at 0x10453ca60>}于是
def chinese(text): print('jieba分词')
def english(text): print('nltk处理对文本进行分词')
def textprocess(file, language): text = open(file).read() #globals()调用出函数名 globals()[language](text)
file ='data.txt'
language ='english'
textprocess(file, language)3-eval()
eval英文名翻译过来大概是等同的意思。
data = "[1,2,3,4]"
print(type(data))
print(type(eval(data)))我们发现,eval可以将字符串转化为我们想要的列表对象。
<class 'str'>
<class 'list'>据此,我们用eval也可以用字符串调用函数
def chinese(text): print('jieba分词')
def english(text): print('nltk处理对文本进行分词')
def textprocess(file, language): text = open(file).read() eval(language)(text)
file ='data.txt'
language ='english'
textprocess(file, language)
-
JavaScript通过字符串调用方法
2018-10-15 11:27:19同学:如何通过名称字符串调用方法呢? 我:不是可以通过反射吗? 同学:那(js)javascropt呢? 我:咦咦咦,等我想想!!!!!! 我(内心独白):这个咋个没有遇到过呢,好像以前遇到都是在java中,那么js没有有...同学:如何通过名称字符串调用方法呢?
我:不是可以通过反射吗?
同学:那(js)javascropt呢?
我:咦咦咦,等我想想!!!!!!
我(内心独白):这个咋个没有遇到过呢,好像以前遇到都是在java中,那么js没有有这种方法呢?咦好像以前用过字符串计算(eval(“1+2+3-1+1.3”)),可以直接对字符串计算的东西,这个可以吗?不管了百度一下在说!
JavaScript eval() 函数 W3school官网的定义
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。- 进行常规的运算测试:值得注意的是,进行算数运算,的字符串必须是数字类型的字符串,即不可以包含非数字(空格除外,运算符除外)
<html> <body> <script type="text/javascript"> console.log("eval('1+2+3')="+eval("1+2+3")); console.log("eval('3&5')="+eval("3&5")); // console.log(eval("1+ 2+d"));错误的,不能包含非数字(空格除外,运算符除外) </script> </body> </html>
- 测试方法:通过传入(函数名称+参数)字符串,进行函数调用
<html> <body> <script type="text/javascript"> console.log("eval('1+2+3')="+eval("1+2+3")); function fn(val){console.log(val)};//这里可以进行复杂的业务了 eval("fn('我是测试strfn')");//也可以分开传递参数 eval("fn"+"('小白')"); eval("fn"+"('小白')"); </script> </body> </html>
其他测试就不一一举例:小白大多测试都通过,最后添加异常,判断等处理,防止出现异常,eval还是有很多强制性,感觉容易出现错误,所以使用时,还是要小心一点。
小白在此,谢谢大家指导。谢谢。
-
python中通过字符串调用同名函数
2017-08-06 16:07:26本文记录在python中如何根据字符串调用以该字符串命名的函数的方法。 主要可以通过以下两种方式调用 使用getattr方法 使用__dict__字典 上代码 import sysmethod = 'get_sum'def get_sum(a, b): return a + bif ...本文记录在python中如何根据字符串调用以该字符串命名的函数的方法。
主要可以通过以下两种方式调用
- 使用
getattr
方法 - 使用
__dict__
字典
上代码
import sys method = 'get_sum' def get_sum(a, b): return a + b if __name__ == '__main__': #方法一:通过getattr mod = sys.modules["__main__"] sum = getattr(mod, method) print sum(4, 3) #方法二:通过__dict__字典 print mod.__dict__[method](2, 6)
- 使用
-
python 使用函数名的字符串调用函数 5种方法
2019-10-30 13:16:44python 使用函数名的字符串调用函数 5种方法 废话不多说,直接上代码 # python 使用函数名的字符串调用函数 5种方法 def chinese(text): print("chinese",text) def english(text): print("english",text)... -
js根据字符串调用函数(三种实现方式)
2019-02-19 11:48:10js根据字符串 调用函数 依赖 underscore.js 代码 //模拟js 通过字符串执行函数 _.mixin({ /**基于字符串获取 函数名称和参数对象 //不准持有无效的引号 * 示例 test(1,5,6,7); * @params str 字符... -
Python 通过字符串调用类方法或方法
2019-04-08 14:22:42今天遇到个问题,在一个类里面,想要通过字符串调用类里面的方法,即(注意,以下为错误代码演示,只是为了表述问题): class A(object): def a(self): print('xxxxx') def b(self): c= 'a' self.c() ... -
python--根据字符串调用类方法或函数
2018-05-16 23:44:17本文作者使用的python版本为: python 3.5.1根据字符串调用类方法使用python内置函数getattr可实现。getattr函数输入一个类对象和一个字符串,返回与字符串同名的类对象的属性。该函数原型为: getattr(object, name... -
通过字符串调用对象属性或方法
2017-08-15 17:45:27有时候需要将属性或方法作为参数传入,这个时候可以通过以下几种方式用字符串调用对象属性或方法1、evalIn [634]: def getmethod(x,char='just for test'): ...: return eval('str.%s' % x)(char) ...: In [635]: ... -
PHP通过字符串调用函数的代码
2016-03-11 13:12:57学习php通过字符串调用函数。 1. call_user_func function a($b,$c){ echo $b; echo $c; } call_user_func('a', "111","222"); call_user_func('a', "333","444"); //显示 111 222 333 444 ?> ... -
Python 通过函数名的字符串调用对应的函数
2018-12-09 16:43:51Python 通过函数名的字符串调用对应的函数 使用 getattr() 函数可以实现: class func_factory: def func_name1(self, x): print('func_name1', x) def func_name2(self, x): print('func_name2', x) f_factory... -
java通过字符串调用方法,java反射应用实例
2016-05-25 22:18:49有时候我们希望像Javascript一样通过字符串调用方法,这就需要用到java的反射机制了。 下面给出一个示例: 1、先写一个测试的被调用方法(在 com.test 包下的 MyTest 方法,故全类名就是 com.test.MyTest) ... -
python中根据字符串调用函数
2016-05-30 14:13:36在python中可以根据字符串来调用函数: 1、 使用getattr从字符串来调用函数 在多进程中,可能传递过来的是一个字符串,那么我怎么来调用一个已经存在的函数呢,主要就是使用到getattr函数的作用,这个函数... -
golang通过反射使用json字符串调用struct的指定方法及返回json结果
2016-11-02 19:55:17golang通过反射使用json字符串调用struct的指定 -
利用java反射根据方法名称字符串调用方法
2018-06-24 21:27:40前提:由对象获取一个.class对象:Class clazz = "hello world".getClass();由对象的全包名获取一个.class对象:Class clazz=Class.forName("java.lang.String");学习的时候发现,int等基本数据... -
字符串调用change方法
2018-08-19 22:46:45这个原来是因为在调用change方法时,str和ch传递的都是引用,在方法中修改了ch指向对象的内容,由于形参与实参指向相同的对象,因此通过形参对对象内容的修改对实参是可见的。对于str来说,修改的是引用本身,也就是... -
C++ 根据字符串 调用同名函数
2016-09-02 17:18:52根据字符串,调用与字符串同名函数: #include #include #include typedef void (*pFunc)(); std::map strFuncMap; void func1() { printf("this is func1!\n"); } void func2() { printf("this is func2!\... -
【DLL动态链接库】labview调用Dll数组调用,字符串调用和结构体调用
2019-03-29 16:38:211、写函数如下,实现对数组x的和,结果保存到sum 函数配置如下,选择数组、数据类型是double,维数1,数组数据指针。...3、传递字符串。 4、结构传递(结构指针) 5、结构传递(结构非指针,这个... -
thymeleaf js中拼接字符串调用
2019-01-14 09:47:492. 字符串拼接传值 \'li_'+${fv.id}+'\' th:onclick="'javascript:deleteUser(\'li_'+${fv.id}+'\')' ">thymeleaf删除 效果: ('li_4536')">thymeleaf删除 3. 字符串拼接传值 2 'li_[[${fv.id}... -
C#中如何传入一个字符串参数作为静态变量名 根据字符串调用不同的静态变量。
2017-05-19 15:08:42比如 public void Method(String a,int b) { Form1.a=b; } 有两个静态变量 一个是abc 另一个是asd 传入abc就调用Form.abc 传入asd就调用Form.asd 请问怎么样才能做到。 -
go反射通过字符串调用方法
2017-12-19 15:26:00这样的话,你就有一个办法了,比如别人给我一个字符串”MyMissionMethod”,然后我要调用对应的方法,我可以做一个map,对应的value是mission,这个mission就是MyMissionMethod的interface类型,最后就可以调用之。... -
Nodejs根据字符串调用对象方法
2013-02-19 20:13:47根据字符串动态调用方法是一个很有用的技巧,在nodejs中: var kiwi = { name:'kiwi', say:function () { console.log("my name is" + this.name); } } kiwi['say'](); // => my name is kiwi -
Go 根据字符串调用指定函数
2016-08-11 17:25:20于是乎HandleFunc()写的满屏都是……就想着模拟MVC思想,根据URL的路径自动调用指定的控制器方法,岂不是很好; 2、尝试使用Go的反射功能,初步实现了原理算法; 3、需要引入“reflect”包,使用reflect.ValueOf()... -
在VFP中巧用字符串调用Windows API
2004-04-01 00:00:00在VFP中巧用字符串调用Windows API点击此处阅读全文