言語仕様

はじめに

基本的に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のキーをリスト化

参考:

トピック

アンダースコア(_)

_ の使い方:

  1. 返り値を無視する
  2. 関数や変数の役割を変える
  3. 数字を読みやすくする

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 と同じ

参考: