首页 > 解决方案 > 使用变量作为函数名和字符串

问题描述

我有以下代码

import pandas as pd
df = pd.DataFrame(columns=['var1', 'var2','var3'])
df.loc[0] = [0,1,2]

def RS():
    x = 123
    y = 456
    z = 'And some more random shit'
    return x+y

def BS():
    x = -890
    y = (456*1)+90
    z = 'And some more random shit'
    return x-y

def MyCompute(srt, srt_string):
    df[srt_string] = srt()
    df['1min' + srt_string] = 1-df[srt_string]

MyCompute(srt=RS, srt_string='RS')
MyCompute(srt=BS, srt_string='BS')

有没有办法避免调用MyCompute函数时出现双RS和双BS?

标签: pythonstringvariables

解决方案


使用属性__name__

def MyCompute(srt):
    df[srt.__name__] = srt()
    df['1min' + srt.__name__] = 1 - df[srt.__name__]

MyCompute(srt=RS)
MyCompute(srt=BS)

推荐阅读