美文网首页
Python 2.7 的奇特用法

Python 2.7 的奇特用法

作者: 研究路上 | 来源:发表于2017-04-15 14:39 被阅读44次

    Python 2.7 的奇特用法

    字符串

    1. 如何生成诸如 "0001.jpg","0002.jpg"等有规则的文件名?

      # 文件名后缀
      ext = "jpg"
      # 文件名数字的位数
      nz = 4
      # 文件名的模板
      imgFormat = "{0}{1}{2}{3}".format("{0:0", nz, "d}.", ext)
      # 得到的结果为 '{0:04d}.jpg',这是说明生成的文件名的数字至少有4位,不足在左边由0补齐
      # 生成数字对应的文件名
      # 对于第 n = 4 个文件
      n = 4
      imgName = imgFormat.format(n)
      # 得到的结果为 '0004.jpg'
      
    2. 如何得到某 python 函数名的字符串表示,反之如何根据字符串调用对应的函数?

      • 这里主要参考一个关于 matlab 与 python 函数对应的答案
      """求得函数名"""
      # 先定义一个函数
      def func1():
          print "func1"
          pass
      # 获取 func1 函数的函数名 'func1'
      func1_str = func1.__name__
      
      """根据函数名来调用函数 方法1"""
      # 再定义一个函数
      def func2(test_str):
          print "calling from str using eval"
          print "func2's param is: {0}".format(str(test_str))
          pass
      # 采用 eval 函数进行调用
      test_str = 'hello_2333'
      eval('func2({0})'.format(test_str))
      
      """根据函数名来调用函数 方法2"""
      # 假设函数 func3 在模块 module_A 中被定义
      test_str = 'hello_module_A_2333'
      def func3(test_str):
          print "calling from str using module_A"
          print "func3's param is: {0}".format(str(test_str))
      # 采用调用模块属性的方式进行调用
      import module_A
      module_A.getattr('func3')(test_str)
      

    函数调用

    1. 给定算法名列表["ASLA", "DTH", "FFT"],如何调用诸如 run_ASLA, run_DTH, run_FFT 等函数?

      • 这里有一个隐含假设,就是三种函数的参数列表应该一致
      import sys
      # 算法名列表
      algoNameList = ["ASLA","DTH", "FFT"]
      # 函数名模板
      funcNameFormat = "run_{0}(params)"
      # 依次调用
      for algoName in algoNameList:
          try:
              result = eval(funcName.format(algoName))
          except:
              print "Failed to execute {0}: {1}".format(algoName, sys.exc_info())
              pass
      

    相关文章

      网友评论

          本文标题:Python 2.7 的奇特用法

          本文链接:https://www.haomeiwen.com/subject/ruinattx.html