Есть ли инструмент, который позволяет комментировать функции/методы как «чистые», а затем анализирует код, чтобы проверить, свободны ли упомянутые функции/методы?Принудительные побочные эффекты в python
5
A
ответ
9
В мире Python вопрос не имеет большого смысла, поскольку объекты так много говорят о том, что происходит при вызове функции.
Например, как вы могли бы определить, является ли следующая функция чистой?
def f(x):
return x + 1
Ответ зависит от того, что х является:
>>> class A(int):
def __add__(self, other):
global s
s += 1
return int.__add__(self, other)
>>> def f(x):
return x + 1
>>> s = 0
>>> f(A(1))
2
>>> s
1
Хотя функции е выглядит чистым, операция добавления на х имеет побочный эффект приращением s ,
Смежные вопросы
- 1. Loop Побочные эффекты в Python
- 2. Побочные эффекты в Fluxible?
- 3. Побочные эффекты в C
- 4. Как эффективно отлаживать побочные эффекты в Python?
- 5. LD_LIBRARY_PATH побочные эффекты
- 6. Устранить побочные эффекты Bacon.js
- 7. Пользовательские побочные эффекты геттера
- 8. Побочные эффекты от молнии?
- 9. Побочные эффекты с Mocha
- 10. Когда возникают побочные эффекты?
- 11. внутренние побочные эффекты HTML?
- 12. BX побочные эффекты?
- 13. Корневые побочные эффекты доступа
- 14. побочные эффекты сбора мусора?
- 15. Javassist: Побочные эффекты ClassPool.makeClass()?
- 16. Linq Любой() побочные эффекты
- 17. Python Побочные эффекты Я не понимаю
- 18. Apppool recycle побочные эффекты
- 19. reloadRowsAtIndexPaths побочные эффекты?
- 20. Побочные эффекты памяти setvbuf
- 21. Mocking побочные эффекты
- 22. Побочные эффекты в языке Go
- 23. Побочные эффекты в генерических выражениях
- 24. Предотвратить побочные эффекты в Рубине
- 25. Scala recursion no побочные эффекты
- 26. Побочные эффекты отключения автоматических коммитов
- 27. Являются ли побочные эффекты хорошей?
- 28. Списки Erlang: побочные эффекты foreach
- 29. побочные эффекты на других ресурсах
- 30. JSONP, есть ли побочные эффекты?
Что вы * можете * сделать, это проверить, является ли 'f' чистым **, предполагая **' type (x) == int'. Поскольку Python динамически типизирован, вам придется добавлять аннотации типов вручную. – Robin