-
Pythonの変数スコープ基本ルールとは?LEGBルールをわかりやすく解説
Pythonにおける変数の参照順序(スコープの解決方法)を理解するうえで、最も有名なのが「LEGBルール」です。これは、Mark Lutz氏の名著『Learning Python』の中で紹介されている記憶術で、Pythonが変数を探す順序を4つの頭文字で表したものです。LEGBルールとは?Pythonは変数を参照する際、最も狭いスコープから最も広いスコープへと、以下の順序で名前を探します。L:Local(ローカル)現在実行中の関数内で定義された変数を指します。関数の内部で代入された変数は、その関数のローカルスコープに属します。E:Enclosing(エンクロージング)別の関数を囲む外側の関数(
-
Pythonコードが関数内でより高速に実行されるのはなぜ?理由を徹底解説
Pythonのコードを通常どおり実行した場合と、関数の中で実行した場合を比較すると、後者の方が高速に動作することが知られています。では、なぜPythonコードは関数内でより速く実行されるのでしょうか。本記事ではその理由をわかりやすく解説します。 ローカル変数はグローバル変数より高速 一般的に、Pythonの関数内では、グローバル変数よりもローカル変数を扱う方が高速であることが分かっています。この違いは、次のように説明できます。 ローカル変数とグローバル変数の格納・読み出しにかかる時間の差に加えて、「オペコード予測(opcode prediction)」と呼ばれる仕組みも、関数の実行を高速化す
-
Pythonで関数が例外を発生させることをテストする方法(unittestのassertRaises活用)
Pythonのユニットテストでは、「関数が期待どおりの例外を投げない場合にのみ失敗する」というテストを書くことができます。これは、型安全性やエラーハンドリングの正しさを検証するうえで非常に重要な手法です。ここでは、Python標準ライブラリの unittest を使って、関数が例外をスローすることを確認する方法を解説します。例外発生をテストするサンプルコードたとえば、整数と文字列を足し合わせると TypeError が発生することを確認するコードは、以下のように書けます。Pythonシェルにそのまま貼り付けて実行できます。import unittest class MyTestCase(uni
-
Pythonの関数名・識別子に使用できる文字とは?命名ルールを徹底解説
Pythonにおける識別子(Identifier)とは? Pythonにおいて、クラス名、関数名、変数名など、プログラム内のさまざまな要素に付ける名前のことを識別子(identifier)と呼びます。識別子は、それぞれの要素を他と区別するために欠かせないものです。 この記事では、関数名や変数名としてどのような文字が許可されているのか、そのルールと注意点を具体例とともに解説します。 識別子に使用できる文字のルール Pythonの識別子には、以下の文字を組み合わせて使用できます。 英字の小文字(a〜z) 英字の大文字(A〜Z) 数字(0〜9) アンダースコア(_) たとえば myClass、
-
Pythonのデフォルト引数とは?基本的な使い方をサンプルコードで解説
Pythonでは、関数の引数にデフォルト値(初期値)を設定できます。関数を呼び出す際にその引数が省略された場合、自動的にデフォルト値が適用される仕組みです。 デフォルト引数の基本 Pythonは、関数引数の構文やデフォルト値の扱い方において、他のプログラミング言語とは少し異なる独自のアプローチを採用しています。デフォルト値とは、関数呼び出し時に引数の値が渡されなかった場合に、その引数が取る値のことです。 デフォルト値は、代入演算子(=)を使って設定します。以下がデフォルト引数の典型的な構文です。この例では、foo パラメータに Come here! というデフォルト値が設定されています。 de
-
Pythonの必須引数とは?関数に必要な引数の基本をわかりやすく解説
Pythonにおける必須引数(Required Arguments)とは 必須引数とは、関数を定義した際に指定された、呼び出し側が必ず渡さなければならない引数のことです。関数を呼び出すときは、定義された引数の数と順序を正しく守って値を渡す必要があります。 例えば、次のような関数を見てみましょう。 def requiredArg(str, num): print(str, num) # 正しい呼び出し方:2つの引数を渡す requiredArg(Hi, 15) # 誤った呼び出し方:引数が1つしかない requiredArg(Hello) このコードを実行すると、以下のような出
-
Python関数でvoid(None)を返す方法をわかりやすく解説
Pythonは動的型付け言語であり、関数を定義する際に戻り値の型を指定する必要がありません。そのため、関数は任意の型の値を自由に返すことができます。C言語やJavaにあるような「void型」という概念はPythonには存在しませんが、代わりにNoneという特別なオブジェクトがその役割を担っています。 戻り値を指定しない場合、自動的にNoneが返される Pythonでは、return文を書かずに関数を終了した場合、関数は暗黙的にNoneを返します。つまり、以下の2つの関数はまったく同じ動作をします。 def func_a(): print(処理を実行) # return文がな
-
Pythonの「属性」と「プロパティ」の違いとは?仕組みと使い方をわかりやすく解説
Pythonではすべてがオブジェクト Pythonにおいて、すべてはオブジェクトです。そして、すべてのオブジェクトは属性(アトリビュート)とメソッド(関数)を持ちます。属性とは、名前・年齢・身長などのデータを表す変数によって記述されるものです。 プロパティとは何か プロパティは、__get__、__set__、__delete__ といったゲッター・セッター・デリート用の特殊メソッドを持つ、特別な種類の属性です。Pythonには property デコレーターが用意されており、これを使うことで属性へのゲッター/セッターアクセスを簡単に提供できます。 基本的な仕組みとして、Pythonが次の
-
Pythonでテキストファイルの重複行を削除する方法
Pythonでは、ファイル操作の機能を使うことで、テキストファイルや関数内に含まれる重複した行を簡単に削除できます。ここでは、例として「bar.txt」というテキストファイルを使用し、重複行を取り除いた結果を「foo.txt」という新しいファイルに保存する方法を解説します。なお、処理対象となるテキストファイルは、Pythonスクリプトと同じディレクトリ(フォルダ)に配置しておく必要があります。異なる場所にある場合は、正しく動作しないので注意してください。元データ(bar.txt)今回使用するbar.txtの内容は以下の通りです。A cow is an animal. A cow is an a
-
Python関数のドキュメント作成方法:docstringの書き方とSphinxの活用
Python関数のドキュメント(docstring)とは Pythonでは、関数やメソッドに関する説明情報は「docstring(ドックストリング)」として関数内に記述します。docstringを適切に書いておくことで、コードの可読性が向上し、他の開発者や将来の自分がその関数の用途をすぐに理解できるようになります。 なお、docstringは関数の__doc__属性から参照でき、組み込みのhelp()関数を使えば対話的に内容を確認することも可能です。 docstringを書く際のガイドライン docstringを作成する際には、以下のガイドラインに従うことが推奨されています。 まず、最初の行
-
キャメルケースをスネークケースに変換するPython関数の書き方
プログラミングでは、命名規則の異なるコードを扱う際に、キャメルケース(camelCase)をスネークケース(snake_case)へ変換したい場面がよくあります。この記事では、Pythonの正規表現モジュール re を使った変換関数の実装方法をわかりやすく解説します。 キャメルケースとスネークケースとは キャメルケースは、各単語の先頭を大文字にしてつなげる記法で、JavaやJavaScriptなどで広く使われています。一方、スネークケースは単語をアンダースコア「_」でつなぐ記法で、PythonではPEP 8によって推奨される標準的な命名スタイルです。 例えば、「JavaBeans」というキャメ
-
Pythonで関数から何も返さない(Noneを返す)方法とは?
Python関数がNoneを返す仕組みreturn文を持たない関数は「void関数」と呼ばれ、呼び出されると自動的にNoneを返します。None以外の値を返したい場合は、関数内にreturn文を記述する必要があります。値を返すこのような関数は「実りある関数(fruitful functions)」と呼ばれます。ここで注意すべき点として、None、True、Falseといった値は文字列ではありません。これらはPythonにおける特別な値でありキーワードでもあり、言語の構文の一部として扱われます。もし関数の最後まで処理が進んだ時点で、明示的なreturn文が一度も実行されていなければ、Python
-
Pythonで関数の引数名をすべて小文字に変換する方法
Pythonでは、標準ライブラリの inspect モジュールを利用することで、関数に定義されている引数名を取得できます。取得した引数名は、リスト内包表記と lower() メソッドを組み合わせることで、すべて小文字へ変換することが可能です。 サンプルコード # 関数の引数を小文字に変換して表示するプログラム import inspect def foo(ARG1, ARG2): pass # 関数の引数名リストを取得 list1 = inspect.getargspec(foo)[0] # 各引数名を小文字に変換 list1 = [item.lower() for item in l
-
Python関数で辞書を返す方法とは?基本の書き方とサンプルコード
Pythonでは、関数から辞書(dict)を返す方法がいくつかあります。ここでは、最も基本的なパターンを中心に、具体的なサンプルコードとともに分かりやすく解説します。 基本の方法:dict()で辞書を作成してreturnする まずは、関数内でdict()コンストラクタを使って空の辞書を生成し、キーと値を追加したうえでreturn文で返す方法です。 # この関数は辞書を返します def foo(): d = dict() d[str] = Tutorialspoint d[x] = 50 return d print(foo()) 実行結果 {x: 50,
-
Python関数からタプルを返す方法をわかりやすく解説
Pythonでは、関数から複数の値を一度に返したい場合にタプルを活用できます。タプルを使えば、文字列や数値など異なる型の値をまとめて1つの戻り値として扱えるため、非常に便利です。ここでは、実際にタプルを返す関数を定義し、その動作を確認してみましょう。コード例def foo(): str = tutorialspoint x = 30 return (str, x) print(foo())この関数 foo() は、文字列 tutorialspoint と整数 30 を括弧で囲んでタプルとして返しています。呼び出し側では、このタプルを受け取ってそのまま表示できます。実行
-
【Python入門】関数からリストを返す基本的な方法とサンプルコード
Pythonでは、関数からリストを返す方法がいくつかあります。最も基本的なのは、関数内でリストを作成し、return文でそのリストを返すという方法です。 基本例:forループでリストを生成して返す 以下の例では、0から9までの数値を順番にリストへ追加し、完成したリストを返す関数 retList() を定義しています。 def retList(): result = [] for i in range(0, 10): result.append(i) return result a = retList() print(a) 実行結果 [0, 1,
-
Pythonで文字列からモジュールの関数を呼び出す方法|getattr()の使い方を解説
getattr()を使って文字列から関数を呼び出す Pythonでは、組み込み関数 getattr() を使うことで、関数名を表す文字列からモジュール内の関数を動的に取得し、呼び出すことができます。 import fibo # 文字列から関数オブジェクトを取得 func = getattr(fibo, baz) # 取得した関数を呼び出す result = func() print(result) getattr(モジュール名, 関数名) のように指定すると、その名前を持つ属性(ここでは関数)を取得できます。取得した関数オブジェクトは、通常の関数と同じように () を付けて呼び出すことが可
-
Python関数でデータ型を明示的に定義できるのか?その影響と型ヒントの基礎知識
Pythonでは、変数に明示的な型を指定することはありません。Pythonインタプリタが変数の型を自動的に判断し、内部で管理しています。一方、JavaやC++などの静的型付け言語では、関数の戻り値および各引数のデータ型を必ず指定する必要があります。では、Pythonの関数でデータ型を明示的に定義した場合はどうなるのでしょうか?結論から言うと、たとえ型を明示的に定義しても、プログラムは型を宣言していない通常のコードとまったく同じように動作します。つまり、型の明示的な宣言が出力結果に与える影響はないのです。サンプルコード以下の関数を使って、実際に確認してみましょう。def add_sum(x, y
-
Python関数の引数渡しの仕組みを解説!値渡しに見える理由とは
Pythonでは、関数に引数を渡すとき、その動作が「値渡し(pass by value)」なのか「参照渡し(pass by reference)」なのか迷うことがあります。結論から言うと、Pythonの引数渡しは「オブジェクトへの参照渡し(pass by object reference)」です。ただし、オブジェクトの種類によって挙動が異なるため、「値渡しのように見える」ケースがあります。 サンプルコードの出力結果 b = 30 a = [10] この出力を見ると、変数aの値は関数呼び出し後も変わっていないように見えます。そのため「Pythonの引数は値渡しだ」と結論づけたくなりますが、実
-
Pythonの関数は引数を参照渡しする?id()による検証方法を解説
Pythonの関数における引数の受け渡しの仕組みPythonでは、関数の引数は常に参照渡し(正確には「オブジェクトへの参照を受け渡す」方式)で行われます。つまり、関数に渡されるのはオブジェクトそのものではなく、そのオブジェクトへの参照です。この挙動は、実際の引数・仮引数・戻り値の各オブジェクトに対してid()を確認することで簡単に検証できます。検証用サンプルコードdef foo(x): print (id of received argument,id(x)) x.append(20) return x a = [10] print (id of a