我想知道是否有办法将函数存储在包含尚未定义的变量的变量中,并且在定义函数中的变量之后放置保存函数的变量。例如,我想要下面的这个脚本(这个脚本是我在另一个脚本中遇到的问题的一个例子,但另一个脚本太长了,不能包含在这里)在你输入几周之后打印了几天,但是我得到 NameError:名称'days_weeks'未定义。
weeks = int(input("Enter a number of weeks"))
def print_weeks():
print("that is %s days" % days_weeks)
x = print_weeks
def find_days():
days_weeks = weeks * 7
x
x()
find_days()
现在,显然,我可以在find_days中插入print_weeks;但是对于我正在研究的项目,我在我的脚本中使用了第一个函数(本例中为print_weeks)数十次,而且函数是数百行代码,所以我想将函数存储在变量中让事情变得不那么邋..我也试图让days_week成为一个全局变量,但代码的结果保持不变(或者我做错了)。我已经阅读了很多其他主题但我还没有找到答案。很抱歉,如果这一直令人困惑,但基本上如果有人有办法将print_weeks保存在一个变量中并且让这个脚本正确打印日期,那将非常感激。
答案 0 :(得分:1)
您正在获取NameError,因为days_weeks是函数find_days的本地,而print_weeks无法访问。如果您希望days_weeks是全局的,则需要更改find_days函数。
def find_days():
global days_weeks
days_weeks = weeks * 7
x
x()
但是,一般来说,最好将变量传递给函数,而不是依赖于全局变量。在这种情况下,您的代码看起来像这样:
def print_weeks(days):
print("that is %s days" % days)
x = print_weeks
def find_days(f, Nweeks):
days_weeks = Nweeks * 7
f(days_weeks)
weeks = int(input("Enter a number of weeks"))
find_days(x,weeks)