Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

[ Россум, Дрейк, Откидач ] Язык программирования Python

.pdf
Скачиваний:
295
Добавлен:
25.04.2014
Размер:
1.5 Mб
Скачать

30.5. calendar — функции для работы с календарем

421

timegm(time_tuple)

Возвращает число секунд, прошедших с начала эпохи (независимо от системы начало эпохи считается равным началу 1970 года) до времени, которое представлено кортежем из девяти чисел time_tuple (см. описание модуля time).

Приложения

425

Приложение A

Параметры командной строки интерпретатора и переменные окружения

Для вызова интерпретатора Python должна быть набрана командная строка следующего формата:

python [options] [-c command | file | -] [arguments]

Где python — путь к исполняемому файлу интерпретатора (или просто имя, если каталог, в котором он находится, включен в пути поиска), options — опции, command — команда на языке Python, file — файл с программой на языке Python и arguments — список аргументов, передаваемых в sys.argv[1:].

Интерпретатор поддерживает следующие опции:

-d

Выводить отладочную информацию при синтаксическом анализе. Этот режим может быть также включен с помощью переменной окружения PYTHONDEBUG (см. ниже).

-i

После выполнения программы перейти в интерактивный режим с выводом приглашения, даже если стандартный поток ввода интерпретатора не является терминалом. Этот режим может быть также включен с помощью переменной окружения PYTHONINSPECT (см. ниже).

-O

Выполнять оптимизацию генерируемого байт-кода. Оптимизация может быть также включена с помощью переменной окружения PYTHONOPTIMIZE (см. ниже).

-OO

Помимо оптимизации (опция -O) удалить из байт-кода строки документации.

-S

Не импортировать модуль site при инициализации.

-t

Выводить предупреждения о непоследовательном использовании символов табуляции в исходном коде.

426

Приложение A. Параметры командной строки интерпретатора . . .

-tt

Генерировать исключение TabError при обнаружении непоследовательного использования символов табуляции в исходном коде.

-u

Отключить буферизацию для стандартных потоков вывода и ошибок. Этот режим может быть также включен с помощью переменной окружения PYTHONUNBUFFERED (см. ниже). Отключение буферизации может быть необходимо для CGI-программ.

-U

Считать все строковые литеральные выражения строками Unicode, то есть воспринимать ’...’ как u’...’. Импортируемые модули, байт-код которых был получен без использования этой опции, будут откомпилированы заново. Возможность задания этой опции присутствует, начиная с версии 1.6.

-v

Выводить отладочную информацию при импортировании модулей. Этот режим может быть также включен с помощью переменной окружения PYTHONVERBOSE (см. ниже).

-x

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

-X

Использовать строки вместо классов для стандартных исключений. Начиная с версии 1.6, эта опция не поддерживается.

-h

Вывести подсказку и завершить выполнение. Возможность задания этой опции присутствует, начиная с версии 2.0.

-V

Вывести номер версии интерпретатора и завершить выполнение. Возможность задания этой опции присутствует, начиная с версии 2.0.

Кроме того, на работу интерпретатора оказывают влияние значения следующих переменных окружения:

PYTHONDEBUG

Если эта переменная имеет непустое значение, интерпретатор будет выводить отладочную информацию при синтаксическом анализе исходного кода.

PYTHONINSPECT

Если эта переменная имеет непустое значение, интерпретатор после выполнения программы перейдет в интерактивный режим с выводом приглашения, даже если стандартный поток ввода интерпретатора не является терминалом.

PYTHONHOME Устанавливает

427

PYTHONOPTIMIZE

Если эта переменная имеет непустое значение, интерпретатор будет оптимизировать генерируемый байт-код.

PYTHONUNBUFFERED

Если эта переменная имеет непустое значение, буферизация стандартных потоков вывода и ошибок будет отключена. Отключение буферизации может быть необходимо для CGI-программ.

PYTHONVERBOSE

Если эта переменная имеет непустое значение, интерпретатор будет выводить отладочную информацию при импортировании модулей.

PYTHONSTARTUP

Путь к файлу, который будет выполнен при запуске интерпретатора в интерактивном режиме.

PYTHONPATH

Список каталогов, разделенных символом ‘;’, в которых будет производиться поиск модулей перед поиском в путях по умолчанию. Значение этой переменной окружения отражается на значении sys.path (см. описание модуля sys).

альтернативное значение sys.prefix и, возможно, sys.exec_prefix. Значение переменной окружения должно иметь вид ‘prefix[;exec_prefix]’ (см. описание модуля sys).

428

Приложение B

Грамматика языка

Здесь используются следующие обозначения для лексем:

NAME

Имя (идентификатор).

NUMBER

Числовое литеральное выражение.

STRING

Строковое литеральное выражение.

NEWLINE

Символ (или последовательность из двух символов), обозначающий переход на новую строку.

ENDMARKER

Конец файла (потока).

INDENT

Увеличение уровня отступа.

DEDENT

Уменьшение уровня отступа.

Начальные символы грамматики:

single_input

Одна интерактивная инструкция.

file_input

Модуль или последовательность команд, считываемая из файла.

eval_input

Инструкция-выражение, передаваемое функции eval() или ввод, получаемый функцией input().

single_input: NEWLINE | simple_stmt |

compound_stmt NEWLINE

429

file_input: (NEWLINE | stmt)* ENDMARKER

eval_input: testlist NEWLINE* ENDMARKER

funcdef:

’def’ NAME parameters ’:’ suite

parameters:

’(’ [varargslist] ’)’

varargslist:

(fpdef [’=’ test] ’,’)*

 

(’*’ NAME [’,’ ’**’ NAME] | ’**’ NAME) |

 

fpdef [’=’ test] (’,’ fpdef [’=’ test])*

 

[’,’]

fpdef:

NAME | ’(’ fplist ’)’

fplist:

fpdef (’,’ fpdef)* [’,’]

stmt:

simple_stmt

| compound_stmt

simple_stmt:

small_stmt (’;’ small_stmt)* [’;’]

 

NEWLINE

 

small_stmt:

expr_stmt |

print_stmt | del_stmt |

 

pass_stmt |

flow_stmt | import_stmt |

 

global_stmt | exec_stmt | assert_stmt

expr_stmt:

testlist (augassign testlist |

 

(’=’ testlist)*)

augassign:

’+=’ | ’-=’

| ’*=’ | ’/=’ | ’%=’ | ’&=’

 

| ’|=’ | ’^=’ | ’<<=’ | ’>>=’ | ’**=’

print_stmt:

’print’ ( [

test (’,’ test)* [’,’] ] |

 

’>>’ test [ (’,’ test)+ [’,’] ] )

del_stmt:

’del’ exprlist

pass_stmt:

’pass’

 

flow_stmt:

break_stmt | continue_stmt |

 

return_stmt | raise_stmt

break_stmt: ’break’

430

Приложение B. Грамматика языка

continue_stmt: ’continue’

return_stmt: ’return’ [testlist]

raise_stmt:

’raise’ [test [’,’ test [’,’ test]]]

import_stmt: ’import’ dotted_as_name (’,’ dotted_as_name)* | ’from’ dotted_name ’import’ (’*’ | import_as_name

(’,’ import_as_name)*)

import_as_name: NAME [NAME NAME]

dotted_as_name: dotted_name [NAME NAME]

dotted_name: NAME (’.’ NAME)*

global_stmt: ’global’ NAME (’,’ NAME)*

exec_stmt:

’exec’ expr [’in’ test [’,’ test]]

assert_stmt: ’assert’ test [’,’ test]

compound_stmt:

if_stmt | while_stmt | for_stmt |

 

try_stmt | funcdef | classdef

if_stmt:

’if’ test ’:’ suite

 

(’elif’ test ’:’ suite)*

 

[’else’ ’:’ suite]

while_stmt:

’while’ test ’:’ suite

 

[’else’ ’:’ suite]

for_stmt:

’for’ exprlist ’in’ testlist ’:’ suite

 

[’else’ ’:’ suite]

try_stmt:

(’try’ ’:’ suite

 

(except_clause ’:’ suite)+

 

[’else’ ’:’ suite] |

 

’try’ ’:’ suite

 

’finally’ ’:’ suite)

except_clause: ’except’ [test [’,’ test]]