The Python Language Reference / Справочник по языку Python

→If the global statement occurs within a block, all uses of the name specified in the statement refer to the binding of that name in the top-level namespace. Names are resolved in the top-level namespace by searching the global namespace, i.e. the namespace of the module containing the code block, and the builtins namespace, the namespace of the module builtins. The global namespace is searched first. If the name is not found there, the builtins namespace is searched. The global statement must precede all uses of the name.
0 Если инструкция «:keyword:`global`» встречается внутри блока, то все использования данного имени, определённого в данной инструкции, обращаются к тому, что назначено этому имени в области имён верхнего уровня. Значение имени сначала ищется в глобальной области имён – тоесть в области имён соответствующего модуля, содержащего данный блок кода, и, если не найдено, то затем ищется в области имён модуля «:mod:`builtins`» . Инструкция «:keyword:`global`» должна предшествовать всем упоминаниям данного имени в данном блоке.
→Some of the type descriptions below contain a paragraph listing ‘special attributes.’ These are attributes that provide access to the implementation and are not intended for general use. Their definition may change in the future.
0 Ниже в некоторых описаниях типов содержится абзац, перечисляющий "специальные атрибуты". Это атрибуты, которые предоставляют доступ к внутреннему устройству интерпретатора. В норме (кроме экспериментов над функциональностью интерпретатора, наладки и прочих исключительных случаев) их употреблять не следует - поскольку их определение может измениться в будущем.
→A parenthesized expression list yields whatever that expression list yields: if the list contains at least one comma, it yields a tuple; otherwise, it yields the single expression that makes up the expression list.
0 Список выражений, заключённый в скобки даёт в результате список значений этих выражений – но: если этот список содержит хотябы одну запятую, то образуется кортеж; иначе результатом будет значение единственного выражения списка.
→A parenthesized expression list yields whatever that expression list yields: if the list contains at least one comma, it yields a tuple; otherwise, it yields the single expression that makes up the expression list.
0 Если в скобках перечисляются выражения через запятую, (в том числе единственное выражение с запятой после него, после которой идёт только закрывающая скобка) – результатом будет кортеж из вычисленных значений этих выражений. Если в скобках содержится единственное выражение без запятой – результатом будет просто вычисленное значение этого выражения.
→Special read-only attributes: tb_next is the next level in the stack trace (towards the frame where the exception occurred), or None if there is no next level; tb_frame points to the execution frame of the current level; tb_lineno gives the line number where the exception occurred; tb_lasti indicates the precise instruction. The line number and last instruction in the traceback may differ from the line number of its frame object if the exception occurred in a try statement with no matching except clause or with a finally clause.
0 Специальные атрибуты только для чтения: «<code>tb_next</code>» указывает следующий уровень в стеке (в сторону кадра, где произошло исключение) , или «<code>None</code>» , если нет следующего уровня; «<code>tb_frame</code>» указывает на кадр исполнения текущего уровня; «<code>tb_lineno</code>» дает номер строки, где произошло исключение; «<code>tb_lasti</code>» указывает точную инструкцию. Номер строки и последняя команда в раскрутке может отличаться от номера строки соответствующего объекта кадра, если исключение произошло в инструкции «<code>try</code>» не имеющей соответствующей ветви «<code>except</code>» , или с ветвью «<code>finally</code>» .
→Traceback objects represent a stack trace of an exception. A traceback object is created when an exception occurs. When the search for an exception handler unwinds the execution stack, at each unwound level a traceback object is inserted in front of the current traceback. When an exception handler is entered, the stack trace is made available to the program. (See section The try statement.) It is accessible as the third item of the tuple returned by sys.exc_info(). When the program contains no suitable handler, the stack trace is written (nicely formatted) to the standard error stream; if the interpreter is interactive, it is also made available to the user as sys.last_traceback.
0 Объекты раскрутки стека представляют раскрутку стека исключений. Объект раскрутки стека создается при возникновении исключения. Когда поиск обработчика исключения раскручивает стек вызовов, на каждом уровне новый объект раскрутки стека вставляется перед текущим. Когда обработчик исключения найден, раскрутка стека делается доступной для программы. (Смотри́те раздел “Инструкция «try»” .) Она доступна в качестве третьего элемента кортежа, возвращаемого «<code>sys.exc_info()</code>» . Если программа не содержит подходящего обработчика, раскрутка стека выводится (в нормально оформленном виде) в стандартный поток ошибок, а если интерпретатор в интерактивном режиме, то она также доступна пользователю через «<code>sys.last_traceback</code>» .
→Traceback objects
0 Объекты раскрутки стека
→Special writable attributes: f_trace, if not None, is a function called at the start of each source code line (this is used by the debugger); f_lineno is the current line number of the frame — writing to this from within a trace function jumps to the given line (only for the bottom-most frame). A debugger can implement a Jump command (aka Set Next Statement) by writing to f_lineno.
0 Специальные перезаписываемые атрибуты: «<code>f_trace</code>» , если не «:const:None» , является функцией, вызываемою в начале каждой строки исходного кода (это используется отладчиком); «<code>f_lineno</code>» содержит номер текущей строки кадра – запись сюда изнутри функции отслеживания (трассирования) приводит к переходу на данную строку (только для самого нижнего кадра) . Отладчик может реализовать команду “Jump” , путём записи в «<code>f_lineno</code>» .
→Frame objects represent execution frames. They may occur in traceback objects (see below).
0 Объекты-кадры реализуют кадры исполнения. Они могут встречаться в объектах раскрутки стека (смотри́те далее) .
→Special read-only attributes: f_back is to the previous stack frame (towards the caller), or None if this is the bottom stack frame; f_code is the code object being executed in this frame; f_locals is the dictionary used to look up local variables; f_globals is used for global variables; f_builtins is used for built-in (intrinsic) names; f_lasti gives the precise instruction (this is an index into the bytecode string of the code object).
0 Специальные атрибуты только для чтения: «<code>f_back</code>» указывает предыдущий кадр стека (в сторону вызывающего), или «<code>None</code>» если это дно стека; «<code>f_code</code>» является объектом-кодом, выполняющимся в данном кадре; «<code>f_locals</code>» является словарём, использующимся для поиска локальных переменных; «<code>f_globals</code>» используется для глобальных переменных; «<code>f_builtins</code>» используется для встроенных (внутренних) имён; «<code>f_lasti</code>» дает точные инструкции (это индекс в массиве байт-кода у объекта кода) .
→If a is an instance of super, then the binding super(B, obj).m() searches obj.__class__.__mro__ for the base class A immediately preceding B and then invokes the descriptor with the call: A.__dict__['m'].__get__(obj, A).
0 Если «<code>a</code>» является экземпляром “надкласса” , то при связывании через «<code>super(B, obj).m()</code>» используется «<code>obj.__class__.__mro__</code>» чтобы найти такой класс «<code>A</code>» , который является непосредственным базовым классом для «<code>B</code>», и затем вызывается «<code>A.__dict__['m'].__get__(obj, A)</code>» .
→Super Binding
0 Связывание (подстановка) через базовый класс
→The starting point for descriptor invocation is a binding, a.x. How the arguments are assembled depends on a:
0 Отправной точкой для вызова дескриптора является значение «<code>a.x</code>» : то как собираются аргументы для этого вызова – зависит от «<code>a</code>» :
→See also
PEP 3129 - Class Decorators
Class definitions, like function definitions, may be wrapped by one or more decorator expressions. The evaluation rules for the decorator expressions are the same as for functions. The result must be a class object, which is then bound to the class name.
0 Смотрите тпкже
PEP 3129 - “Декораторы” классов
“Определение” класса (так же как и функции) , может подвергаться действию одного или нескольких выражений “декораторов” . Правила исполнения “декораторов” такие же, как и для функций. Результат исполнения выражения “декоратора” должен быть объектом-классом, который затем назначается имени данного класса вместо прежнего класса.
→A class definition is an executable statement. The inheritance list usually gives a list of base classes (see Customizing class creation for more advanced uses), so each item in the list should evaluate to a class object which allows subclassing. Classes without an inheritance list inherit, by default, from the base class object; hence,
0 Код, задающий класс (“определение” класса) , является исполнимой инструкцией. Сначала, если имеется, вычисляется список наследуемых базовых классов (смотри́те подробности в “Customizing class creation” ) . Каждый элемент в этом списке должен давать в результате объект-класс, такой, который допускает создание производного класса. Классы без списка базовых классов – по-умолчанию наследуются от базового объекта:
→Programmer’s note: Variables defined in the class definition are class variables; they are shared by instances. Instance variables can be set in a method with self.name = value. Both class and instance variables are accessible through the notation “self.name“, and an instance variable hides a class variable with the same name when accessed in this way. Class variables can be used as defaults for instance variables, but using mutable values there can lead to unexpected results. Descriptors can be used to create instance variables with different implementation details.
0 **Замечание:** Переменные, созданные в “определении” класса становятся атрибутами класса, общими для всех его экземпляров. Атрибуты экземпляра могут быть созданы из какого-либо метода посредством «self.name = значение» . Атрибуты и класса и экземпляра доступны через формулировку «self.name» , и при таком способе доступа атрибут экземпляра перекрывает атрибут класса с тем же именем. Атрибуты класса могут использоваться как значения по умолчанию для атрибутов экземпляра, но если эти атрибуты класса являются изменяемыми – то это может привести к неожиданным результатам. Для создания у экземпляра переменных с нестандартными деталями реализации – можно использовать дескрипторы.
→Class creation can be customized heavily using metaclasses.
0 Создание классов может быть глубоко настроено с помощью метаклассов.
→Classes can also be decorated, just like when decorating functions:
0 Классы могут быть “декорированы” , таким же образом как и функции:
→[4] A string literal appearing as the first statement in the class body is transformed into the namespace’s __doc__ item and therefore the class’s docstring.
0 [4] Текстовый объект, идущий с первой строки содержания кода класса, преобразуется в элемент с именем “__doc__” в данной локальной области и, таким образом становится “документацией” этого класса.
→The class’s suite is then executed in a new execution frame (see section Naming and binding), using a newly created local namespace and the original global namespace. (Usually, the suite contains only function definitions.) When the class’s suite finishes execution, its execution frame is discarded but its local namespace is saved. [4] A class object is then created using the inheritance list for the base classes and the saved local namespace for the attribute dictionary. The class name is bound to this class object in the original local namespace.
0 Затем основной класс исполняется в новом кадре исполнения (смотри́те раздел “Naming and binding” ) с использованием новосозданной локальной области имён и исходной глобальной области имён. (Обычно код класса содержит только “определения” функций. ) Текстовый объект, идущий с первой строки содержания кода класса, преобразуется в элемент с именем “__doc__” в данной локальной области и, таким образом становится “документацией” этого класса. [4] Когда код класса завершён, его кадр исполнения удаляется, а его локальная область имён сохраняется. Затем создаётся объект-класс с использованием списка наследования для базовых классов, а полученная ранее область имён становится словарём атрибутов класса. Затем полученный объект-класс назначается указанному имени в исходной области имён.
Резюме
Пол:
мужчина
Родной язык:
русский
С нами:
с 13 февраля 2010 г. (6091 день)
Деятельность:
922 версии перевода с общим рейтингом 2
7 комментариев
Карма: 2 (оценок: 2)
Написать Hittih личное сообщение