2
1

More than 1 year has passed since last update.

Python基礎のおさらい

Posted at

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が実行されました。
2
1
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
2
1