播放日期和函数时未定义的变量

时间:2016-08-25 18:21:12

标签: python function date

你可以称我是一个极端的新手,我在学校有一门课程,我需要能够使用python来解决问题。到目前为止,所有这些都有效,但最后一个(实际上只是一小部分)不会让步。

前4个函数工作正常(每个2个参数,生日(bday)和随机日期(今天))。他们确定随机日期是否为生日/生日/百日/同一天,如果是,则分别返回True或False。每个函数的第一行如下,其余的脚本并不重要。

def birthday(bday, today):

def unbirthday(bday, today):

def hundredday(bday, today):

def sameweekday(bday, today):

再次,这些工作正常。

最后一个函数必须返回特定开始日期和结束日期之间的所有日期,上述生日变体之一与之匹配。第一个参数再次是bday,下一个是开始(默认为bday,这是混蛋),第三个是结束(默认为今天),第四个是生日(默认为实际生日)。

def birthdays(bday, start=bday, end=date.today(), birthday=birthday):

它的start = bday不起作用,声明这个bday未定义。其余的剧本并不重要,因为我到目前为止还没有。

(我在脚本开头导入日期时间,所有第一个函数使用其工具正常工作)

2 个答案:

答案 0 :(得分:2)

在变量创建之前,您无法读取变量:

def birthdays(bday, start=bday, end=date.today(), birthday=birthday):
                ^---1      ^---2

上面的函数参数只是变量名称定义。 "此时插入到函数调用中的数据块将命名为bday"。它们不作为函数签名中的可读变量存在,仅存在于函数体内。所以你上面的#2试图从一个尚未存在的变量中读取。

答案 1 :(得分:2)

一种解决方案是默认start = None,然后在函数体中有:

if start is None:
    start = bday

应该为您提供所需的行为。