Home > Windows にまつわる e.t.c.

Python の関数とモジュール


PowerShell な人種が Python やってみたシリーズの 04 です。

今回は「関数」と「モジュール」についてまとめます。

 

関数

PowerShell での関数はこう書きますね。

function 関数名(引数){
    # 関数内処理
    return 戻り値
}

 

Python では、このように書きます。

def 関数名(引数) :
    # 関数内処理
    return 戻り値

 

関数の呼び出しは、このように書きます

関数名(引数)

 

例えば、このような感じです。

# 関数の定義
def add(a, b):
    return a + b

# 関数の実行
ReturnData = add(10 , 20)
print(ReturnData)

 

ちなみに、Python では、関数名は小文字で書くのがスタンダードのようです。

 

組み込み関数

Python では言語レベルで組み込まれている関数があり、自作の関数と同様に使う事が出来ます。

どんなものがあるかは、以下を見てください。

組み込み関数
https://docs.python.org/ja/3/library/functions.html

 

モジュール

Python のモジュールは、PowerShell のモジュールと同様に、関数等を別のファイルに保存します。

PowerShell の場合は、.psm1 にして using module で取り込むか、.ps1 にして . で読み込む手がありますね。

PowerShell スクリプトで使う「設定」を分離する
http://www.vwnet.jp/windows/PowerShell/2018013002/SeparateConfig.htm

PowerShell での Class 定義分離
http://www.vwnet.jp/Windows/PowerShell/2018013001/ClassDefinitionSeparation.htm

 

Python では .py にして、import します。

PowerShell では、関数名が衝突すると後勝ちになるので関数名の衝突がトラブルの原因になることがありますが、Python の場合はモジュール名で識別できるので、関数名が衝突することはありません。

百聞は一見に如かずなので、サンプルをお見せします。

同一フォルダ内に2つスクリプトを置いて main.py を実行します。

[calc.py]

def add(a, b):
    return a + b

[main.py]

# モジュール import
import calc

# モジュールの関数実行
Anser = calc.add(50, 60)
print(Anser)

 

Python では、import したモジュール名を明示的に指定してモジュール内の関数を呼び出します。

モジュール名.関数名(引数)

 

import の使い方

import は目的によっていくつかの使い方があります。

 

モジュール内の特定関数だけ import する

モジュールを import すると、モジュールに含まれるすべての関数が import され、モジュール名.関数名 で使うのですが、特定の関数だけ import することも可能です。

from モジュール import 関数[, 関数, 関数, ...]

 

この場合、モジュール名を使わずに直接関数を使う事が出来ます。

例えばこんな感じ。

[calc.py]

def add(a, b):
    return a + b

[main.py]

# calc 関数だけ import
from calc import add

# モジュールの関数実行
Anser = add(50, 60)
print(Anser)

 

「*」を使ってすべての関数を import する事もできます。

from モジュール import *

 

別名をつける

モジュールに別名をつけることもできます。

import モジュール as 別名

 

こんな感じですね

[main.py]

# モジュール import
import calc as c

# モジュールの関数実行
Anser = c.add(50, 60)
print(Anser)

 

モジュールの検索 path を指定する

モジュールとして import したい .py が同一フォルダーにあればいいのですが、モジュールの再利用を考えると特定のフォルダー指定したくなります。

そんな時は、モジュールの検索 path に特定フォルダーを追加します。

追加方法には、「sys.path に追加する方法」と、「環境変数に設定する方法」があります。

(相対 path 指定方法はわかりませんでした(Windows 環境は絶対 Path しか指定できないのかも))

 

sys.path に追加

モジュールの検索 Path は、sys.path なので、ここに append() メソッドで追加します。

[main.py]

# モジュール検索 Path の追加
import sys
sys.path.append("C:\\SumpleCode\\Sub")

# モジュール import
import calc

# モジュールの関数実行
Anser = calc.add(50, 60)
print(Anser)

 

環境変数に設定

もう一つの方法は、環境変数「PYTHONPATH」に検索 Path を書く方法です。

Windows 環境では、この環境変数自体が作られていないので、追加ではなく新規登録で OK です。

PowerShell で一時的に環境変数を登録するのであれば $env:PYTHONPATH に検索 Path をセットします。

$env:PYTHONPATH = "C:\\SumpleCode\\Sub"

 

恒久的に環境変数を登録するのであれば、システムのプロパティの[詳細設定]-[環境変数]で設定するか、setx コマンドを使うと良いでしょう。(setx の使い方はググってね w)

システムのプロパティで環境変数設定する場合は、以下コマンドで一発で開く事が出来ます

rundll32 sysdm.cpl,EditEnvironmentVariables

 

標準ライブラリ

Python では標準機能としてのモジュールが「標準ライブラリ」として提供されています。

PowerShell の .NET Framework や .NET Core みたいな感じですね。

どんなモジュールがあるかは、以下を見てください。

Python 標準ライブラリ
https://docs.python.org/ja/3/library/index.html

 

標準ライブラリはモジュール検索 Path にセットされているので、そのまま import 出来ます(当然な話)

 

関連情報

PowerShell な人種が Python やってみた
http://www.vwnet.jp/Windows/etc.asp#Python

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.