精华内容
下载资源
问答
  • 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 代码。

    1. 进行常规的运算测试:值得注意的是,进行算数运算,的字符串必须是数字类型的字符串,即不可以包含非数字(空格除外,运算符除外)
    <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>
    
    

    这里插入图片描述](https://img-blog.csdn.net/20181015110210857?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xqY2MxMjI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

    1. 测试方法:通过传入(函数名称+参数)字符串,进行函数调用
    <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中如何根据字符串调用以该字符串命名的函数的方法。

    主要可以通过以下两种方式调用

    1. 使用getattr方法
    2. 使用__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种方法 废话不多说,直接上代码 # python 使用函数名的字符串调用函数 5种方法 def chinese(text): print("chinese",text) def english(text): print("english",text)...
  • js根据字符串 调用函数 依赖 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 通过函数名的字符串调用对应的函数 使用 getattr() 函数可以实现: class func_factory: def func_name1(self, x): print('func_name1', x) def func_name2(self, x): print('func_name2', x) f_factory...
  • 有时候我们希望像Javascript一样通过字符串调用方法,这就需要用到java的反射机制了。 下面给出一个示例: 1、先写一个测试的被调用方法(在 com.test 包下的 MyTest 方法,故全类名就是 com.test.MyTest) ...
  • python中根据字符串调用函数

    千次阅读 2016-05-30 14:13:36
    在python中可以根据字符串调用函数:   1、 使用getattr从字符串调用函数   在多进程中,可能传递过来的是一个字符串,那么我怎么来调用一个已经存在的函数呢,主要就是使用到getattr函数的作用,这个函数...
  • golang通过反射使用json字符串调用struct的指定
  • 前提:由对象获取一个.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!\...
  • 1、写函数如下,实现对数组x的和,结果保存到sum 函数配置如下,选择数组、数据类型是double,维数1,数组数据指针。...3、传递字符串。 4、结构传递(结构指针) 5、结构传递(结构非指针,这个...
  • thymeleaf js中拼接字符串调用

    千次阅读 2019-01-14 09:47:49
    2. 字符串拼接传值 \'li_'+${fv.id}+'\' th:onclick="'javascript:deleteUser(\'li_'+${fv.id}+'\')' ">thymeleaf删除 效果: ('li_4536')">thymeleaf删除 3. 字符串拼接传值 2 'li_[[${fv.id}...
  • 比如 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点击此处阅读全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,776
精华内容 19,510
关键字:

字符串调用