gpt4 book ai didi

python - 如何在Python中创建日期结构?

转载 作者:行者123 更新时间:2023-12-01 03:24:13 25 4
gpt4 key购买 nike

在关于数据抽象和不可变数据的练习中,我需要仅使用数字和函数创建一个日期结构。我还需要实现打印日期组成部分的函数。

执行示例:

>>>d = make_date(2016, 12, 26)
>>>d
<function make_date.<locals>.dispatch at 0x02A880C0>
>>>year (d)
2016
>>>month (d)
December
>>> day (d)
26
>>> str_date(d)
'26th of December, 2016'

我不明白第三条执行线..

<function make_date.<locals>.dispatch at 0x02A880C0>

我可以获得这样执行的代码示例吗?

我只是设法得到这个..

<function dispatch at 0x02CCE078>

这是我到目前为止得到的:

def make_date(y,m,d):
def year_f():
nonlocal y
return y
def day_f():
nonlocal d
return d
def month_f():
nonlocal m
if(m==1):
return 'January'
if(m==2):
return 'February'
if(m==3):
return 'March'
if(m==4) . . .

def dispatch(date_type):
if date_type==1:
return year_f
if date_type==2:
return month_f
if date_type==3:
return day_f
return dispatch
#=================================================#
def year(p):
return p(1)()
def month(p):
return p(2)()
def day(p):
return p(3)()
def str_date(p):
return repr("{0}th of {1}, {2}".format(day(p),month(p),year(p)))

最佳答案

make_date返回一个函数对象,将其分配给 d .

当您打印d时,您得到了预期的函数表示

<function make_date.<locals>.dispatch at 0x02A880C0>

未调用生成的函数。

要获得结果,您必须调用该函数,如下所示:d(<some params>)

注意代码片段中的语法:

def year(p):
return p(1)()

当您调用year(d)时,它确实调用 d(1)() (使用 1 作为参数调用您的函数)

编辑:这并没有真正回答问题。根据您提供的代码,我得到

<function make_date.<locals>.dispatch at 0x000000000346A6A8>

(因为 dispatch 嵌套在 make_date 中)

但是运行的是 Python 3.4(或更高版本)

在 python 2(删除 nonlocal 语句)或 python 3.2(相同代码)中,您将得到 <function dispatch at 0x000000000341A510> .

因此,要获得所需的输出,您需要升级 python 版本。

关于python - 如何在Python中创建日期结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41590952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com