当前位置: 首页 > news >正文

python转换函数使用_【已解决】Python中,将字符串转换为函数,并且实现带参数的函数调用...

【问题】

主模块BlogToWordpress.py,子模块分别是BlogNetease.py和BlogBaidu.py.

主模块中想要调用某个函数,比如loginBlog,希望可以动态的获得对应的子模块中的该函数,然后调用。

此问题即为,根据函数中所传入的某个函数的名字,如何找到对应的函数,并且调用该函数。

【解决过程】

1.关于Python中将字符串转化为函数的问题,找了一下,找到这个:

2.参考其写法,实现了对应的代码,可以实现对应的,将传入的字符串,转化为函数了,但是,对于函数的调用,网上所能找到的帖子,都只是介绍的是转换为函数后,无参数的调用,即contertedFunc();的调用,而我此处需要也传递对应的参数,实现将字符串转换为函数后,再带参数去调用对应的函数。

经过一番折腾,实现了下面的代码,虽然方法很挫,效率很低,但是还是可以暂时先用用的。def callBlogFunc(funcToCall, *paraList):

blogProvider = "";

funcName = funcToCall.func_name;

if(blogIsNetease()):

trueFunc = getattr(BlogNetease, funcName); # BlogNetease is a module

logging.info("Now will cll netease function: %s", funcName);

elif (blogIsBaidu()) :

trueFunc = getattr(BlogBaidu, funcName); # BlogBaidu is a module

logging.info("Now will cll baidu function: %s", funcName);

else:

logging.error("Invalid blog provider");

sys.exit(2);

return;

print "trueFunc=",trueFunc;

trueFunc(); # can call the true function now

if(paraLen == 1):

return trueFunc(paraList[0]);

elif (paraLen == 2):

return trueFunc(paraList[0], paraList[1]);

elif (paraLen == 3):

return trueFunc(paraList[0], paraList[1], paraList[2]);

elif (paraLen == 4):

return trueFunc(paraList[0], paraList[1], paraList[2], paraList[3]);

elif (paraLen == 5):

return trueFunc(paraList[0], paraList[1], paraList[2], paraList[3], paraList[4]);

elif (paraLen == 6):

return trueFunc(paraList[0], paraList[1], paraList[2], paraList[3], paraList[4], paraList[5]);

elif (paraLen == 7):

return trueFunc(paraList[0], paraList[1], paraList[2], paraList[3], paraList[4], paraList[5], paraList[6]);

elif (paraLen == 8):

return trueFunc(paraList[0], paraList[1], paraList[2], paraList[3], paraList[4], paraList[5], paraList[6], paraList[7]);

else :

logging.error("Not support function parameters exceed 8 !");

sys.exit(2);

return;

def testStrToFunc():

callBlogFunc(loginBlog, username, password);

3. 也尝试过,把代码改为:

def callBlogFunc(funcToCall, **paraDict)

然后希望实现,不通过if判断参数个数,就可以动态的把paraDict中的变量,传递到转换后的函数中,但是未果。

希望以后可以找到更加高效的办法。

相关文章:

  • phpthink验证旧密码_【法制警示】宁夏一手机店老板将他人旧手机回收,竟盗取其支付宝中5000余元......
  • python dll_python调用C dll api
  • pythoncsv数据类型_pandas读取CSV文件时查看修改各列的数据类型格式
  • python标准库os的方法_Python标准库os.path包、glob包使用实例
  • python数字排序_python中如何对数字排序
  • 有趣的python项目_Python几个有趣和特别的小故事
  • python缩进格式错误修改_17个新手常见Python运行时错误
  • python什么是关键字参数_python的位置参数、默认参数、关键字参数、可变参数区别...
  • python数学计算函数_python之数学函数篇
  • linux双系统_windows下的Linux子系统,双系统的日子结束了
  • dos命令执行bat文件_dos命令tree图文教程,树形图形显示路径目录文件和文件夹...
  • python可以爬什么_Java可以像Python一样方便爬去世间万物
  • python二分法结果图_求助,python的二分法查找,按照视频上的代码写下来,结果运行错误...
  • vnpy怎么创建策略并回测_一步一步学vnpy
  • win7 安装c++2008失败0x80070002_3Dmax安装常见的六大问题
  • JavaScript-如何实现克隆(clone)函数
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • AWS实战 - 利用IAM对S3做访问控制
  • Bytom交易说明(账户管理模式)
  • codis proxy处理流程
  • Laravel 实践之路: 数据库迁移与数据填充
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • SpingCloudBus整合RabbitMQ
  • vue学习系列(二)vue-cli
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 初识MongoDB分片
  • 动态规划入门(以爬楼梯为例)
  • ------- 计算机网络基础
  • 设计模式走一遍---观察者模式
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一文看透浏览器架构
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 7行Python代码的人脸识别
  • Android开发者必备:推荐一款助力开发的开源APP
  • #stm32整理(一)flash读写
  • #考研#计算机文化知识1(局域网及网络互联)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (搬运以学习)flask 上下文的实现
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .net经典笔试题
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .Net小白的大学四年,内含面经
  • /usr/bin/env: node: No such file or directory