Redefining name 'data' from outer scope (line 11)
20
21
22def generate_table(dataframe, max_rows=10):
23 data = pd.read_excel('data/2018/aggregates-economic-activity/S7.1.xlsx', header = None)24 df = data[3:]
25 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
26 return(dash_table.DataTable(
Redefining name 'data' from outer scope (line 12)
21
22
23def generate_table(dataframe, max_rows=10):
24 data = pd.read_excel('data/2018/economic-aggregates/S1.7r.xlsx', header = None) 25 df = data[6:]
26 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
27 return(dash_table.DataTable(
Redefining name 'labels' from outer scope (line 19)
62
63layout=app_layout()
64
65def filter(year, category, rows, labels, remove=False): 66 cu_index, co_index = [index for index in years.transpose().index if years[index].iloc[0] == year]
67
68 filtered = rows[0:-1] if remove else rows
Redefining name 'rows' from outer scope (line 18)
62
63layout=app_layout()
64
65def filter(year, category, rows, labels, remove=False): 66 cu_index, co_index = [index for index in years.transpose().index if years[index].iloc[0] == year]
67
68 filtered = rows[0:-1] if remove else rows
Redefining name 'data' from outer scope (line 15)
24
25
26def generate_table(dataframe, max_rows=10):
27 data = pd.read_excel('data/2018/households/S5.2.xlsx', header = None)28 df = data[3:]
29 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
30 return(dash_table.DataTable(
Redefining name 'data' from outer scope (line 14)
23
24
25def generate_table(dataframe, max_rows=10):
26 data = pd.read_excel(filename, header = None)27 df = data[6:]
28 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
29 return(dash_table.DataTable(
Redefining name 'data' from outer scope (line 15)
53
54
55def generate_table(dataframe, max_rows=10):
56 data = pd.read_excel(filename, header = None) 57 df = data[6:]
58 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
59 return(dash_table.DataTable(
Redefining name 'rows' from outer scope (line 21)
69layout = app_layout()
70
71
72def filter(year, category, rows, labels, remove=False): 73 cu_index, co_index = [index for index in years.transpose().index if years[index].iloc[0] == year]
74
75 filtered = rows[0:-1] if remove else rows
Redefining name 'labels' from outer scope (line 22)
69layout = app_layout()
70
71
72def filter(year, category, rows, labels, remove=False): 73 cu_index, co_index = [index for index in years.transpose().index if years[index].iloc[0] == year]
74
75 filtered = rows[0:-1] if remove else rows
Redefining name 'data' from outer scope (line 12)
22
23
24def generate_table(dataframe, max_rows=10):
25 data = pd.read_excel('data/2018/economic-aggregates/S1.10.xlsx', header = None)26 df = data[6:]
27 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
28 return(dash_table.DataTable(
Redefining name 'rows' from outer scope (line 19)
68layout = app_layout()
69
70
71def filter(year, category, rows, labels, remove=False): 72 cu_index, co_index = [index for index in years.transpose().index if years[index].iloc[0] == year]
73
74 filtered = rows[0:-2] if remove else rows
Redefining name 'data' from outer scope (line 13)
22
23
24def generate_table(dataframe, max_rows=10):
25 data = pd.read_excel('data/2018/economic-aggregates/S1.10.xlsx', header = None) 26 df = data[6:]
27 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
28 return(dash_table.DataTable(
Redefining name 'labels' from outer scope (line 20)
68layout = app_layout()
69
70
71def filter(year, category, rows, labels, remove=False): 72 cu_index, co_index = [index for index in years.transpose().index if years[index].iloc[0] == year]
73
74 filtered = rows[0:-2] if remove else rows
Redefining name 'data' from outer scope (line 11)
20
21
22def generate_table(dataframe, max_rows=10):
23 data = pd.read_excel('data/2018/disaggregated-statements/S8.1.2.xlsx', header = None)24 df = data[6:]
25 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
26 return(dash_table.DataTable(
Redefining name 'data' from outer scope (line 11)
20
21
22def generate_table(dataframe, max_rows=10):
23 data = pd.read_excel('data/2018/economic-aggregates/S1.8.xlsx', header = None)24 df = data[6:]
25 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
26 return(dash_table.DataTable(
Redefining name 'data' from outer scope (line 11)
51
52
53def generate_table(dataframe, max_rows=10):
54 data = pd.read_excel('data/2018/economic-aggregates/S1.8.xlsx', header = None) 55 df = data[6:]
56 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
57 return(dash_table.DataTable(
Redefining name 'rows' from outer scope (line 17)
67layout = app_layout()
68
69
70def filter(year, category, rows, labels, remove=False): 71 cu_index, co_index = [index for index in years.transpose().index if years[index].iloc[0] == year]
72
73 filtered = rows[0:-1] if remove else rows
Redefining name 'labels' from outer scope (line 18)
67layout = app_layout()
68
69
70def filter(year, category, rows, labels, remove=False): 71 cu_index, co_index = [index for index in years.transpose().index if years[index].iloc[0] == year]
72
73 filtered = rows[0:-1] if remove else rows
Redefining name 'data' from outer scope (line 16)
53
54
55def generate_table(dataframe, max_rows=10):
56 data = pd.read_excel(filename, header = None) 57 df = data[6:-1]
58 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
59 return(dash_table.DataTable(
Redefining name 'data' from outer scope (line 17)
48
49
50def generate_table(dataframe, max_rows=10):
51 data = pd.read_excel('data/2018/aggregates-economic-activity/S7.1.xlsx', header = None) 52 df = data[3:]
53 df.columns = df.iloc[0].fillna(value=pd.Series(range(100)))
54 return(dash_table.DataTable(
Description
The local variable name hides the variable defined in the outer scope, making it inaccessible and might confuse.
Bad practice
filename = 'myfile.txt'
def read_file(filename): # This shadows the global `filename`
with open(filename) as file:
return file.readlines()
Preferred:
FILENAME = 'myfile.txt' # renamed global to UPPER_CASE as convention
def read_file(filename):
with open(filename) as file:
return file.readlines()
Bad practice
Another usual suspect of this is when you use the same parameter name inside a function as the global variable you are using. For example:
def run_app(app):
# This `app` shadows the global app...
app.run()
if __name__ == '__main__':
app = MyApp() # This is a global variable!
run_app(app)
Preferred:
To avoid this re-defining of a global, consider not defining app
as a global, but inside a main()
function instead:
def run_app(app):
# There is no longer a global `app` variable.
app.run()
def main():
app = MyApp()
run_app(app)
if __name__ == '__main__':
main()