python动态函数名的研究
2024-10-16 03:06:20
所谓动态函数名,就是使用时完全不知道是叫什么名字,可以由用户输入那种。
一般人习惯性会想到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"]()
最新文章
- 【hrbust2293】棋盘村
- A Plug for UNIX 分类: POJ 图论 函数 2015-08-10 14:18 2人阅读 评论(0) 收藏
- 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客
- xcode 工具 alcatraz---备用
- VMware虚拟机服务的vmware-hostd自动启动和停止
- 初涉算法——C++
- JUnit 异常处理
- 8天入门docker系列 —— 第一天 docker出现前的困惑和简单介绍
- algorithm的基本注意事项
- [cookie篇]cookie-parser之parser.js
- Rust 的安装和使用举例
- RabbitMQ--Publish/Subscribe(三)
- CAS 5.1.x 的搭建和使用(四)—— 配置使用HTTP协议访问的服务端
- zuoyeQAQ
- eclipse中android开发怎么修改xml文件字体大小
- C++常见错误坑洞
- 批处理for命令详解(转)
- 【JUC源码解析】AQS
- [codeforces/gym/101350/L]维护“凸包”
- squid 代理服务
热门文章
- 最长上升子序列LIS(51nod1134)
- Java NIO -- 直接缓冲区与非直接缓冲区
- android关闭日志
- A1067. Sort with Swap(0,*)
- isinstance和issubclass,__getattribute__,__getitem__,__setitem__,delitem__,__str__(三十五)
- Ansible playbook 批量修改服务器密码 先普通后root用户
- java基础基础总结----- 常用DOS命令(一)
- P4147 玉蟾宫
- my soft
- 多目标遗传算法 ------ NSGA-II (部分源码解析)父、子种群合并 merge.c