Python試験対策いろいろ(その2)
2022/2/10 2022/4/15
Pythonの基礎認定試験合格に向けて勉強していますが、個人的なメモを投稿していこうと思います。
体裁は気にせず記載するため、読みにくいかも知れませんが、同じく勉強をしている方のお役に少しでも立てれば良いと思います。
関数の引数の型指定
関数を定義する際に引数を受け取れるようプログラムするが、型の指定ができる。「指定」と言うと語弊があるかも知れないが、「期待する引数のデータ型を明記」できる。
例えば、以下のサンプルコードでは、引数としてint型を期待しているが、str型もfloat型も問題なく処理している。つまり、エラーが発生したりしていない。
def func(num: int):
print("Start func: num is ", type(num))
if type(num) != str:
num = str(num)
print(" Pattern A:", num, type(num))
else:
print(" Pattern B:", num, type(num))
func("Aoo")
func(100)
func(3.4)
# Output Result
# Start func: num is <class 'str'>
# Pattern B: Aoo <class 'str'>
# Start func: num is <class 'int'>
# Pattern A: 100 <class 'str'>
# Start func: num is <class 'float'>
# Pattern A: 3.4 <class 'str'>
map関数
map関数では、関数処理とイテレータを渡すことで反復処理ができる。
- 文法:map(関数処理, イテレータ)
- 関数処理:defで定義された関数、lambda関数、変数に格納された関数等)
- イテレータ:range()を使った数字、リスト型変数、等
cubes = [a ** 3 for a in range(5)]
print(cubes)
alt_cubes = list(map(lambda a: a ** 3, range(5)))
print(alt_cubes)
# Output Result
# [0, 1, 8, 27, 64]
# [0, 1, 8, 27, 64]
2重リストの行列入れ替え
2重となっているリストの行列を入れ替える。
# 21
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
power = [[row[i] for row in matrix] for i in range(3)]
power2 = list(zip(*matrix))
print(power)
print(power2)
# Output Result
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
# [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
左右中央揃えで出力
rjustやljustそしてcenterを使うと、右、左、中央揃えで出力ができる。
また、文字を1つ指定して、その文字でスペースを埋めることも可能。
for i in range(1,4):
print("1234567890", end="")
if i == 3:
print("", end="\n")
print("rjust".rjust(30))
print("ljust".ljust(30))
print("center".center(30))
print("rjust_hyphen".rjust(30, "-"))
print("ljust_hyphen".ljust(30, "-"))
print("center_hyphen".center(30, "-"))
# Output Result
# 123456789012345678901234567890
# rjust
# ljust
# center
# ------------------rjust_hyphen
# ljust_hyphen------------------
# --------center_hyphen---------
その他色々
- sys.pathが初期化されている場所は、PYTHONPATH、インストールごとのデフォルト、入力スクリプト。
- モジュールがインポートされるときにインタープリタが検索する順序は、ビルトインモジュール、次にsys.path変数で得られるディレクトリである。シンボリックリンクを置いてあるディレクトリは含まれない。
- モジュール読み込みの高速化のため、Pythonはコンパイル済みのモジュールを「__python_cache__」ディレクトリにmodule.バージョン名.pycの名前でキャッシュする。
- モジュールの中では、グローバル変数「__name__」の値としてモジュール名(文字列)がセットされている。
- モジュールと「__init__.py」を含むディレクトリをパッケージと言う。
- 標準モジュールjsonは、Pythonのデータ階層構造をとって、文字列表現に変換できる。このプロセスをシリアライズと言う。
- raise分を用いることで、意図した例外を発生させることができる。
- 発生した例外に値が付く場合があり、それを例外の引数と呼んでいる。except説では例外名の後に変数を指定できる。この変数には例外インスタンスが紐づけられており、例外インスタンスには「__str__()」が定義されている。
- ユーザがキーボード操作で割り込みを発生させた場合はKeyboardInterrupt例外が発生する。