zoukankan      html  css  js  c++  java
  • python动态函数名的研究

    所谓动态函数名,就是使用时完全不知道是叫什么名字,可以由用户输入那种。

    一般人习惯性会想到eval或exec, 但是众所周知,这样的写法不安全而且容易引起问题,而且不pythonic。而且使用时必须把函数定义写在动态函数名调用之前。

    def _phyCPU():
        print "ok"
    values = ["_phyCPU"]#, "_proCPU", "_cpuModel"]
    for value in values:
        eval(value)()  

    所以得采用更好的方式,对于在类里的动态函数名,可以使用getattr的方式。

    class A:   
        def __init__(self):   
            self.name = 'zhangjing'  
        #self.age='24'
        def method(self):   
            print"method print"  
      
    Instance = A()   
    print getattr(Instance , 'name, 'not find') #如果Instance 对象中有属性name则打印self.name的值,否则打印'not find'

    但是有时候我们写的函数不在类里,这种情况下需要调用动态函数名,可以使用locals()

    def foo():
        print "ok"
    locals()["foo"]()
    

     

  • 相关阅读:
    MapReduce实例
    hadoop 分布式安装
    redis缓存
    Flink初始
    Flume初始
    大数据学习之路(持续更新中...)
    使用VisualVM分析性能
    JVM的理解
    Java日记
    UI笔记2
  • 原文地址:https://www.cnblogs.com/slqt/p/5481260.html
Copyright © 2011-2022 走看看