Python 2.7 的奇特用法
字符串
-
如何生成諸如 "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'
-
如何得到某 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ù)調用
-
給定算法名列表["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
?