Версия CoffeeScript:
diff = (val for val in array1 when val not in array2)
Согласно pythonrun.c соответствующие Py_InspectFlag
и Py_InteractiveFlag
используются следующим образом:
int Py_InspectFlag; /* Needed to determine whether to exit at SystemError */
/* snip */
static void
handle_system_exit(void)
{
PyObject *exception, *value, *tb;
int exitcode = 0;
if (Py_InspectFlag)
/* Don't exit if -i flag was given. This flag is set to 0
* when entering interactive mode for inspecting. */
return;
/* snip */
}
Python не выходит on SystemExit
, если флаг «инспектировать» равен true.
int Py_InteractiveFlag; /* Needed by Py_FdIsInteractive() below */
/* snip */
/*
* The file descriptor fd is considered ``interactive'' if either
* a) isatty(fd) is TRUE, or
* b) the -i flag was given, and the filename associated with
* the descriptor is NULL or "<stdin>" or "???".
*/
int
Py_FdIsInteractive(FILE *fp, const char *filename)
{
if (isatty((int)fileno(fp)))
return 1;
if (!Py_InteractiveFlag)
return 0;
return (filename == NULL) ||
(strcmp(filename, "<stdin>") == 0) ||
(strcmp(filename, "???") == 0);
}
Если флаг «интерактивный» имеет значение false и текущий ввод не связан с терминалом, тогда python не пытается войти в «интерактивный» режим (разблокировка stdout версия для печати, отображение подсказки и т. д.). Параметр
-i
включает оба флага. Флаг "inspect" также установлен, если переменная среды PYTHONINSPECT
не пуста (см. main.c ).
В основном это означает, что вы установили переменную PYTHONINSPECT
и запустите свой модуль, тогда python не выйдет из SystemExit (например, в конце сценария) и вместо этого показывает интерактивную подсказку (позволяющую вам проверить состояние вашего модуля (таким образом, "проверить" имя флага)).
man python
говорит о флаге -i
:
Когда скрипт передается как первый используется аргумент или опция -c, войти в интерактивный режим после выполнения сценарий или команду. Оно делает не читать файл $ PYTHONSTARTUP. Это может быть полезно для проверки глобальных переменных или трассировки стека, когда сценарий вызывает исключение.
Следовательно, -i
разрешает проверку сценария в интерактивном режиме. -i
подразумевает и то, и другое. Вы можете работать в интерактивном режиме без проверки (а именно, просто вызывая python
без аргументов), но не наоборот.