python args不工作,除非它有一个位置引用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python args不工作,除非它有一个位置引用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1429字,纯文字阅读大概需要3分钟。
内容图文
![python args不工作,除非它有一个位置引用](/upload/InfoBanner/zyjiaocheng/825/70e884dde0284516b8b14b62a949cc96.jpg)
参见英文答案 > What does ** (double star/asterisk) and * (star/asterisk) do for parameters? 18个
def test_stats(team, *args):
if not args:
[do some stuff]
else:
team_fixtures = (Fixtures.objects.filter(home_team=team_details.id) | Fixtures.objects.filter(away_team=team_details.id))/
.filter(fixture_datetime__lt=datetime.now()).filter(fixture_datetime__year=args[0])
为了参考起见 – args是:
date_year = datetime.now().year
为了使这个查询工作,我需要引用args为
.filter(fixture_datetime__year=args[0])
因为如果我使用
.filter(fixture_datetime__year=args)
我收到错误:
int() argument must be a string, a bytes-like object or a number, not
‘tuple’
我知道它认为它是一个元组,即使它只是一个值,但是当我在终端中执行以下操作时
type(date_year)
我上课了.
当它看起来只有一个值返回时,为什么我必须在这里引用位置?
解决方法:
* -prefixed参数始终是元组.它捕获0个或多个额外的位置参数.您可以使用3或20或100个额外参数调用test_stats()函数(超出显式团队参数),它们都将成为函数中args元组的一部分:
>>> def foo(*args): return args
...
>>> foo()
()
>>> foo(42)
(42,)
>>> foo(1, 2, 3)
(1, 2, 3)
如果您想要一个可选参数,请将其设置为带有Sentinel默认值的关键字参数,如None:
def test_stats(team, optional=None):
if optional is None:
# ...
else:
team_fixtures = (
Fixtures.objects.filter(home_team=team_details.id) |
Fixtures.objects.filter(away_team=team_details.id))
.filter(fixture_datetime__lt=datetime.now())
.filter(fixture_datetime__year=optional)
)
内容总结
以上是互联网集市为您收集整理的python args不工作,除非它有一个位置引用全部内容,希望文章能够帮你解决python args不工作,除非它有一个位置引用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。