Exécuter le traitement en Python à intervalles réguliers Je pensais que l'opération modulo (%) suivante renverrait une valeur négative dans l'implémentation de.
next_time = ((base_time - time.time()) % interval) or interval
C
https://ideone.com/cgMjRc
#include <stdio.h>
int main(void) {
int val = -3;
printf("%d\n", val % 5);
return 0;
}
run
-3
Python 3.5
https://ideone.com/CMgBPa
val=-3
print(val % 5)
run
2
Ceux qui utilisent beaucoup Python le savent peut-être.
https://docs.python.org/3/reference/expressions.html Les lettres rouges ci-dessous sont colorées pour accentuer.
The % (modulo) operator yields the remainder from the division of the first argument by the second. The numeric arguments are first converted to a common type. A zero right argument raises the ZeroDivisionError exception. The arguments may be floating point numbers, e.g., 3.14%0.7 equals 0.34 (since 3.14 equals 4*0.7 + 0.34.) The modulo operator always yields a result with the same sign as its second operand (or zero); the absolute value of the result is strictly smaller than the absolute value of the second operand