Подтвердить что ты не робот

Можно ли полагаться на порядок оценки аргументов функции Python?

Можно ли предположить, что аргументы функции оцениваются слева направо в Python?

Ссылка указывает, что так происходит, но, возможно, есть способ изменить этот порядок, который может нарушить мой код.

Что я хочу сделать, так это добавить отметку времени для вызова функции:

l = []
l.append(f(), time.time())

Я понимаю, что я могу последовательно оценивать аргументы:

l = []
res = f()
t = time.time()
l.append(res, t)

Но он выглядит менее изящным, поэтому я бы предпочел первый способ, если я могу положиться на него.

4b9b3361

Ответ 1

Да, Python всегда оценивает аргументы функции слева направо.

Это касается любого разделенного запятой списка, насколько я знаю:

>>> from __future__ import print_function
>>> def f(x, y): pass
...
>>> f(print(1), print(2))
1
2
>>> [print(1), print(2)]
1
2
[None, None]
>>> {1:print(1), 2:print(2)}
1
2
{1: None, 2: None}
>>> def f(x=print(1), y=print(2)): pass
...
1
2

Ответ 2

Цитата из справочной документации :

Python оценивает выражения слева направо.

Итак, вы можете рассчитывать на это.