Python 2.7の奇抜な使い方

1849 ワード

Python 2.7の奇抜な使い方
文字列
  • では、「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'
    
  • 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)
    

    関数呼び出し
  • 与えられたアルゴリズム名リスト["ASLA","DTH","FFT"]はrun_ASLA, run_DTH, run_FFTなどの関数は?
  • ここには、3つの関数のパラメータリストが
  • 一致するべきであるという暗黙的な仮定がある.
    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