専門ユニット2/山内研セミナー(2021/10/13)

関連サイトと資料


「第23回 モジュールの作り方」のサンプルプログラム, 「第24回 パッケージ」のサンプルプログラム

「第23回 モジュールの作り方」のサンプルプログラム

myutil.py
def fact(x):
    result = 1
    if x == 0:
        return result
    for num in range(1, x + 1):
        result *= num
    return result
  
def fizzbuzz(x):
    result = str(x)
    if x % 3 == 0 and x % 5 == 0:
        result = 'FizzBuzz'
    elif x % 3 == 0:
        result = 'Fizz'
    elif x % 5 == 0:
        result = 'Buzz'
    return result
  
def fib(x):
    if x == 0:
        return 0
    elif x == 1:
        return 1
    return fib(x - 1) + fib(x - 2)
  
PI = 3.14159
    

main1.py
import myutil  # myutilモジュールをインポート
from myutil import fib  # myutilモジュールからfib関数をインポート
from myutil import fizzbuzz as fb  # myutil.fizzbuzz関数をfbとしてインポート
  
print(myutil.PI)  # myutilモジュールで定義されている変数PIを利用
  
for num in range(5):
    print(myutil.fact(num))  # myutilモジュールのfact関数を利用
  
for num in range(5):
    print(fib(num))
  
for num in range(1, 6):
    print(fb(num))
    


somemod.py
def _myhelper(x):
    return x * 2
  
def myfunc1(x):
    result = _myhelper(x)
    return result
  
def myfunc2(x):
    result = _myhelper(x) * 2
    return result
    

main2.py
from somemod import *
  
print(myfunc1(2))
print(myfunc2(2))
print(_myhelper(2))
    


main3.py
import somemod
  
print(somemod._myhelper(2))
    


import sys
  
print(sys.path)
    

import os
  
print(os.getcwd())
    

「第24回 パッケージ」のサンプルプログラム

mymath.py
def fact(x):
    result = 1
    if x == 0:
        return result
    for num in range(1, x + 1):
        result *= num
    return result
  
def fizzbuzz(x):
    result = str(x)
    if x % 3 == 0 and x % 5 == 0:
        result = 'FizzBuzz'
    elif x % 3 == 0:
        result = 'Fizz'
    elif x % 5 == 0:
        result = 'Buzz'
    return result
  
def fib(x):
    if x == 0:
        return 0
    elif x == 1:
        return 1
    return fib(x - 1) + fib(x - 2)
  
PI = 3.14159
    

greet.py
def hello(whom):
    return 'Hello ' + str(whom)
    

__init__.py
import .mymath fact, fizzbuzz, fib
import .greet hello
__all__ = ['fact', 'fizzbuzz', 'fib', 'hello']
    

main10.py
import mypkg.mymath
  
print(mypkg.mymath.fact(5))
    


main11.py
from mypkg import mymath  # mypkgパッケージのmymathモジュールをインポート
from mypkg.mymath import fact  # mypkg.mymathモジュールからfact関数をインポート
  
print(fact(5))
print(mymath.fizzbuzz(15))