演算子
+ - * ** / // % @
<< >> & | ^ ~ :=
< > <= >= == !=
演算子はテーブルに示した演算子が使えます。
演算子の優先順位は以下の通りです。
- 四則演算
操作 | ||
x + y | xとyの加算 | |
x - y | ||
x * y | ||
x / y | ||
x // y | ||
x % y | ||
-x | ||
@ | 行列の乗算 |
- 比較
操作 | ||
< | より小さい | |
<= | 等しいか、またはより小さい | |
> | より大きい | |
>= | 等しいか、より大きい | |
== | 等しい | |
!= | 等しくない | |
is | オブジェクト識別子、オブジェクトの比較 | |
is not | オブジェクトの比較 | |
論理操作
操作 | ||
x or y | Xが真ならばX、それ以外はy | 注1 |
x and y | x が偽ならば x, それ以外はy | 注2 |
not x | x が偽ならば 真、それ以外は偽 | |
注1
2番目の式は、最初の式が偽の時のみ実行されます。
注2
2番目の式は、最初の式が真の時のみ実行されます。
デリミタ
( ) [ ] { }
, : . ; @ = ->
+= -= *= /= //= %= @=
&= |= ^= >>= <<= **=
デリミタは演算子に準じた働きをして文の区切り、または演算子として扱われます。
- '(' および ')'
式の優先度を決定します。()内の演算が優先して実行されます。明示的に式の優先度を変更します。演算子の順序に関わらず、()内の文が優先して実行されます。
- '[' および ']'
配列の要素、配列のデリミタとして用いられます。
- '{' および '}'
Dictのデリミタとして用いられます。
{key:value, key2:value2, key3:value,...}
- ',' コンマ
データ列、配列の要素を区切る場合にデリミタとして用いられます。
- :
条件式の文の終端に用います。
if xxxx == 0:
var1 = 1
- ’ .'
- '.'
- @
行列の乗算
- -
演算子に等号を組み合わせた演算子は、演算子の左のオペランドと右側のオペランドを左の演算子を実行した後、変数に結果をストアします.
a += b
a と を加算して結果を a にストアしてします。
a *= b
a と b を乗算して結果を a にストアします。
a <<= b
a を左に b シフトし、結果 a に代入します。
a &= b
a と b のビットごとのANDをとり、結果を a に代入します。
a |= b
a と b のビットごとのOR をとり、結果を a に代入します。
キーワード
以下のワードは言語のキーワードまたはリザーブのワードして扱われれるため、変数名などには使用できません。
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield
エスケープシーケンス
\\
Backslash (\)
\'
Single quote (')
\"
Double quote (")
\a
ASCII Bell (BEL)
\b
ASCII Backspace (BS)
\f
ASCII Formfeed (FF)
\n
ASCII Linefeed (LF)
\r
ASCII Carriage Return (CR)
\t
ASCII Horizontal Tab (TAB)
\v
ASCII Vertical Tab (VT)
\ooo
Character with octal value ooo
(2,4)
\xhh
Character with hex value hh
(3,4)
文字列のフォーマット
接頭語fまたはFに続く文字列は、フォーマットされた文字列とみなします。
これらの文字列は置換するフィールドを含んでおり、その置換部分はブレス{}で囲まれます。
以下の例を参照してください。
>>> name = "Fred"
>>> f"He said his name is {name!r}."
"He said his name is 'Fred'."
>>> f"He said his name is {repr(name)}." # repr() is equivalent to !r
"He said his name is 'Fred'."
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal("12.34567")
>>> f"result: {value:{width}.{precision}}" # nested fields
'result: 12.35'
>>> today = datetime(year=2017, month=1, day=27)
>>> f"{today:%B %d, %Y}" # using date format specifier
'January 27, 2017'
>>> f"{today=:%B %d, %Y}" # using date format specifier and debugging
'today=January 27, 2017'
>>> number = 1024
>>> f"{number:#0x}" # using integer format specifier
'0x400'
>>> foo = "bar"
>>> f"{ foo = }" # preserves whitespace
" foo = 'bar'"
>>> line = "The mill's closed"
>>> f"{line = }"
'line = "The mill\'s closed"'
>>> f"{line = :20}"
"line = The mill's closed "
>>> f"{line = !r:20}"
'line = "The mill\'s closed" '
式、構文
- 構文
文の構造、制御文、条件文にかかる文は段落をシフトします。
条件文や制御文はネストが深くなるごとに段落もシフトします。
同じレベルの段落の命令文が同じネストレベルの連続した命令として解釈されます。
命令は1行で1命令を記述します。1行で命令文を記述したら、行を変えて(LF)次の命令を記述します。
行の先頭ワードのインデントを揃えないとエラーになります。
ブロックの先頭は常に同じ位置になります。
二つ以上の行を一つの一つの論理的な行として扱うには、物理的な行の終端にバックスラッシュを用います。バックスラッシュはエスケープシーケンスの一つです。
if 2000 < year < 2023 and \
1 <= month <= 12 and \
1 <= day <= 31:
return 0
- 空白行
空白、空白行は評価されません。
- インデント
論理的な行の最初の空白文字列、またはタブは、その行のインデントとして読み込まれます。
文のブロックはインデントの位置が同じブロックを一つの論理的なブロックとみなします。
C, PHP, JavaScriptなどの構文では文のブロックはブレス{}で囲まれますが、Pythonでは、同じ位置のインデントの文が文のブロックになります。
インデントがネストされていれば、ネストされたインデントが上位のインデントに含まれるブロック構造になります。
var1 = function1()
if var1 == 0:
var2 = 1
var3 = 10
var4 = var2 + var3
# some instruction ...
print( var4 )
import システム
import を使うことで外部モジュールを読み込んで使用することができます。
Pythonにはパッケージと呼ぶモジュールシステムが用意されています。import システムを使うことで、このパッケージとして管理されている外部モジュールを読み込んで使用することができます。
- サブモジュール
パッケージ bar がサブモジュールfooを持っている場合、モジュール bar がfoo の属性を持ちます。
A/
__init__.py
boo.py
__init__.py が以下の行を含んでいるとすると、
from .foo import Foo
import A
A.boo
A.Foo
モジュール A.boo は A/boo.py
モジュール A.Foo は A.boo.Foo を指します。
- Import 関連のモジュール属性
__name__ | importシステム内でモジュール固有の識別子として使います |
__loader__ | モジュールがロードされる時、importシステムが使うローダーオブジェクトに設定する属性 |
__package__ | モジュールのパッケージ属性。モジュールがパッケージの場合、__name__の値と一致します。 |
__spec__ | モジュールのspec属性 |
__path__ | モジュールがパッケージであれば、この属性を設定する |
__file__ | モジュールがロードされた時のpath 名を示します。 |
例外処理ハンドラ
pythonインタープリタが実行時エラーを検出すると、Raise命令を実行し、例外処理を起動します。
例外ハンドラは、try..except 行で例外処理を記述します。
finally 行は、処理固有のクリーンナップコードを記述することができます。
try ... except
finally
式
assert
プログラムデバッグ時の assertion に使う。
assert | プログラムデバッグ時のassertionに使います。 |
pass | これはnull操作です。実行時に何も処理しません。行は必要だが実行するコードが何もない時にプレイスホルダーとして用います。 |
return | 関数定義の中で、ネストされたブロックから呼び出し元に戻る場合に用いる。 |
break | ネストされたfor,whileがループを抜ける時に使います。ループがbreakで終了した時、ループ制御変数は終了時の値を保持します。 |
continue | ステートメントが含まれるループの次のサイクルのループを続けます。ループがネストされている場合、最も近い側のループの処理を継続します。 |
import | importシステムを使い、指定したモジュールを探してロードします。 |
global | 現座のコードブロック全体を globalに宣言します。 |