Python基礎のおさらい

📕 新コースを公開しました。→クーポン掲載ページ

Python の基本をおさらいしておきます。
公開しているUdemyコースでちょくちょく参照できるように載せておきます。

変数

一般的な変数定義(代入)です。

a = 1
b = 2

print(a)
print(b)
# 1
# 2

複数の変数定義を 1 行で行うこともできます。

a, b = 1, 2

print(a)
print(b)
# 1
# 2

インクリメントの例です。

a = 1
a = a + 1

print(a)
# 2

インクリメントの省略記載例です。

a = 1
a += 1

print(a)
# 2

リストのスライス

スライスでは要素数以上のインデックス番号(以下では 100 を指定)を指定してもエラーにはなりません。

sample_deck = ['A', '2', '3', '4', '5']

print(sample_deck[:100])
print(sample_deck[100:])

# ['A', '2', '3', '4', '5']
# []

例として、sample_deck を余りなく、2等分したい場合は次のようにすることができます。

n = 3
print(sample_deck[:n])
del sample_deck[:n]
print(sample_deck[:n])

# ['A', '2', '3']
# ['4', '5']

if

通常の if 文です。

if True:
    print(1)

# 1

if-else 文です。

if True:
    print(1)
else:
    print(2)

# 1

if-elif-else 文です。

n = 12
if n <= 10:
    print(1)
elif n > 10:
    print(2)
else:
    print(3)

# 2

for

通常の for 文です。

# get out an elem
sample = ['hoge', 'fuga', 'piyo']
for v in sample:
    print(f'v == {v}')

# v == hoge
# v == fuga
# v == piyo

インデックス番号をループしている例です。

# loop with indexes
sample = ['hoge', 'fuga', 'piyo']
for i in range(len(sample)):
    print(f'i == {i}, v == {sample[i]}')

# i == 0, v == hoge
# i == 1, v == fuga
# i == 2, v == piyo

enumerate 関数によって、インデックス番号と要素を同時に取り出している for 文です。

# get out an indexe and an elem
sample = ['hoge', 'fuga', 'piyo']
for i, v in enumerate(sample):
    print(f'i == {i}, v == {v}')

# i == 0, v == hoge
# i == 1, v == fuga
# i == 2, v == piyo

関数

引数のない関数です。

def foo():
    return 'hoge'

print(foo())

# hoge

引数のある関数です。

def foo(x):
    return f'hoge and {x}'

print(foo('fuga'))

# hoge and fuga

関数注釈をつけておくと、引数の型や、返り値の型を明示できます。ただし、これは型を強制している訳ではなく、あくまでどういう型であってほしいかを記載しているだけです。

def foo(x: str) -> str:
    return f'hoge and {x}'

print(foo('fuga'))

# hoge and fuga

関数の説明を docstring に記載しておくと、関数を使用するときに便利です。

def foo(x: str) -> str:
    """
    Write description here.
    """
    return f'hoge and {x}'

print(foo('fuga'))

# hoge and fuga

可変長引数

可変長引数(位置引数)のある関数です。 次のコードでは引数にアスタリスク * を付けることで可変長引数としています。この場合、args には好きなだけ引数を渡すことができます(だからこそ可変)。args は tuple になっているので、中でそれぞれの引数を取り出して使うことができます。

def foo(x, *args):
    return f'type of args:{type(args)}, args:{args}'

result = foo('fuga', 'a', 'b', 'c')
print(result)
# type of args:<class 'tuple'>, args:('a', 'b', 'c')

可変長引数(キーワード引数)のある関数です。 次のコードでは引数にアスタリスク ** を付けることで可変長引数(キーワード引数)としています。この場合、kwargs には好きなだけキーワード引数を渡すことができます(だからこそ可変)。kwargs は dict になっているので、key を指定してそれぞれの引数を使うことができます。

def foo(x, **kwargs):
    return f'type of kwargs:{type(kwargs)}, kwargs:{kwargs}'

result = foo('fuga', a='A', b='B', c='C')
print(result)
# type of kwargs:<class 'dict'>, kwargs:{'a': 'A', 'b': 'B', 'c': 'C'}

クラス

foo はインスタンス(self)に属するメソッドです。

class MyClass():
    def foo(self, x: str) -> str:
        """
        Write description here.
        """
        return f'hoge and {x}'

myclass = MyClass()
print(myclass.foo('fuga'))

# hoge and fuga

initメソッドは、初期化メソッドと呼ばれるものです。インスタンス生成時に自動的に実行されます。

class MyClass():
    def __init__(self, name: str):
        self.name = name

myclass = MyClass('piyo')
print(myclass.name)

# piyo

set 関数

set 関数は要素が重複しないので、下記ではリストより要素数が少なくなっています。

hoge = [100, 200, 300, 300, 200]

print(hoge)
print(set(hoge))

# [100, 200, 300, 300, 200]
# {200, 100, 300}

破壊的処理

append、remove など、リストのメソッドの多くは破壊的処理なので、実行しただけで元のリストを変更します。

a = [100, 200, 300]

x = a.append(400)

print(x)
print(a)

# None
# [100, 200, 300, 400]

pop も破壊的処理ですが、返り値はあり、取り出した要素を return します。

a = [100, 200, 300]

x = a.pop()

print(x)
print(a)

# 300
# [100, 200]

関数内において、リストなどで破壊的処理を実行する場合は、return しなくても済む場合があります。

# returnしない関数。
# returnしなくてもリストの中身が追加されます。
def hoge(fuga):
    fuga.append('piyo')

a = [100, 200, 300]
hoge(a)

print(a)
# [100, 200, 300, 'piyo']

try-else 文

try 文には else を追加できます。else はエラーが発生しなかった場合に実行されます。

# エラーが発生しないケース
try:
    print('tryの中の初めです。')
    # raise Exception()
    print('tryの中の終了です。')
except Exception:
    print('exceptが実行されました。')
else:
    print('elseが実行されました。')

# tryの中の初めです。
# tryの中の終了です。
# elseが実行されました。
# エラーが発生するケース
try:
    print('tryの中の初めです。')
    raise Exception()  # ここで強制的にエラーを発生させてみます。
    print('tryの中の終了です。')
except Exception:
    print('exceptが実行されました。')
else:
    print('elseが実行されました。')

# tryの中の初めです。
# exceptが実行されました。

🎓✍️コース一覧

プログラミング関係のビデオコースを提供しています。クーポンも発行していますので、ぜひ一度チェックしてみてください。

Twitter @takumafujimoto

記事を読んでいただきありがとうございます。ツイッターではプログラミング以外についてや、たまにクーポン情報もツイートしたり。。。ツイッターでもお待ちしてます。