首页 > 解决方案 > 如何将函数属性用作python对象以及字符串

问题描述

基本上我的代码看起来像这样被一些日志记录包围:

df_name.to_sql('df_name', engine, index=False)

我想做的是将它包装成一个函数并使用df_name两次:

def df_2_sql(df):
   df.to_sql(f'{df}', engine, index=False)

df_list = [df_table_a, df_table_b, df_table_c]

for df in df_list: 
    df_2_sql(df)

...我预计f'{df}'会工作,但遗憾的是没有。我想将 df_list 用作熊猫对象以及to_sql()函数中表名的一部分。

我已经尝试过使用两个列表

df_list = [df_table_a, df_table_b, df_table_c]
df_list = ['df_table_a', 'df_table_b', 'df_table_c']

..和一个需要两个参数的函数,但感觉不正确或不聪明。我究竟做错了什么?

标签: pythonpython-3.xpandas

解决方案


使用字典

将变量名转换为字符串不是一个好主意。如果您需要此功能,请构建一个字典并将键值对提供给您的函数:

def df_2_sql(df, name):
   df.to_sql(name, engine, index=False)

df_dict = {'df_table_a': df_table_a,
           'df_table_b': df_table_b,
           'df_table_c': df_table_c}

for name, df in df_dict.items():
    df_2_sql(df, name)

如果这看起来冗长且效率低下,请注意您必须在之前的代码中的某处df_table_a定义,df_table_b等。只需从一开始就使用字典并分配给,等。df_dict['df_table_a']df_dict['df_table_b']


推荐阅读