0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python3エンジニア認定基礎試験 勉強してみた4

Last updated at Posted at 2024-01-24

「Python3エンジニア認定 [基礎試験]」 合格を目指します。

使用教材:
・Pythonチュートリアル第4版 --オライリー・ジャパン--
・徹底攻略Python3エンジニア認定基礎試験 問題集 --impress--

前回の記事:
Python3エンジニア認定基礎試験 勉強してみた1
Python3エンジニア認定基礎試験 勉強してみた2
Python3エンジニア認定基礎試験 勉強してみた3

こんにちは!今回も続きで、
徹底攻略Python3エンジニア認定基礎試験 問題集を解きました。

第7章 モジュール
7問中1問正解
第8章 ファイル入出力
7問中3問正解

以下間違えた箇所の確認です。

見直し

【モジュールのインポート】
関数などをファイルに記述して、インタープリタや別のファイルからそのファイルを利用できる仕組みのことをインポートといい、インポートされるファイルをモジュールといいます。

calenderモジュールをインポートする
import calender
インポートしたcalenderモジュールの関数を実行する
calender.prmonth(2000, 1)

【fromを使ったインポート】
モジュールに含まれる関数のみをインポートするには、下記のようにfromを使用します。

書式:関数のみをインポートする
from モジュール名 import 関数名
add()関数のみをインポートする
from calc import add

【ワイルドカードを使ったインポート】

書式:名前をすべてインポートする
from モジュール名 import *

ただし、アンダースコア「_」で始まる名前はインポートされません。
なお、モジュールに__all__という文字列のリストが存在した場合は、
そのリスト内の名前だけインポートされます。

【asを使ったインポート】
asを使うと、モジュールや関数を別名でインポートできます。

書式:モジュールを別名でインポートする
import モジュール名 as モジュールの別名
calendarモジュールを別名calでインポートする
import calendar as cal
書式:関数を別名でインポートする
from モジュール名 import 関数名 as 関数の別名
書式:calendar()関数を別名calでインポートする
from calendar import calendar as cal

【__ name__】
__name__は、モジュールの属性であり、モジュール名が自動で代入されます。
メインモジュールで実行している場合は、 " __ main __ "が代入されます。

書式:メインモジュールか否かを判定する
if __name__ == "__main__":
    print("Main module") #何らかの処理

【__ init __.py】
package_name/ __ init __.pyというファイルがあるときに、
下記のようにpackage_nameをインポートすると、モジュールpackage_nameに
__ init __.pyの内容が読み込まれます。名前

__init__.pyを読み込む(パッケージのインポート)
import package_name

このように、ディレクトリに __ init __.pyというファイルを配置すると、
ディレクトリ名のモジュールとしてインポートできます。
このような構成をパッケージといいます。パッケージにすることで、
__ init __.pyだけでなく別の.pyファイルをまとめて扱えます。
この別のファイルをパッケージのサブモジュールといいます。

ディレクトリ構成
bookcard/
    __ init __.py
    dump.py #dump_cardが定義されている

bookcard/ __ init __.pyが存在すればbookcardがパッケージになります。
また、bookcard/ __ init __.pyが空ファイルであっても、次のようにして、
サブモジュールのdumpからdump_cardをインポートできます。

サブモジュールをインポートする
from bookcard.dump import dump_card
サブモジュールを相対インポートする
from . import dump # __ init __.pyに記述する内容

【相対インポート】
ドット「.」を使ったインポートを相対インポートといいます。
相対インポートは、パッケージ内のサブモジュールをインポートする方法で、
サブモジュールに対してのみ実行できます。
相対インポートでは、次のようにサブモジュールを指定します。

書式:同じ階層から別サブモジュールをインポートする
from . import サブモジュール名
書式:1つ上の階層から別サブモジュールをインポートする
from .. import サブモジュール名
書式:同じ階層の別サブモジュールから名前をインポートする
from . サブモジュール名 import 名前
書式:1つ上の階層の別サブモジュールから名前をインポートする
from .. サブモジュール名 import 名前
例:ディレクトリ構成
bookcard/
    __init__.py
    dump.py
    load/
        __init__.py #このファイルの内容を考える
        core.py
例:同じ階層から別サブモジュールをインポートする
from . import core
例:1つ上の階層から別サブモジュールをインポートする
from .. import dump
例:1つ上の階層の別サブモジュールから名前をインポートする
from ..dump import *

【open()関数】
ファイルの操作ができる関数です。
mode引数を追加することで、ファイルの開き方を指定できます。

書式:ファイルを開く
open("ファイル名", mode ="モード")
 
【mode引数】
使用文字 意味
"r" 読み込み専用
"r+" 読み書き両用
"w" 新規書き込み
"a" 追加書き込み
"b" バイナリモード

※バイナリモード("b")だけの指定はできない。

【with文】
ファイルを閉じるにはopen()メソッドを使用します。
また、with文を使うことで、この閉じる処理が自動で行われます。
この処理は例外が発生したときにも行われます。

書式:ファイルを開く/閉じる
with open("ファイル名") as 変数:
    # ファイルの処理

【ファイルを1行ずつ読み込む】

ファイルを1行ずつ読み込む
for s in fp: # 変数sに1行入る
以下でも同様です
for s in fp.readlines(): # 変数sに1行入る

for s in list(fp): # 変数sに1行入る

【JSON形式の書き込み】
JSON(JavaScript Object Notation)とは、JavaScriptのオブジェクト表記を用いたデータ交換用フォーマットのことです。Pythonで作成したオブジェクトをJSON形式で書き込むには、json.dump()メソッドを使用します。

JSON形式で書き込む①
json.dump(data, fp) # data:JSON形式に変換するオブジェクト
JSON形式で書き込む①(キーワード引数使用)
json.dump(fp=fp, obj=data) # data:JSON形式に変換するオブジェクト
JSON形式で書き込む②
fp.write(json.dumps(data)) # data:JSON形式に変換するオブジェクト

【JSON形式の読み込み】
JSON形式のデータを読み込んで、Pythonのオブジェクトとして取得するには、
json.load()メソッドを使用します。

JSON形式を読み込む①
json.load(fp)
JSON形式を読み込む②
json.loads(fp.read()) # fp.read():JSON形式の文字列

次の記事
Python3エンジニア認定基礎試験 勉強してみた5

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?