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])
И ради эталонного - арг является:питон арга не работает, если он не имеет исходное положение
date_year = datetime.now().year
для этого запроса на работу мне нужно ссылаться арг, как
.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)
я получаю класс обратно.
Почему у меня есть ссылка на позицию здесь, когда она выглядит как одно возвращаемое значение?
'* args' есть * всегда * кортеж. –
Я не понимаю, о чем вы спрашиваете. Кажется, вы уже ответили на все в своем вопросе. Если вы предоставите ровно один аргумент 'bar' для' foo (* args) 'then' args == (bar,)'. Но, читая ваше сообщение, вы уже это знали. – timgeb
@timegb ОП спрашивает, почему, если он передает 'date_year' в вызове функции, почему он передается как кортеж длины 1, а не целое. –