Как проверить, выполняется ли функция в IDLE или из другой функции / модуля - PullRequest
0 голосов
/ 31 марта 2020

Я знаю, что вы можете сделать это с модулями:

if __name__ == '__main__':
    ...

, и это выполняется только в том случае, если сам модуль работает в режиме IDLE, а не в том случае, если модуль импортируется. Тем не менее, я хочу знать, есть ли способ проверить, запускается ли функция вручную в интерфейсе IDLE, или она вызывается из другой функции / модуля. И если есть способ сделать это изнутри функции, то как бы вы это сделали?

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете взглянуть на inspect.stack() и попытаться извлечь интересующую вас информацию; например, я вижу, что в IDLE как минимум 2 из фреймов происходят от idlelib/run.py.

Следующая функция должна делать то, что вы ищете, но вы также можете изменить ее на удовлетворить ваши потребности.

import inspect
def is_inside_idle():
    return any(frame for frame in inspect.stack()
               if frame.filename.endswith('idlelib/run.py'))
...