Python | JavaScript | PHP | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
命名規則(変数、関数、メソッド) |
■lower_snake_case ※全小文字 + アンダースコア区切り |
■lowerCamelCase ※最初小文字 + 大文字区切り |
■lower_snake_case ■lowerCamelCase の両方。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
命名規則(定数) |
■UPPER_SNAKE_CASE ※全大文字 + アンダースコア区切り |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
命名規則(クラス) |
■UpperCamelCase ※最初大文字 + 大文字区切り |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Falsy (偽値) |
■False ■None ■'', (), [], {}, set(), range(0) ■0 |
■false ■null ■undefined ■"" ■0 ■NaN |
■false ■null ■"", [] ■0 ■"0"(1文字の"0"の時のみ) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
変更可能(ミュータブル)な値 |
■リスト ■辞書 ■集合 ■インスタンス(例外あり) ■バイト配列 |
■配列 ■オブジェクト |
準備中 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
変数の挙動 |
共有渡し(pass by sharing)のみ。 参照渡し(pass by reference)の機能は存在しない。
1、変数=値 :値を空いているメモリ領域に格納し、その領域のメモリアドレスを変数に格納する。 2、変数=変数 :変数に格納されているアドレスを渡す。 ※複合型の値を扱う際に2のようなアドレス渡しをしたくなければ、ディープコピー関数で新たな複合型の値を生成し変数に代入すれば1の挙動になる。
ディープコピー(深いコピー)に対してシャローコピー(浅いコピー)もある。シャローコピーは一階層目の値のみが複製される。 |
○通常の代入は値渡し(pass by value)。 全ての値を複製し、新たな値として渡す。
○代入元の変数の前に「&」を付けると参照渡し(pass by reference)。 代入先の変数が、代入元の変数のエイリアス(別名)として機能する。 メモリアドレスを渡すわけではない。
※例外 オブジェクト変数に格納される値は、オブジェクト自身ではなくオブジェクトIDである。 そのため、値渡しをしても同じオブジェクトを指すようになり、参照渡しと同じような挙動になる(エイリアスではない)。 オブジェクトを別物として渡したい場合は、cloneを使って複製する。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ディープコピー関数 | ■copy.deepcopy() |
■structuredClone() ※関数要素を複製することはできない(エラーが出る)。 |
準備中 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
シャローコピーが行われる処理。 |
■copy.copy() ■.copy() ■スライス[:] ■list() ■dict() ■.extend() ■内包表記 |
■.slice()メソッド ■配列内スプレッド構文[...] |
準備中 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
正規表現の書き方(固有) |
Pythonではエスケープシーケンスが用意されているが、正規表現を使う場合にはその挙動が手間になる場合がある。 そのため、Pythonでは正規表現のパターンを書く際にraw文字列を使用することが推奨されている。 ※raw文字列: r'文字列'のように書く。\(バックスラッシュ)を単なる1つの文字として扱う(正規表現は別)。そのため、エスケープシーケンスが無効化される。 |
/正規表現/のように、スラッシュで囲んだ中に正規表現のパターンを書く。 エスケープシーケンスは無効化されない。 |
準備中 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
正規表現で利用できる主なフラグ |
|
|
準備中 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
正規表現の書き方(共通) |
・正規表現パターン
|
準備中 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
文字列の抽出 |
■re.findall(pattern, string, flags=0) ・マッチするすべての部分文字列をリストで返す。無ければ空リスト。 ・キャプチャグループを設定した場合、グループにマッチした文字列を要素とするタプルのリスト。 ・マッチ全体も合わせて取得したい場合は、全体もグループ化する。 |
■str.match(pattern) ・最初にマッチした部分文字列と、それに関するキャプチャグループを配列で返す。マッチするものがない場合はnullを返す。 (gフラグがあった場合、マッチするすべての部分文字列を配列で返す。キャプチャグループは返さない) |
準備中 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
文字列の置換 |
■re.sub(pattern, repl, string, count=0, flags=0) ・countは左側からの最大置換回数(0なら全て)。 ・キャプチャグループを設定した場合、グループにマッチした文字列を1つ目から\1, \2, \3...とreplで使用できる。 ・replはraw文字列を使うのがベター。 ・改行文字は\nと\r\nが混在している場合があるので、改行文字を置換したい場合は一旦改行で分割(.splitlines()を利用)してから区切り文字で結合(.join()を利用)するのが安心。 |
■str.replace(pattern, replacement) ・最初にマッチした部分文字列を置換し、新しい文字列を返す。 (gフラグがあった場合、マッチするすべての部分文字列を置換する) ・キャプチャグループを設定した場合、グループにマッチした文字列を1つ目から$1, $2, $3...とreplacementで使用できる。 |
準備中 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
文字列の分割 |
■re.split(pattern, string, maxsplit=0, flags=0) ・パターンにマッチした部分で文字列を分割し、リストで返す。先頭・末尾にマッチする場合、結果のリストの最初と最後に空文字列''が含まれる。 ・キャプチャグループを設定した場合、グループにマッチした文字列も結果のリストの一部として返される。 ・maxsplitは左側からの最大分割回数(0なら全て)。 ・改行で分割したい場合は.splitlines()を利用するのが安心。 |
■str.split(pattern) ・パターンにマッチした部分で文字列を分割し、配列で返す。先頭・末尾にマッチする場合、結果の配列の最初と最後に空文字列""が含まれる。 ・キャプチャグループを設定した場合、グループにマッチした文字列も結果の配列の一部として返される。 |
準備中 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
文字列の結合 | ■'delimiter'.join(iterable str) | ■文字列の配列.join('delimiter') | 準備中 |