PowerShell な人種が Python やってみたシリーズの 04 です。
今回は「関数」と「モジュール」についてまとめます。
PowerShell での関数はこう書きますね。
|
Python では、このように書きます。
|
関数の呼び出しは、このように書きます
関数名(引数) |
例えば、このような感じです。
|
ちなみに、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]
|
[main.py]
|
Python では、import したモジュール名を明示的に指定してモジュール内の関数を呼び出します。
モジュール名.関数名(引数) |
import は目的によっていくつかの使い方があります。
モジュールを import すると、モジュールに含まれるすべての関数が import され、モジュール名.関数名 で使うのですが、特定の関数だけ import することも可能です。
from モジュール import 関数[, 関数, 関数, ...] |
この場合、モジュール名を使わずに直接関数を使う事が出来ます。
例えばこんな感じ。
[calc.py]
|
[main.py]
|
「*」を使ってすべての関数を import する事もできます。
from モジュール import * |
モジュールに別名をつけることもできます。
import モジュール as 別名 |
こんな感じですね
[main.py]
|
モジュールとして import したい .py が同一フォルダーにあればいいのですが、モジュールの再利用を考えると特定のフォルダー指定したくなります。
そんな時は、モジュールの検索 path に特定フォルダーを追加します。
追加方法には、「sys.path に追加する方法」と、「環境変数に設定する方法」があります。
(相対 path 指定方法はわかりませんでした(Windows 環境は絶対 Path しか指定できないのかも))
モジュールの検索 Path は、sys.path なので、ここに append() メソッドで追加します。
[main.py]
|
もう一つの方法は、環境変数「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
Copyright © MURA All rights reserved.