まぬねこの足跡。。。

備忘録+たのしさ+ひっそりと

Python 関数、引数、ラムダ式

概要

入力により処理を行い何か結果を返すプログラムの部品。何度も呼び出せる。
pythonでは、関数でさえ変数。

検証

def hensu():
    print("おいしいごはん")

type(hensu)

表示イメージ

function

関数定義

基本

def 関数名(引数1, 引数2....)
 処理
 return 戻り値

2行目以降、必ずインデントを入れる。
※プログラムの区分けをみわけている為。

def show(show):
    print(show)

def show2():
    print("オレンジ")

呼出し

show("みかん")
show2()

表示イメージ

オレンジ
みかん

戻り値 return

値を返してほしい時指定。
注意:戻り値にNoneを返す関数「print()など」を指定しても何もおこらない。

def plus(x, y):
  return x+y

呼出し

plus(2, 3)

表示イメージ

5

デフォルト引数

引数にデフォルト値を設定しておける。

def 関数名(引数1, 引数2=デフォルト値....)
 処理
 return 戻り値

※デフォルトを設定した引数以降は、全部引数を設定すること。
→引数2に設定したら、引数3以降も設定。

def plus(x, y=5, z=3):
    return x+y+z

呼出し

print(plus(2, 7, 4)) # 2+7+4
print(plus(2, 7)) # 2+7+3
print(plus(2)) #2+5+3

表示イメージ

8

キーワード引数

キーワード引数で関数呼出しができる。

関数名(引数1,キーワード引数=デフォルト値....)
 処理
 return 戻り値

def plus(x, y=5, zkey=3):
    return x+y+zkey

呼出し

print(plus(2, zkey=10)) # 2+5+10

表示イメージ

17

可変長引数

基本

引数前に「*」をつける。

*引数名

def hensu(*args):
    print(args)

hensu('ごはん', 'ライス', '飯')
表示イメージ
('ごはん', 'ライス', '飯')

リスト、タプル 可変長引数

def hensu(*args):
    print(args)
    
lis=['ごはん', 'ライス', '飯']
hensu(*lis)
tap=('ごはん', 'ライス', '飯')
hensu(*tap)
表示イメージ
('ごはん', 'ライス', '飯')
('ごはん', 'ライス', '飯')

辞書型 可変長引数

引数前に「**」をつける。

**辞書型引数名

def hensu(**args):
    print(args)
    
hensu(apr='卯月' , may= '皐月', june='水無月')
dic_strg ={'卯月': '4月', '皐月': '5月', '水無月': '6月'}
hensu(**dic_strg)
表示イメージ
{'apr': '卯月', 'may': '皐月', 'june': '水無月'}
{'卯月': '4月', '皐月': '5月', '水無月': '6月'}


引数のパラメータ

既存の関数を確認するときのルール。

def 関数名(  位置1, ,位置2,(前に/*がない)  /, 位置orキーワード,(前に/がある)  *, キーワード1 (前に*がある) ):

def関数名(引数1, ... , *args(引数の最後 キーワード引数専用) ):

引数 アンパック

引数リスト アンパック

リスト変数名に「*」をつける

print(list(range(3, 6)))

lis = [3, 6]
print(list(range(*lis))) # リストアンパック

表示イメージ

[3, 4, 5]
[3, 4, 5]

引数辞書 アンパック

リスト変数名に「**」をつける
辞書のキーワード=キーワード引数名にすること。

def moon(mm1, moon='10月', nextmoon='11月'):
    print("今月", mm1, end=' ')
    print("翌月", moon, end=' ')
    print("翌々月", nextmoon)

dic ={'mm1': '4月', 'moon': '5月', 'nextmoon': '6月'}
moon("わからない")
moon(dic)
moon(*dic)
moon(**dic)

表示イメージ

今月 わからない 翌月 10月 翌々月 11月
今月 {'mm1': '4月', 'moon': '5月', 'nextmoon': '6月'} 翌月 10月 翌々月 11月
今月 mm1 翌月 moon 翌々月 nextmoon
今月 4月 翌月 5月 翌々月 6月

ラムダ式 無名関数生成

無名の小さい関数。

書き方

変数= lambda 引数1, ... : 処理

引数に値を渡す時。

変数= (lambda 引数1, ... : 処理)(渡す値1,...)

oyatu = "みかん"
(lambda oyatu:oyatu+"おいしい!")(oyatu) 

num = list(map(lambda x:x**2,range(10))) #「lambda x:x**2」が無名関数
print(num)

表示イメージ

みかんおいしい!
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]