Python 2.7 的奇特用法

Python 2.7 的奇特用法

字符串

  1. 如何生成諸如 "0001.jpg","0002.jpg"等有規(guī)則的文件名?

    # 文件名后綴
    ext = "jpg"
    # 文件名數(shù)字的位數(shù)
    nz = 4
    # 文件名的模板
    imgFormat = "{0}{1}{2}{3}".format("{0:0", nz, "d}.", ext)
    # 得到的結果為 '{0:04d}.jpg',這是說明生成的文件名的數(shù)字至少有4位,不足在左邊由0補齊
    # 生成數(shù)字對應的文件名
    # 對于第 n = 4 個文件
    n = 4
    imgName = imgFormat.format(n)
    # 得到的結果為 '0004.jpg'
    
  2. 如何得到某 python 函數(shù)名的字符串表示,反之如何根據(jù)字符串調用對應的函數(shù)?

    • 這里主要參考一個關于 matlab 與 python 函數(shù)對應的答案
    """求得函數(shù)名"""
    # 先定義一個函數(shù)
    def func1():
        print "func1"
        pass
    # 獲取 func1 函數(shù)的函數(shù)名 'func1'
    func1_str = func1.__name__
    
    """根據(jù)函數(shù)名來調用函數(shù) 方法1"""
    # 再定義一個函數(shù)
    def func2(test_str):
        print "calling from str using eval"
        print "func2's param is: {0}".format(str(test_str))
        pass
    # 采用 eval 函數(shù)進行調用
    test_str = 'hello_2333'
    eval('func2({0})'.format(test_str))
    
    """根據(jù)函數(shù)名來調用函數(shù) 方法2"""
    # 假設函數(shù) 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)
    

    ?

函數(shù)調用

  1. 給定算法名列表["ASLA", "DTH", "FFT"],如何調用諸如 run_ASLA, run_DTH, run_FFT 等函數(shù)?

    • 這里有一個隱含假設,就是三種函數(shù)的參數(shù)列表應該一致
    import sys
    # 算法名列表
    algoNameList = ["ASLA","DTH", "FFT"]
    # 函數(shù)名模板
    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
    

    ?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容