10config = util.get_config()
11
12
13def get_sites_client(config, site="sustainablecorn"):14 """Return an authorized sites client"""
15
16 token = gdata.gauth.OAuth2Token(
25 for entry in spr_client.get_list_feed(
26 "1PKK-vWuOryYFOSYSgt4TosrjIDX_F-opHOvrEo5q-i4", "od6"
27 ).entry:
28 d = entry.to_dict()29 if d["key"] != varname:
30 continue
31 val = d[sitekey].strip().upper()
20drive_client = util.get_driveclient(config)
21
22
23def adjust_sdc(sitekey, varname):24 """Change what we do here"""
25 for entry in spr_client.get_list_feed(
26 "1PKK-vWuOryYFOSYSgt4TosrjIDX_F-opHOvrEo5q-i4", "od6"
20drive_client = util.get_driveclient(config)
21
22
23def adjust_sdc(sitekey, varname):24 """Change what we do here"""
25 for entry in spr_client.get_list_feed(
26 "1PKK-vWuOryYFOSYSgt4TosrjIDX_F-opHOvrEo5q-i4", "od6"
14
15def has_or_create_sheet(drive, colfolder, title):
16 """Create or find this sheet!"""
17 res = util.exponential_backoff( 18 drive.files()
19 .list(
20 q=(
The local variable name hides the variable defined in the outer scope, making it inaccessible and might confuse.
filename = 'myfile.txt'
def read_file(filename): # This shadows the global `filename`
with open(filename) as file:
return file.readlines()
FILENAME = 'myfile.txt' # renamed global to UPPER_CASE as convention
def read_file(filename):
with open(filename) as file:
return file.readlines()
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)
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()