Python NameError:未定义名称“writer”
在这段实际代码中,已经定义了writer和row,但如果我决定实现多个_df,则会出现一些错误,如下所示: 我得到了writer的以下错误,但row也发生了同样的事情Python NameError:未定义名称“writer”,python,function,parameter-passing,local-variables,nameerror,Python,Function,Parameter Passing,Local Variables,Nameerror,在这段实际代码中,已经定义了writer和row,但如果我决定实现多个_df,则会出现一些错误,如下所示: 我得到了writer的以下错误,但row也发生了同样的事情 我如何修复这些错误?我不想在多个df中重新定义它们,但我还需要在将来的函数中重新定义它们。即使您从writer存在的作用域调用函数,被调用方也看不到它,这正是python的作用域规则的工作方式 我建议让您的multiple_dfs函数接受另一个名为writer的参数,您可以从调用者函数传递该参数。如果除了writer之外还要传递多
我如何修复这些错误?我不想在多个df中重新定义它们,但我还需要在将来的函数中重新定义它们。即使您从writer存在的作用域调用函数,被调用方也看不到它,这正是python的作用域规则的工作方式 我建议让您的multiple_dfs函数接受另一个名为writer的参数,您可以从调用者函数传递该参数。如果除了writer之外还要传递多个参数,则需要使用变量参数
Traceback (most recent call last):
File "create_and_update_xlsx_sheets.py", line 66, in <module>
create_and_update_worksheets()
File "create_and_update_xlsx_sheets.py", line 56, in create_and_update_worksheets
multiple_dfs(item, 'Game Schedule')
File "create_and_update_xlsx_sheets.py", line 33, in multiple_dfs
df.to_excel(writer, sheets, startrow=row, index=False)
NameError: name 'writer' is not defined
调用多个\u dfs:
首先,您可以将writer传递给使用它的函数。函数如何知道使用它无权访问的变量?writer不是一个全局变量。@cᴏʟᴅsᴘᴇᴇᴅ 你是说多个项目、工作表、书写器、行吗?我希望避免这种做法。我是否可以将writer定义为“创建工作表”和“更新工作表”函数中的全局变量?你有什么建议?为什么你想避免一些事情,而去做一些你应该避免的事情?全局变量是一种不好的做法,会导致代码的味道,而且,您不应该在这里真正使用全局变量,因为编写器在函数退出之前就关闭了。@cᴏʟᴅsᴘᴇᴇᴅ 假设我在两个函数中都有variable1、variable2、…、variableN,有点像writer和row,我认为显示多个项目、工作表、writer、row、variable1、…、variableN不是一个好的做法。在这种情况下你有什么建议?传递一个列表或变量参数@J.Doe添加这一行:writer,row=args[:2],似乎您需要阅读python教程。另外,因为你的错误而不接受答案有点不公平,你不觉得吗?不要让人接受。当我的问题完全解决后,我会接受答案。@J.Doe您是否意识到,要访问变量,必须声明它?multiple_dfs将您的writer设置为args[0],因此您应该以这种方式访问它,或者将其分配给其他对象。如果您不知道这一点,则意味着您需要阅读python教程,了解变量和参数传递的工作原理。
def multiple_dfs(item, sheets):
"""
Put multiple dataframes into one xlsx sheet
"""
response = send_request(item).content
df = pd.read_csv(io.StringIO(response.decode('utf-8')))
df.to_excel(writer, sheets, startrow=row, index=False)
row = row + len(df) + 2
Traceback (most recent call last):
File "create_and_update_xlsx_sheets.py", line 66, in <module>
create_and_update_worksheets()
File "create_and_update_xlsx_sheets.py", line 56, in create_and_update_worksheets
multiple_dfs(item, 'Game Schedule')
File "create_and_update_xlsx_sheets.py", line 33, in multiple_dfs
df.to_excel(writer, sheets, startrow=row, index=False)
NameError: name 'writer' is not defined
def multiple_dfs(item, sheets, *args):
for i, var in enumerate(args, 1):
print('variable {}: {}'.format(i, var))
...
multiple_dfs(item, 'Game Schedule', variable1, variable2, ...)