Python 3.8+sysфункция
sys.audit()
аудит
Вызывает событие аудита с именем и аргументами: все хуки, добавленные через sys.addaudithook(), получают его по очереди.
Синтаксис
sys.audit(event, *args)
Пока хуков нет, вызов почти ничего не стоит, так что события можно расставлять в библиотеке заранее. Имя принято писать как «модуль.действие», чтобы не столкнуться со встроенными (os.chdir, open, subprocess.Popen). Если хук поднимет исключение, оно вылетит прямо из sys.audit() — это способ запретить операцию, поэтому событие ставят до действия, а не после.
Примеры
import sys
def ban(event, args):
if event == 'bank.transfer' and args[0] > 1000:
raise RuntimeError('перевод заблокирован')
sys.addaudithook(ban)
def transfer(amount):
sys.audit('bank.transfer', amount)
return f'переведено {amount}'
print(transfer(500)) # → переведено 500
try:
transfer(5000)
except RuntimeError as e:
print(e) # → перевод заблокирован
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности