
Python基本文法3
公開日: 2025/2/12
更新日: 2025/1/22
グローバル(global)宣言・グローバル変数とは、関数内でグローバル変数にアクセスするための宣言です。
ローカル変数(関数定義の内部で定義した関数)とグローバル変数(関数定義の外側で定義した変数)があります。
ローカル変数(関数定義の内部で定義した関数)とグローバル変数(関数定義の外側で定義した変数)があります。
glb = 0
def func1():
glb = 1
def func2():
global glb
glb = 5
print(glb) # 0が出力される
func1()
print(glb) # 0が出力される
func2()
print(glb) # 5が出力される
1. ライブラリ

ライブラリとは、ある程度まとまった汎用性の高い処理(関数・クラス・その他)を他のプログラムから読み込むことで、使うことが出来るようにしたファイルです。
Python内では基本的にimportできるものをライブラリと呼んだりします。
ライブラリは一般的な呼び名であり、Pythonでは、基本的にライブラリという表記があったら、モジュールのことだと思ってください。
2. モジュールとパッケージ

モジュールはPythonのコードをまとめたファイルであり、他のプログラムから再利用できるようにしたファイルのことを「モジュール」と言います。
単体では動作しませんが、importすることでモジュールが使えるようになります。
パッケージとは__init__.pyと複数のモジュールがディレクトリに集まったものです。
__init__.pyはパッケージディレクトリに置かれ、そのパッケージをインポートした際に実行されます。
2-1. モジュールのインポート
import文の単純な使い方は次のようになります。
例、sysモジュールを読み込みたい時
(sysモジュールは、Pythonをインストールした段階で利用できるモジュールの1つです。これを標準モジュールと呼び、他にもosモジュールなど様々あります。)
複数のモジュールをインポートする場合、「,」でモジュール名を区切ってインポートできます。
例、mathモジュールのcos関数を利用したい場合はモジュール名.関数名(引数)で利用できます。
・import 読み込みたいモジュール
読み込みたいモジュールの部分は、他のPythonファイルのファイル名から拡張子の.pyを取り除いたものです。例、sysモジュールを読み込みたい時
(sysモジュールは、Pythonをインストールした段階で利用できるモジュールの1つです。これを標準モジュールと呼び、他にもosモジュールなど様々あります。)
import sys
複数のモジュールをインポートする場合、「,」でモジュール名を区切ってインポートできます。
import sys, os
例、mathモジュールのcos関数を利用したい場合はモジュール名.関数名(引数)で利用できます。
import math
math.cos(1) # 0.5403023058681398
3. fromとimport

from ファイル名(モジュール名) import *でファイル名の指定なしに呼び出しが可能になります。
from モジュール名 import *
モジュールの関数などを利用する際に、モジュール名.の記述を省略して関数名だけで使用したい場合は以下になります。
from math import cos, sin, tan
cos(1)
構文を元に次のようにプログラムを書くことが出来ます。
from math import cos, sin, tan
cos(1)
名前を指定せずにモジュール内のすべてのメンバ(関数、定数、クラスなどのこと)をインポートする場合は、以下のように指定します。
# from モジュール名 import *
from math import *
cos(1)
sin(1)
3-1. 別名でのモジュールのインポート
# main.py
import fortune
result = fortune.get_fortune()
print("今日の運勢は... ", result)
import fortuneと記述していましたが、asを用いることで、別名をつけることができます。
import fortune as ft
result = ft.get_fortune()
print("今日の運勢は... ", result)
別名をつけたことでft.get_fortune()と呼び出すことが出来るようになります。
3-2. 必要なものだけをインポートする
必要な部品だけもインポートできます。
また別名をつけ、かつget_fortuneだけインポートすることもできます。
from fortune import get_fortune
result = get_fortune()
print("今日の運勢は... ", result)
また別名をつけ、かつget_fortuneだけインポートすることもできます。
from fortune import get_fortune as gf
result = gf()
print("今日の運勢は... ", result)
4. ライブラリ・モジュールの場所を調べる

ライブラリの場所は、モジュールの file アトリビュートか path アトリビュートで調べることができます。
import os
print( os.__file__ ) # /Users/aiacademy/anaconda3/lib/python3.6/os.py
5. 日付

日付関係の処理について。
datetimeモジュールを使う。
datetimeオブジェクトからdate()メゾットを利用することで、日付部分だけを取得できます。
コード
today=datetime.date.today() 現在の日付を取得
year=today_date.year 日付から年の情報を取得
month=today_date.month 日付から月の情報を取得
day=today_date.day 日付から日の情報
5-1. 現在日時の取得
import datetime
tzone = datetime.timezone(offset=datetime.timedelta(hours=9), name="Asia/Tokyo")
print(datetime.datetime.now(tzone))
print(tzone)
2024-03-13 17:00:19.981555+09:00
Asia/Tokyo
5-2. 現在よりも○○時間後
30日後
import datetime
tzone = datetime.timezone(offset=datetime.timedelta(hours=9), name="Asia/Tokyo")
now = datetime.datetime.now(tzone)
print(now)
future = now + datetime.timedelta(days=30)
print(future)
2024-03-13 17:02:31.905607+09:00
2024-04-12 17:02:31.905607+09:00
5-3. 日時の比較
import datetime
tzone = datetime.timezone(offset=datetime.timedelta(hours=9), name="Asia/Tokyo")
now = datetime.datetime.now(tzone)
future = now + datetime.timedelta(days=30)
print(now < future)
print(now > future)
True
False
5-4. フォーマットとして出力
import datetime
tzone = datetime.timezone(offset=datetime.timedelta(hours=9), name="Asia/Tokyo")
now = datetime.datetime.now(tzone)
print(now.strftime("%Y-%m-%d %H:%M:%S%z"))
2024-03-13 17:13:14+0900