python - 使用变量作为函数名和字符串
问题描述
我有以下代码
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?
解决方案
使用属性__name__
:
def MyCompute(srt):
df[srt.__name__] = srt()
df['1min' + srt.__name__] = 1 - df[srt.__name__]
MyCompute(srt=RS)
MyCompute(srt=BS)
推荐阅读
- python-3.x - 如何在不调用所有比较的情况下迭代 if 语句?
- python-3.x - 将输入传递给python3中的Curl命令
- python - 在 Data.VRT 中为 GDALTranslaste 参考纬度/经度 VRT 文件
- jquery - 使用 calc() 为 jQuery-ui 对话框的高度设置它基于窗口高度
- reactjs - 验证器不是函数错误 - 对最终表单字段数组做出反应
- ruby-on-rails - 在 Ruby on Rails 中使用 simple_form 的不同方式 有什么区别?
- kotlin - 如何用范围填充可变参数?
- audio - Youtube-Dl 的 Windows CMD 提示符。无法将多个 youtube mp3 播放列表下载到特定文件夹中
- xcode - 为什么 xcode 不再有创建测试的选项?
- ruby-on-rails-4 - Capistrano deploy:assets:restore_manifest Rails 资产清单文件(或备份文件)未找到