Python リファレンスを読む
気分転換にPython
ブロック(block)
- モジュール
- 関数本体
- クラス定義
スコープ(scope)
- ローカル変数は,ブロックスコープ
ラムダ(lambda)
- lambda_form ::= "lambda" [parameter_list] ":" expression *1
- parameter_list ::= (defparameter ",")* ( ... )
- defparameter ::= parameter ["=" expression]
- parameter ::= identifier | "(" sublist ")"
- sublist ::= parameter ("," parameter)* [","]
- statement を含むことができない.expression だけ.
呼び出し(call)
- 呼び出し可能オブジェクト
関数定義
- funcdef ::= "def" funcname "(" [parameter_list] ")" ":" suite
- suite ::= stmt_list NEWLINE | NEWLINE INDENT statement+ DEDENT
- stmt_list ::= simple_stmt ( ";" simple_stmt)* [";"]
- statement ::= stmt_list NEWLINE | compound_stmt
- simple_stmt ::= ...
ふむ.suite だと,NEWLINE or DEDENT が無いとダメなのか.
分岐/ループ
- if_stmt ::= "if" expression ":" suite
- for_stmt ::= "for" target_list "in" expression_list ":" suite
ブール演算(boolean operation)
- expression ::= or_test | lambda_form
- or_test ::= and_test | or_test "or" and_test
- and_test ::= not_test | and_test "and" not_test
- not_test ::= comparison | "not" not_test
exec 文
- exec_stmt ::= "exec" expression ["in" expression ["," expression]]
ふむ.やっぱりこれしかないかぁ.
$ python -c 'exec "def a():\n print \"Hello, world\"\na();a()"'
引数の受け渡し
引数のパース
- optparse.OptionParser
- http://www.python.jp/doc/release/lib/module-optparse.html
*1:http://www.python.jp/doc/release/ref/lambdas.html だと,lambda のところの":" がクォートしてなかったよ