モジュールとパッケージ

"""最小値と最大値を求めるモジュール"""

def min_max2(a: 'value', b: 'value') -> 'value':
    """aとbの最小値と最大値を求めて返却"""
    return min(a, b), max(a, b)

def min_max3(a: 'value', b: 'value', c: 'value') -> 'value':
    """aとbとcの最小値と最大値を求めて返却"""
    return min(a, b, c), max(a, b, c)

if __name__ == '__main__':
    x = int(input('整数x:'))
    y = int(input('整数y:'))
    z = int(input('整数z:'))

    print('xとyの最小値は{}で最大値は{}です。'.format(*min_max2(x, y)))
    print('yとzの最小値は{}で最大値は{}です。'.format(*min_max2(y, z)))
    print('xとzの最小値は{}で最大値は{}です。'.format(*min_max2(x, z)))
    print('xとyとzの最小値は{}で最大値は{}です。'.format(*min_max3(x, y, z)))

C:>python min_max.py
整数x:5
整数y:6
整数z:2
xとyの最小値は5で最大値は6です。
yとzの最小値は2で最大値は6です。
xとzの最小値は2で最大値は5です。
xとyとzの最小値は2で最大値は6です。

"""2値の最小値と最大値を求める"""

def min_max2(a, b):
    """aとbの最小値と最大値を求めて返却"""
    return (a, b) if a < b else (b, a)

n1 = int(input('整数n1:'))
n2 = int(input('整数n2:'))

minimum, maximum = min_max2(n1, n2)
print(f'最小値は{minimum}で最大値は{maximum}です。')

C:>python min_max2.py
整数n1:2
整数n2:5
最小値は2で最大値は5です。

"""min_max2モジュールのmin_max2関数を呼び出す"""

import min_max2

x = float(input('実数x:'))
y = float(input('実数y:'))

mini, maxi = min_max2.min_max2(x, y)
print(f'最小値は{mini}です。')
print(f'最大値は{maxi}です。')

C:>python min_max2_test.py
整数n1:3
整数n2:6
最小値は3で最大値は6です。
実数x:5
実数y:6
最小値は5.0です。
最大値は6.0です。

"""min_maxモジュールの関数群を呼び出す"""

import min_max

x = float(input('実数x:'))
y = float(input('実数y:'))
z = float(input('実数z:'))

print('xとyの最小値は{}で最大値は{}です。'.format(*min_max.min_max2(x, y)))
print('yとzの最小値は{}で最大値は{}です。'.format(*min_max.min_max2(y, z)))
print('xとzの最小値は{}で最大値は{}です。'.format(*min_max.min_max2(x, z)))
print('xとyとzの最小値は{}で最大値は{}です。'.format(*min_max.min_max3(x, y, z)))

C:>python min_max_test.py
実数x:7
実数y:8
実数z:9
xとyの最小値は7.0で最大値は8.0です。
yとzの最小値は8.0で最大値は9.0です。
xとzの最小値は7.0で最大値は9.0です。
xとyとzの最小値は7.0で最大値は9.0です。

"""名前空間パッケージのインポート"""

import sys
sys.path.append('dir1')     # ディレクトリ'dir1'を検索パスに追加
sys.path.append('dir2')     # ディレクトリ'dir2'を検索パスに追加

import npack.abc            # 'dir1/npack/abc.py'からインボート
import npack.xyz            # 'dir2/npack/xyz.py'からインボート

npack.abc.func()
npack.xyz.func()
# dir1/npack/abc.py
# npack.abcモジュール

def func():
    print('npack.abc.func()')
# dir2/npack/xyz.py
# npack.xyzモジュール

def func():
    print('npack.xyz.func()')

C:>python npackage_test.py
npack.abc.func()
npack.xyz.func()

"""パッケージ内のモジュールのインポート"""

import pack.abc
import pack.xyz
import pack.sub.abc
import pack.sub.xyz

pack.abc.func()
pack.xyz.func()
pack.sub.abc.func()
pack.sub.xyz.func()
# pack.abc
# pack.abcモジュール

def func():
    print('pack.abc.func()')
# pack.xyz
# pack.xyzモジュール

def func():
    print('pack.xyz.func()')
# pack.sub.abc
# pack.sub.abcモジュール

def func():
    print('pack.sub.abc.func()')
# pack.sub.xyz
# pack.sub.xyzモジュール

def func():
    print('pack.sub.xyz.func()')

C:>python package_test.py
pack.abc.func()
pack.xyz.func()
pack.sub.abc.func()
pack.sub.xyz.func()

# 型、データ、関数、モジュールがオブジェクトであることを確認
# 占有記憶域サイズと型を表示

import sys

n = 13
x = 3.14

def add2(x, y):
    """xとyの和を求めて返却する関数"""
    return x + y

print( '    バイト数 型')

print(f'5      {sys.getsizeof(5)    :5} {type(5)}')
print(f'n      {sys.getsizeof(n)    :5} {type(n)}')
print(f'int    {sys.getsizeof(int)  :5} {type(int)}')

print(f'0.17   {sys.getsizeof(0.17) :5} {type(0.17)}')
print(f'x      {sys.getsizeof(x)    :5} {type(x)}')
print(f'float  {sys.getsizeof(float):5} {type(float)}')

print(f'add2   {sys.getsizeof(add2) :5} {type(add2)}')

print(f'sys.modules[__name__]\n       {sys.getsizeof(sys.modules[__name__]):5}'
      f' {type(sys.modules[__name__])}')

C:>python size_type.py
バイト数 型
5 28
n 28
int 416
0.17 24
x 24
float 416
add2 160
sys.modules[name]
72

"""モジュール検索パスを表示"""

import sys

print(sys.path)

C:>python sys_path.py
[‘C:\Users\keieikikaku-02\Downloads\NewMeikaiPython_2nd\chap10’, ‘C:\Users\keieikikaku-02\AppData\Local\Programs\Python\Python313\python313.zip’, ‘C:\Users\keieikikaku-02\AppData\Local\Programs\Python\Python313\DLLs’, ‘C:\Users\keieikikaku-02\AppData\Local\Programs\Python\Python313\Lib’, ‘C:\Users\keieikikaku-02\AppData\Local\Programs\Python\Python313’, ‘C:\Users\keieikikaku-02\AppData\Local\Programs\Python\Python313\Lib\site-packages’]

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。