Семантика идентификатора строки в Python
Какова семантика строки Python 2.7, содержащей ТОЛЬКО идентификатор. То есть просто
a
или же
something
?
Если вы знаете точное место в справочнике, я был бы очень рад. Tnx.
2 ответа
Сам по себе идентификатор является допустимым выражением. Само по себе выражение в строке является допустимым утверждением.
Полная семантическая цепочка немного сложнее. Чтобы иметь хороший приоритет оператора, мы классифицируем такие вещи, как "a и b", как технически and_test
и or_test
, В результате простой идентификатор технически квалифицируется как более десятка грамматических элементов
stmt: simple_stmt | compound_stmt
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt |
import_stmt | global_stmt | nonlocal_stmt | assert_stmt)
expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) |
('=' (yield_expr|testlist_star_expr))*)
testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [',']
test: or_test ['if' or_test 'else' test] | lambdef
or_test: and_test ('or' and_test)*
and_test: not_test ('and' not_test)*
not_test: 'not' not_test | comparison
comparison: expr (comp_op expr)*
expr: xor_expr ('|' xor_expr)*
xor_expr: and_expr ('^' and_expr)*
and_expr: shift_expr ('&' shift_expr)*
shift_expr: arith_expr (('<<'|'>>') arith_expr)*
arith_expr: term (('+'|'-') term)*
term: factor (('*'|'/'|'%'|'//') factor)*
factor: ('+'|'-'|'~') factor | power
power: atom trailer* ['**' factor]
atom: ('(' [yield_expr|testlist_comp] ')' |
'[' [testlist_comp] ']' |
'{' [dictorsetmaker] '}' |
NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False')
stmt
может состоять из одного simple_stmt
, который может быть составлен из simgle small_stmt
, который может состоять из одного expr_stmt
и так далее, через testlist_star_expr
, test
, or_test
, and_test
, not_test
, comparison
, expr
, xor_expr
, and_expr
, shift_expr
, arith_expr
, term
, factor
, power
, atom
, и наконец NAME
,
Это простое выражение: https://docs.python.org/2/reference/simple_stmts.html