美文网首页
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