【自前python講座】組み込み関数について

python-built-in-func プログラミング
python-built-in-func



自前の python 講座用資料です.
元から python にて用意されている,インポートや定義しなくても使える組み込み関数は,version 3.9 においては全部で 69 種類あります.
この中にはあまり使わない関数もあるため,良く使われる 37 種類の組み込み関数について紹介いたします.
注意:すべてについては説明せず,よく使われる処理を優先的に記載いたします.

この記事は,主に以下の公式ドキュメントを参考にしています.

組み込み関数 — Python 3.7.17 ドキュメント

以下のコードは,こちらの github にも保存していますので,ご参考ください.

https://github.com/KazutoMakino/PythonCourse/blob/main/002_fundamental_operation/002_built_in_func.ipynb

一覧

idxtitleidxtitle
1.print(): 出力関数21.len(): 要素数/長さを取得
2.input(): 入力関数22.max(): 最大値を取得
3.int(): 整数型へキャスト23.min(): 最小値を取得
4.bool(): bool 型へキャスト24.all(): 全ての要素に対する判定
5.float(): 64 bit 浮動小数点型へキャスト25.any(): いずれかの要素に対する判定
6.str(): 文字列型へキャスト26.range(): 数のイミュータブルなシーケンスを指定長にて作成
7.complex(): 複素数型へキャスト27.sorted(): ソート結果を取得
8.abs(): 絶対値の取得28.slice(): スライスを取得
9.round(): 指定する桁を偶数丸め29.iter(): イテレータ作成
10.divmod(): 商と余りのタプルを取得30.reversed(): 要素を逆順に取り出すイテレータを取得
11.sum(): 総和を取得31.next(): イテレータの次の要素を取得
12.pow(): べき乗計算32.enumerate(): enumerate オブジェクトを取得
13.type(): オブジェクトの型を取得33.zip(): それぞれのイテラブルから要素を集めたイテレータを作成
14.isinstance(): 型の判定34.map(): マップ型へキャスト
15.dir(): オブジェクトの有効な属性のリストを返す35.eval(): 文字列型の式の演算結果を取得
16.help(): ヘルプを開始/表示36.exec(): 文字列型の式を演算
17.list(): リスト型へキャスト37.open(): ファイルを開く
18.tuple(): タプル型へキャスト
19.set(): 集合型へキャスト
20.dict(): 辞書型へキャスト
built-in functions

print(*objects, sep=" ", end="\n", file=sys.stdout, flush=False):
objectssep で区切りながらテキストストリーム fileに表示し,最後に end を表示します.キーワード無しの引数は全て,str() がするように文字列に変換され,sep で区切られながらストリームに書き出され,最後に end が続きます.sepend は両方とも文字列でなければなりません.

print("hello world")
# hello world

print("hello", "world")
# hello world

print("hello", "world", sep="-------")
# hello-------world

print("hello", end="...")
print("world")
# hello...world

input(): 入力関数

input(prompt):
引数 prompt が存在すれば,それが末尾の開業を除いて標準出力に書き出されます.次に,この関数は入力から1行を読み込み,文字列に変換して(末尾の開業を除いて)返します.EOF が読み込まれたとき,EOFError が送出されます.

input()
>>> hello
# 'hello'

input("hello ")
>>> hello  world
# 'world'

int(): 整数型へキャスト

int(x) または int(x, base=10):
数値または文字列 x から生成された整数オブジェクトを返します.引数が与えられない場合には 0 を返します.

int(1), int(-1), int("1"), int(0.999), int(float(1)), int()
# (1, -1, 1, 0, 1, 0)

bool(): bool 型へキャスト

(
    bool(1),
    bool(0),
    bool(-100),
    bool(100),
    bool(1+1j),
    bool(""),
    bool(" ")
)
# (True, False, True, True, True, False, True)

False は以下の真理値判定手続きに基づくとのことで,これら以外は True (https://docs.python.org/ja/3.7/library/stdtypes.html#truth) .

  • 偽であると定義されている定数
  • 数値型におけるゼロ
  • 空のシーケンスまたはコレクション

float(): 64 bit 浮動小数点型へキャスト

float(x):
数または文字列 x から生成された浮動小数点数を返します.引数が文字列の場合,10進数を含んだ文字列にしてください.

float(1), float("-1"), float(1+2), float()
# (1.0, -1.0, 3.0, 0.0)

str(): 文字列型へキャスト

str(object="") または str(object=b"", encoding="utf-8", errors="strict"):
object の文字列版を返します.object が与えられなかった場合,空文字列が返されます.
encodingerrors の少なくとも一方が与えられた場合,object は例えば bytes や bytearray の byte-like object でなければなりません.

str(123), str(), float(str(int(3.14)))
# ('123', '', 3.0)

complex(): 複素数型へキャスト

complex(real, imag):
real + imag*j の複素数を返すか,文字列や数を複素数に変換します.第一引数が文字列なら,それが複素数と解釈され,この関数は第二引数なしで呼び出さなければなりません.第二引数は文字列であってはなりません.それぞれの引数は(複素数を含む)任意の数値型です.imag が省略された場合,標準の値はゼロで,このコンストラクタは intfloat のような数値変換として働きます.両方の引数が省略された場合,0j を返します.引数に文字列を取る場合は,この文字列が複素数型ライクにする必要があり,かつ,実部と虚部の間の符号の前後に半角スペースを入れると TypeErrorになるので注意.

complex(1, 1), complex("1+1j")
((1+1j), (1+1j))
complex("1 + 1j")
# ---------------------------------------------------------------------------
# ValueError                                Traceback (most recent call last)
# ~\AppData\Local\Temp/ipykernel_10324/2440202854.py in <module>
# ----> 1 complex("1 + 1j")
# 
# ValueError: complex() arg is a malformed string

abs(): 絶対値の取得

abs(x):
x の絶対値を返します.引数が複素数である場合はノルム(複素平面上における複素ベクトルの長さ)を返します.

abs(5), abs(-5), abs(1+1j)
# (5, 5, 1.4142135623730951)

最後の出力は \(\sqrt{2} = 1.41421356…\) です.

round(): 指定する桁を偶数丸め

round(number, ndigits):
number の小数部を ndigits 桁に丸めた値を返します.ndigits が省略されたり None だった場合,入力値に最も近い整数を返します.
round() をサポートする組み込み型では,値は 10 のマイナス ndigits 乗の倍数の中で最も近いものに丸められます.二つの倍数が同じだけ近いなら,偶数を選ぶ方に丸められます(偶数丸め,銀行丸め).ndigits には任意の整数値が有効となります.返り値は ndigits が指定されていないか None の場合は整数,そうでなければ返り値は number と同じ型です.

round(1), round(3.14), round(0.999, 2), round(135, -1), round(0.5), round(0.501), round(0.501, 1)
# (1, 3, 1.0, 140, 0, 1, 0.5)

divmod(): 商と余りのタプルを取得

divmod(a, b):
複素数でない 2 つの数を引数として取り,整数の除去を行った時の商と余りからなるペアを返します.この返り値は,(a // b, a % b) と同じです.

divmod(5, 3)
# (1, 2)

divmod(2**16 - 1, 17)
# (3855, 0)

sum(): 総和を取得

sum(iterable, start):
startiterable の要素を左から右へ合計し,総和を返します.start はデフォルトで 0 です.iterable の要素は通常は数値で,start の値は文字列であってはなりません.

sum((1,2)), sum([1, 2]), sum(range(5)), sum([0,0], 11)
# (3, 3, 10, 11)

pow(): べき乗計算

pow(x, y, z):
xy 乗を返し,これは x**y と等価です.z があれば,xy 乗に対する z の余りを返し,これは pow(x, y) % z と同じ結果になりますが,前者の方がより効率よく計算されます.

pow(2, 8), pow(2, 3, 3), pow(2.718281828459045235360287471352, 3.141592653589793238462643j)
# (256, 2, (-1+1.2246467991473532e-16j))

pow(2, 8) == 2**8, pow(2, 3, 3)==2**3 % 3
# (True, True)

type(): オブジェクトの型を取得

type(object) または type(name, bases, dict):
引数が 1 つだけの場合,object の型を返します.返り値は型オブジェクトで,一般に object.__class__ によって返されるのと同じオブジェクトです.オブジェクトの型の判定には,isinstance() 関数を使うことが推奨されます.これはサブクラスを考慮するからです.
引数が 3 つの場合,新しい型オブジェクトを返します.本質的には class 文の動的な形式です.name 文字列はクラス名で,__name__ 属性になります.bases タプルは基底クラスの羅列で,__bases__ 属性になります.dict はクラス本体の定義を含む名前空間で,標準の辞書にコピーされて __dict__ 属性になります.

type(1), type(1.0), type(True), type(1j), type(None)
# (int, float, bool, complex, NoneType)

new_type = type("x", (object,), {"a": 1})
new_type
# __main__.x

new_type.a
# 1

type(new_type)
# type

isinstance(): 型の判定

isinstance(object, classinfo):
object 引数が classinfo 引数のインスタンスであるか,サブクラスのインスタンスの場合に True を返します.object が与えられた方のオブジェクトでない場合,この関数は常に False を返します.classinfo が型オブジェクトのタプルの場合,object がそれらのいずれかのインスタンスであれば True を返します.classinfo が型や方からなるタプル,あるいは複数のタプルのいずれでもない場合,TypeError が送出されます.

a = "test"
b = 1
isinstance(a, str), isinstance(b, int), isinstance(b, float), isinstance(b, (str, int, float))
# (True, True, False, True)

dir(): オブジェクトの有効な属性のリストを返す

dir(object):
引数が無い場合,現在のローカルスコープにある名前のリストを返します.引数がある場合,そのオブジェクトの有効な属性のリストを返そうと試みます.

print(dir(int(-1)))
# ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__',
# '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__',
# '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__',
# '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__',
# '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__',
# '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__',
# '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__',
# '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__',
# '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__',
# '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio',
# 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator',
# 'real', 'to_bytes']

int(1).__abs__()
# 1

print(dir())
# ['In', 'Out', '_', '_10', '_11', '_12', '_13', '_14', '_15', '_16', '_17', '_18', '_19',
# '_2', '_20', '_21', '_23', '_3', '_4', '_5', '_6', '_7', '_8', '__', '___', '__builtin__',
# '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '_dh',
# '_i', '_i1', '_i10', '_i11', '_i12', '_i13', '_i14', '_i15', '_i16', '_i17', '_i18',
# '_i19', '_i2', '_i20', '_i21', '_i22', '_i23', '_i24', '_i3', '_i4', '_i5', '_i6', '_i7',
# '_i8', '_i9', '_ih', '_ii', '_iii', '_oh', 'a', 'b', 'exit', 'get_ipython', 'new_type', 'quit']

先ほど変数定義した,a, b, new_type が含まれていますね.

help(): ヘルプを開始/表示

help(object):
object のヘルプを表示します.引数が与えられていない場合,対話的ヘルプシステムはインタプリタコンソール上で起動します.

help(abs)
# Help on built-in function abs in module builtins:
# 
# abs(x, /)
#     Return the absolute value of the argument.

a = None
help(a)
# Help on NoneType object:
# 
# class NoneType(object)
#  |  Methods defined here:
#  |  
#  |  __bool__(self, /)
#  |      self != 0
#  |  
#  |  __repr__(self, /)
#  |      Return repr(self).
#  |  
#  |  ----------------------------------------------------------------------
#  |  Static methods defined here:
#  |  
#  |  __new__(*args, **kwargs) from builtins.type
#  |      Create and return a new object.  See help(type) for accurate signature.

list(): リスト型へキャスト

list(iterable):
iterable のリストを返します.

list([0, 1])
# [0, 1]

list((0, 1))
# [0, 1]

tuple(): タプル型へキャスト

tuple(iterable):
iterable のタプルを返します.

tuple([0, 1])
# (0, 1)

set(): 集合型へキャスト

set(iterable):
オプションで iterable の要素を持つ,新しい set オブジェクトを返します.

set([0, 1, 1, 0, -1])
# {-1, 0, 1}

set("""
はは は は は いい
""")
# {'\n', '\u3000', 'い', 'は'}

set("I think that that that that that boy wrote is wrong.")
# {' ', '.', 'I', 'a', 'b', 'e', 'g', 'h', 'i', 'k', 'n', 'o',
#  'r', 's', 't', 'w', 'y'}

dict(): 辞書型へキャスト

dict(**kwarg) または dict(mapping, **kwarg) または dict(iterable, **kwarg): 新しい辞書を作成します.
1 つ目は,dict(key=value) とすることにより辞書を作成します.
2 つ目は,dict(zip(key_list, value_list)) とすることにより辞書を作成します.
3 つ目は,dict([(key, value])) とすることにより辞書を作成します.

dict(map("1",1))
# ---------------------------------------------------------------------------
# TypeError                                 Traceback (most recent call last)
# ~\AppData\Local\Temp/ipykernel_10324/3483618521.py in <module>
# ----> 1 dict(map("1",1))
# 
# TypeError: 'int' object is not iterable

# dict(**kwarg)
dict(a=0, b=1, c=2)
# {'a': 0, 'b': 1, 'c': 2}

# dict(mapping, **kwarg)
k = ["a", "b", "c"]
v = [0, 1, 2]
dict(zip(k, v))
# {'a': 0, 'b': 1, 'c': 2}

# dict(iterable, **kwarg)
dict([("a", 0), ("b", 1), ("c", 2)])
# {'a': 0, 'b': 1, 'c': 2}

len(): 要素数/長さを取得

len(s):
オブジェクト s の長さ(要素の数)を返します.引数はシーケンスかコレクションです.

a = "test"
len(a)
# 4

a = [0, 1, 2, 3]
len(a)
# 4

a = {"a": 0, "b": 1}
len(a)
# 2

a = [[0, 1, 2, 3]]
len(a)
# 1

max(): 最大値を取得

max(iterable, key, default) または max(arg1, arg2, *args, key):
iterable の中で最大の要素,または 2 つ以上の引数の中で最大のものを返します.

a = [0, 1, 2]
max(a)
# 2

max(0, 1, 2)
# 2

max(True, False, -1)
# True

max("6", "1", 1)
# ---------------------------------------------------------------------------
# TypeError                                 Traceback (most recent call last)
# ~\AppData\Local\Temp/ipykernel_10324/4041100510.py in <module>
# ----> 1 max("6", "1", 1)
# 
# TypeError: '>' not supported between instances of 'int' and 'str'

max(1, None)
# ---------------------------------------------------------------------------
# TypeError                                 Traceback (most recent call last)
# ~\AppData\Local\Temp/ipykernel_10324/2608310793.py in <module>
# ----> 1 max(1, None)
# 
# TypeError: '>' not supported between instances of 'NoneType' and 'int'

大小関係が比較できない場合は,TypeError が送出されます.
None はゼロでなく空なので,数値と比較することができません.

min(): 最小値を取得

min(iterable, key, default) または min(arg1, arg2, *args, key):
iterable の中で最小の要素,または 2 つ以上の引数の中で最小のものを返します.性質や使い方は max() と同様です.

min(0, 1, 2, -1)
# -1

all(): 全ての要素に対する判定

all(iterable):
iterable の全ての要素が真,もしくは,空であれば True を返します.

(
    all([True]),
    all((0,1)),
    all([True is True, False is False, True is not False])
)
# (True, False, True)

any(): いずれかの要素に対する判定

any(iterable):
iterable のいずれかの要素が真ならば True を返します.iterable が空なら False を返します.

(
    any([True]),
    any((0,1)),
    any([True is True, False is False, True is not False])
)
# (True, True, True)

range(): 数のイミュータブルなシーケンスを指定長にて作成

range(stop) または range(start, stop, step):
range 型は,下図のイミュータブルなシーケンスを表し,一般に for ループにおいて特定の回数のループに使われます.引数は整数である必要があります.

range(0, 10)
# range(0, 10)

list(range(0, 10))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

tuple(range(0, 5))
# (0, 1, 2, 3, 4)

list(range(15, -3, -4))
# [15, 11, 7, 3, -1]

sorted(): ソート結果を取得

sorted(iterable, *, key=None, reverse=False):
iterable の要素を並び替えた新たなリストを返します.
key には 1 引数関数を指定します.これは iterable の各要素から比較キーを展開するのにつかわれます.デフォルト値は None です.
引数 reverse は真偽値です.True がセットされた場合,リストの要素は個々の比較が反転したものとして並び替えられます.

a = [1, 0, 3, -5, -10]
sorted(a)
# [-10, -5, 0, 1, 3]

sorted(a, reverse=True)
# [3, 1, 0, -5, -10]

slice(): スライスを取得

slice(stop) または slice(start, stop, step):
range(start, stop, step) で指定されるインデックスの集合を表す,スライスオブジェクトを返します.引数 start および step はデフォルトでは None です.スライスオブジェクトは読み出し専用の属性 start, stop, step を持ち,これらはたんに引数で使われた値を返します.

slice(10)
# slice(None, 10, None)

slice(0, 10, 1)
# slice(0, 10, 1)

a = [0, 1, 2, 3, 4]
a[slice(0, 3, 1)]
# [0, 1, 2]

a = [0, 1, 2, 3, 4]
a[slice(0, 3, 1)]==a[0:3:1]
# True

iter(): イテレータ作成

iter(object, sentinel):
イテレータオブジェクトを返します.第二引数があるかどうかで,第一引数の解釈は大きく異なります.第二引数が無い場合,object は反復プロトコル __iter__() メソッドか,シーケンスプロトコルをサポートする集合オブジェクトでなければなりません.
第二引数 sentinel が与えられているなら,object は呼び出し可能オブジェクトでなければなりません.

iter([0,10])
# <list_iterator at 0x229d8318f10>

iter((0,10))
# <tuple_iterator at 0x229d83180a0>

list(iter([0,10]))
# [0, 10]

list(iter(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

reversed(): 要素を逆順に取り出すイテレータを取得

reversed(seq):
要素を逆順に取り出すイテレータを返します.seq__reversed() メソッドを持つか,シーケンス型プロトコルをサポートするオブジェクトでなければなりません.

reversed([0, 2, 1])
# <list_reverseiterator at 0x229d83181f0>

list(reversed([0, 2, 1]))
# [1, 2, 0]

next(): イテレータの次の要素を取得

next(iterator, default):
iterator__next__() メソッドと呼び出すことにより,次の要素を取得します.イテレータが尽きている場合,default が与えられていればそれが返され,そうでなければ StopIeration が送出されます.

a = ["1", "2", "3"]
b = iter(a)
b
# <list_iterator at 0x229d834d160>

next(b)
# '1'

next(b)
# '2'

next(b)
# '3'

next(b)
# ---------------------------------------------------------------------------
# StopIteration                             Traceback (most recent call last)
# ~\AppData\Local\Temp/ipykernel_10324/973617480.py in <module>
# ----> 1 next(b)
# 
# StopIteration: 

a = ["1", "2", "3"]
b = iter(a)
next(b, "end")
# '1'

next(b, "end")
# '2'

next(b, "end")
# '3'

next(b, "end")
# 'end'

next(b, "end")
# 'end'

enumerate(): enumerate オブジェクトを取得

enumerate(iterable, start=0): enumerate オブジェクトを返します.リスト化には,list 関数を用います.

a = ["a", "b", "c"]
b = enumerate(a)
b
# <enumerate at 0x229d83317c0>

例えばリスト化すると,インデックスと要素のペアをタプルで返します.

list(b)
# [(0, 'a'), (1, 'b'), (2, 'c')]

zip(): それぞれのイテラブルから要素を集めたイテレータを作成

zip(*iterables):
それぞれのイテラブルから要素を集めたイテレータを作ります.
この関数はタプルのイテレータを返し,その i 番目のタプルは引数シーケンスまたはイテラブルそれぞれの i 番目の要素を含みます.

a = [0, 1, 2]
b = ["b", "bb", "bbb"]
ab = zip(a, b)
ab
# <zip at 0x229d7e0e900>

list(ab)
# [(0, 'b'), (1, 'bb'), (2, 'bbb')]

map(): マップ型へキャスト

map(function, iterable, ...):
function を,結果を返しながら iterable の全ての要素に適用するイテレータを返します.追加の iterable 引数が渡された場合は,function はその数だけの引数を取らなければならず,全てのイテラブルから並行して撮られた要素に適用されます.

a = ["1", "2", "3"]
b = map(int, a)
b
# <map at 0x229d83185b0>

list(b)
# [1, 2, 3]

list(b)
# []

上記 2 個目の list(b)[] となったのは,b がイテレータであり,1 回目の list(b) でインデックスが最後まで送られ,要素が全て取り出されたためです.予めリストとして違う文字変数に代入しておくことで,これは回避できます.

a = ["1", "2", "3"]
b = list(map(int, a))
b
# [1, 2, 3]

b
# [1, 2, 3]

b
# [1, 2, 3]

eval(): 文字列型の式の演算結果を取得

eval(expression, globals, locals):
文字列とオプションの引数 globals, locals を取ります.オプション引数の globals は辞書で,locals はマッピングオブジェクトでなければなりません.

eval("1+2+3")
# 6

x = "hello"
y = "world"
eval("x + ' ' + y")
# 'hello world'

eval を用いると,このように文字列を式のように処理することができます.

exec(): 文字列型の式を演算

exec(object, globals, locals):
この関数は python コードの動的な実行をサポートします.object は文字列化コードオブジェクトでなければなりません.オプション引数の globals は辞書で,locals はマッピングオブジェクトでなければなりません.

exec("a=1")
a
# 1

x = "hello"
y = "world"
exec("z = x + ' ' + y")
z
# 'hello world'

open(): ファイルを開く

open(file, mode="r", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None):
file を開き,対応するファイルオブジェクトを返します.ファイルを開くことができなければ, OSError が送出されます.
file は path-like object (パスとして見なされるオブジェクト)で,開くファイルの (絶対または現在のワーキングディレクトリに対する相対) パス名を与えるものです.
mode はオプションの文字列で,ファイルが開かれるモードを指定します.デフォルトは 'r' で,読み込み用にテキストモードで開くという意味です.指定可能なモードは次の表の通りです.

文字意味
‘r’読み込み用に開く (デフォルト)
‘w’書き込み用に開き、まずファイルを切り詰める
‘x’排他的な生成に開き、ファイルが存在する場合は失敗する
‘a’書き込み用に開き、ファイルが存在する場合は末尾に追記する
‘b’バイナリモード
‘t’テキストモード (デフォルト)
‘+’ディスクファイルを更新用に開く (読み込み/書き込み)
modes

公式ドキュメント (https://docs.python.org/ja/3.7/library/functions.html#open) には,網羅的な説明がなされていますが,例を見た方が良いと思うので,例を以下に示します.
まずは,ファイルを書き込み用に新規で開き,適当な値を代入していきます.

# file path
file = "test.txt"
​
# get file object @ mode="w"
f = open(file, mode="w")
f
# <_io.TextIOWrapper name='test.txt' mode='w' encoding='cp932'>

type(f)
# _io.TextIOWrapper

これで test.txt が書き込み専用で新規に作成され,f をこれのファイルオブジェクトとして定義しました.変数の名称は何でも構いません.
次に write() メソッドを用いて書き込んでみます.write() の引数は文字列のみ有効なので,もし数値を入れたい場合は,f-string を用いるか,str() にて文字列型にキャストしましょう.

f.write("aaaaa")
f.write(str(3.14))
f.write("あああああ")
f.write(f"{list(range(5))}")

open() したファイルオブジェクト f は,close() メソッドを用いて閉じる必要があります.閉じることで,ファイルへの書き込みが完了します.

f.close()

出力結果を見るために,今度は読み込んでみましょう.mode=="r" として読み込み専用で開き,read() メソッドにて文字列を取得しましょう.

# open
file = "test.txt"
f = open(file, mode="r")
​
# read text
txt = f.read()
​
# file close
f.close()
​
# show
txt
# 'aaaaa3.14あああああ[0, 1, 2, 3, 4]'

上記のように,write() メソッドにて指定した文字列が改行なしでテキストファイルに入力されました.
ファイルオブジェクトの open / close について,上記の書き方だと close を忘れる危険性があるので,with ブロックというのを用いる方が一般的です.with open() as f のように記載します.これを用いることで,with ブロックを抜ける際に,open() したファイルオブジェクトが自動的に close() されます.

file = "test.txt"
with open(file, mode="w") as f:
    f.write("with block test")
​
with open(file, mode="r") as f:
    txt2 = f.read()
​
txt2
# 'with block test'

Python のおすすめの学習方法

プログラミングを最短で習得する,少なくても自分の意志で使えるようになる方法について,いくつかプログラミング言語を触ってきた筆者としては何の言語においても,以下2点が重要だと思います.

  • 元々自分が他の言語で作っていた処理を違う言語で書き直す・・・・英語を勉強するときも,脳を生まれたばかりのまっさらな状態から勉強するわけではなく,日本語を通したり対比して,学習済みの言語野を用いて勉強するのと似ています
  • 言語自体を網羅的に勉強するのではなく,やりたい事を先に考え,それを達成するために色々と調べながら実装する・・・・例えば,留学で語学力が上達するのは,その国の言葉を使ってコミュニケーションを取ることが強制されるためであり,使うことに対するモチベーションが一番大事です

独学で行うには,やはり2点目の「やりたい事ドリブン学習」が効果的で,例えば次の書籍は,Python を流行らせている AI/データ分析/機械学習/深層学習について実装することに主眼を置き説明されているので,実際に手を動かしながら学んでいける本だと思います(筆者も最初にこちらの書籍で遊びながら学びました).

コメント

タイトルとURLをコピーしました