# python defaults import sys def value_generator(): yield "first_value" yield "this will never be returned because I am called once on parse" values=value_generator() def foo(): print("executing foo look at me I am called before runnig main :p") return next(values) def fn_with_default(x=foo()): print(f"executing fn_with_default which returned {x} from before running main because it was executed when script was parsed :P") def main(): print("running main") fn_with_default() fn_with_default() if __name__ == '__main__': main() # https://python-fiddle.com/saved/iOgOfgILeQWUKJJcF7po