作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一个函数作为可选参数python 中的另一个函数,但我不清楚如何做到这一点。
例如我定义了以下函数:
import os, time, datetime
def f(t=datetime.datetime.now()):
return t.timetuple()
我已经放置了t=datetime.datetime.now()
为了使参数是可选的,所以能够不带参数调用 f()
。
现在,每当我执行 f()
时,我都会得到相同的日期时间 A (根据我的预期,这是错误的),但是每当我执行 f(datetime.datetime .now())
我得到不同的日期时间(如预期正确)。
例如
>>> f()
time.struct_time(tm_year=2015, tm_mon=6, tm_mday=20, tm_hour=15, tm_min=36, tm_sec=2, tm_wday=5, tm_yday=171, tm_isdst=-1)
>>> f()
time.struct_time(tm_year=2015, tm_mon=6, tm_mday=20, tm_hour=15, tm_min=36, tm_sec=2, tm_wday=5, tm_yday=171, tm_isdst=-1)
>>> f(datetime.datetime.now())
time.struct_time(tm_year=2015, tm_mon=6, tm_mday=20, tm_hour=15, tm_min=37, tm_sec=1, tm_wday=5, tm_yday=171, tm_isdst=-1)
>>> f()
time.struct_time(tm_year=2015, tm_mon=6, tm_mday=20, tm_hour=15, tm_min=36, tm_sec=2, tm_wday=5, tm_yday=171, tm_isdst=-1)
那么为什么第四次调用会让我返回到第 36 分钟和第 2 秒在那之前打过电话?为什么前两个调用给出的时间完全相同,即使我在它们之间留出了足够的时间?
最佳答案
正如flask所提到的,默认值是在函数解析时计算的,因此它将被设置为一次。
对此的典型解决方案是不使用默认的可变值。您可以执行以下操作:
def f(t=None):
if not t:
t = datetime.datetime.now()
return t.timetuple()
顺便说一句,为了读者的利益,您应该尝试使用有意义的方法和变量名称。
关于将函数作为可选参数的 Python 函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30958835/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!