Python 2.7の奇抜な使い方
1849 ワード
Python 2.7の奇抜な使い方
文字列では、「0001.jpg」、「0002.jpg」などの規則的なファイル名をどのように生成しますか? python関数名の文字列表現をどのように取得し、逆に文字列に基づいて対応する関数を呼び出すか. ここでは主にmatlabとpython関数に対応する答え を参照する.
関数呼び出し与えられたアルゴリズム名リスト["ASLA","DTH","FFT"]はrun_ASLA, run_DTH, run_FFTなどの関数は? ここには、3つの関数のパラメータリストが 一致するべきであるという暗黙的な仮定がある.
文字列
#
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'
""" """
#
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)
関数呼び出し
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