0
0

More than 1 year has passed since last update.

40代おっさんPythonを勉強する(関数編)

Last updated at Posted at 2022-10-15

本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

関数

  • 同じコードを再利用したい時や、まとまりのある処理に関数を使うと便利
  • 関数とは、名前の付いたコード
  • 任意の型、任意の個数の入力引数
  • 任意の型、任意の個数の結果を出力

関数の定義と呼び出し

  • def 関数名(引数):

  • 関数名は変数名と同じ規則に従う(先頭は英小文字か_(アンダースコア)、残りは英小字、数字、アンダースコア)

  • returnで結果を出力(結果がないときはreturnしなくても良い)

  • 定義

def do_nothing(): # 定義する
    pass
  • 呼び出し
do_nothing()
  • 引数と出力
def whatcolor(name): # 仮引数
    return '私は' + name

output = whatname('としき') # 実引数
print(output)
  • 複数の引数と出力
def flowercolor(flower, color): # 仮引数
    return '私の好きな花は' + flower, '好きな色は' + color

output = flowercolor('バラ', '') # 実引数
print(output)
def flowercolor(flower, color): # 仮引数
    return '私の好きな花は' + flower, '好きな色は' + color

s1, s2 = flowercolor('バラ', '') # 実引数
print(s1)
print(s2)

None

  • Pythonの特殊な値で、偽になるが、Falseと同じではない
  • Noneは「存在しない値」
def is_none(thing):
    if thing is None:
        print('None')
    elif thing:
        print('True')
    else:
        print('False')

is_none(None)
is_none(0)
is_none([])
is_none(1)

引数

  • 位置引数に先頭から順番に代入する
  • 欠点は入力の順番を間違ったら、処理も間違える
    def 関数(第1引数,第2引数,第3引数,....) # これらの引数に間違った値を入れると処理が間違える
  • キーワード引数で、位置引数を指定する方法もある
  • キーワード引数は書くコードが増える
    def birthday (year, month, day):
    return f'{year}{month}{day}'
    print(birthday(day=22, month=2, year=1980))
  • 実引数が足りないときはエラーになる
    print(birthday(day=22, month=2) # エラー
    Input In [3]
    print(birthday(day=22, month=2)
                                   ^
SyntaxError: unexpected EOF while parsing
  • デフォルト引数値の指定ができる
  • 呼び出し元が対応する実引数を渡さなかったときに使われる
    def birthday (year=1680, month=11, day=15):
    return f'{year}{month}{day}'
    print(birthday()) # 1680年11月15日

位置引数のタプル化

  • アスタリスク * を使うと、可変個の位置引数をタプルにまとめて仮引数にセットする
def print_name(val1, val2, *args):
    print('First: ', val1)
    print('Second: ', val2)
    print('The rest: ',args)

print_name('としき', 'あっきー')
print_name('としき', 'あっきー', 'たろう', 'じろう', 'さぶろう')

キーワード引数の辞書化

  • アスタリスクを2つ使うと、キーワード引数を一個の辞書にまとめることになる
def print_name(val1, val2, *args, **kwargs): # val1とval2が必須
    print('First: ', val1)
    print('Second: ', val2)
    print('The rest: ', args)
    print('Dict tyce: ', kwargs)

print_name('としき', 'あっきー')
print_name('としき', 'あっきー', 'たろう', 'じろう', name1 = 'さぶろう' \
           , name2 = 'しろう', name3 = 'ごろう')
print_name('としき', 'あっきー', name1 = 'さぶろう' , name2 = 'しろう', name3 = 'ごろう')

関数のdocstring

  • Pythonの公案は「読みやすさは大切だ」
  • 関数の先頭にドキュメントを付けて関数の定義を表示することができる
  • プログラムのメンテナンスには役に立つ
def print_name(val1, val2, *args, **kwargs): # val1とval2が必須
    '''
    名前を映す関数
    argsは可変型
    kwargsは辞書型になる
    '''
    print('First: ', val1)
    print('Second: ', val2)
    print('The rest: ', args)
    print('Dict tyce: ', kwargs)

print_name('としき', 'あっきー')
print_name('としき', 'あっきー', 'たろう', 'じろう', name1 = 'さぶろう' \
           , name2 = 'しろう', name3 = 'ごろう')
print_name('としき', 'あっきー', name1 = 'さぶろう' , name2 = 'しろう', name3 = 'ごろう')
  • help()関数でdocstringを呼び出す
help(print_name)

参考

0
0
1

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