python - 将参数传递给函数内的方法
问题描述
我是 Python 新手,在试图理解为什么这段代码不起作用时遇到了一些问题。我正在尝试将函数参数传递给函数内的方法参数。这是我的代码:
import datetime
starter = datetime.datetime(2015, 10, 21, 16, 29)
def time_machine(integer, string):
if string == 'years':
string = 'days'
integer *= 365
return starter - datetime.timedelta(string=integer)
当我尝试这个时,我只是得到一个 TypeError。
解决方案
string
不是有效的参数datetime.timedelta
改为使用datetime.timedelta(days=integer)
或datetime.timedelta(integer)
:
def time_machine(integer, string):
if string == 'years':
integer *= 365
return starter - datetime.timedelta(days=integer)
例子:
>>> time_machine(2, 'years')
datetime.datetime(2013, 10, 21, 16, 29)
或以编程方式传递参数名称:
def time_machine(integer, string):
if string == 'years':
string = 'days'
integer *= 365
else:
assert string in ('days', 'seconds', 'microseconds',
'milliseconds', 'minutes', 'hours', 'weeks'
), 'invalid parameter'
return starter - datetime.timedelta(**{string: integer})
例子:
>>> time_machine(2, 'minutes')
datetime.datetime(2015, 10, 21, 16, 27)
推荐阅读
- javascript - 如何在 HTML div 中插入 javascript 变量
- c - 如何处理递归函数和迭代函数中的编译器错误 c2660?
- r - R中的for循环使用字符串列表作为变量 - 带和不带引号
- cocoapods - 从项目中删除 pod 及其所有文件
- r - 如何在 R 中为多个产品执行自动 arima?
- python - 如何将数据框中的值列表添加为新行
- python - 使用单击选项 python 测试 cli 命令
- javascript - 我正在尝试将我的标头导出到一个组件中并出现错误。如何外包我的标头?
- javascript - 如何使用 Prop-Types 强制数组形状和大小?
- jasper-reports - 如何在 cmyk 颜色配置文件中使用 jasperreports 导出 pdf