言語仕様
はじめに
基本的にPython3の仕様のみを書く。
ただし、ぐぐった結果とかを貼っているものはPython2のことがあるかもしれない。
ドキュメント:
import
リファレンス:
import文
https://docs.python.org/ja/3/reference/simple_stmts.html#import
例:
import a
from b import foo
from c import bar as baz, quz
参考:
モジュール検索パス
https://docs.python.org/ja/3/tutorial/modules.html#the-module-search-path
sys.path のリストから探す。sys.path は以下で初期化される:
- カレントディレクトリ(あるいは入力されたスクリプトのあるディレクトリ)
- 環境変数 PYTHONPATH
- インストールごとのデフォルト
参考:
コメント
複数行のコメントは """
または '''
で書く。
def foo():
"""
コメント1
コメント2
"""
print 'foo'
参考:
リテラル
https://docs.python.org/ja/3/reference/lexical_analysis.html#literals
文字列
Examples:
'foo'
"foo"
See also:
参考:
演算子
二項演算子
6. 式 (expression) — Python 3 ドキュメント
@
… 行列の乗算
累算代入演算子
https://docs.python.org/ja/3/reference/simple_stmts.html#augmented-assignment-statements
Examples:
x += 1
x %= 3 # 剰余
x //= 5 # 切り捨て除算
NOTE:
- Rubyの
||=
相当はない
三項演算子
Syntax:
(変数) = (条件がTrueのときの値) if (条件) else (条件がFalseのときの値)
Example:
x = "OK" if n == 10 else "NG"
参考:
*
, **
展開
- リストやタプルには
*
、dictには**
を付けることで展開して、関数の引数にすることができる。
参考:
制御構文
条件分岐
https://docs.python.org/ja/3/tutorial/controlflow.html#if-statements
if 条件1:
xxx
:
elif 条件2:
yyy
:
else:
zzz
:
参考:
ループ
for i in range(1, 5):
print(i)
list = ['a', 'b', 'c']
for elm in list:
print(elm)
参考:
関数
return
https://docs.python.org/ja/3/reference/simple_stmts.html#the-return-statement
構文:
return_stmt ::= "return" [expression_list]
NOTE:
- 多値を返すこともできる
Examples:
def test():
return 'abc', 100
a, b = test()
参考:
クラス
https://docs.python.org/ja/3/tutorial/classes.html
例外処理
https://docs.python.jp/3/tutorial/errors.html
Examples:
import sys
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
except OSError as err:
print("OS error: {0}".format(err))
except IOError as err:
# 例外の連鎖/変換
raise RuntimeError('Failed to open or read file!') from err
except ValueError:
print("Could not convert data to an integer.")
except:
print("Unexpected error:", sys.exc_info()[0])
raise
else:
print("No error.")
finally:
f.close()
参考:
書式付き文字列
a = "foo"
b = 123
'Hello, {}!'.format('world')
# f文字列 ... Python 3.6以上
print(f"{a} has {b} apples")
参考:
ジェネレータ
反復可能なオブジェクト
- ジェネレータ関数 …
yield
を使う - ジェネレータ式
参考:
組み込み関数
https://docs.python.jp/3/library/functions.html
list()
https://docs.python.jp/3/library/functions.html#func-list
Example:
list(somedict.keys()) #=> dictのキーをリスト化
参考:
トピック
アンダースコア(_
)
_
の使い方:
- 返り値を無視する
- 関数や変数の役割を変える
- 数字を読みやすくする
Examples:
a, _, c = (1, 2, 3)
# 先頭に1つの「_」で規約としてプライベート化する
# 「weak internal use」と呼ばれる
_foo = 'foo'
def _bar():
return 'bar'
class Sample:
# 普通のメソッドとして呼べなくなる
# 疑似private関数
def __foo():
return 'foo'
n = 1_000_000 # 1000000 と同じ
参考: