Pythonの関数
基本構文
Pythonの関数ではdefを使用して宣言をする。関数を呼び出すときは関数名()で呼び出す。
また、関数が呼び出されるタイミングは()を使用したタイミングであるため()を使用せずに関数を変数に入れ後から呼び出すということも可能。
注意点として、Pythonの関数は定義した後でなければ呼び出すことが出来ない。
say_something() #NameError: name 'say_something' is not defined def say_something(): print('hi') say_something() #hi print(type(say_something)) #<class 'function'> #変数に関数を入れて後から呼び出す a =say_something a()
引数と戻り値
Pythonでは変数型の宣言は行わないため、当然引数や戻り値の型が何型なのか宣言をすることがない。この点がJavaなどの静的型付け言語との違いである。
「変数についてまとめてみた」でも紹介したが引数や戻り値に何型が入っているかを明示することはできるが制限をする機能はないため基本は使用しない。
def what_is_color(color): if color == 'red': return 'tomato' elif color == 'pink': return 'peach' #関数what_is_colorを呼び出して戻り値を受け取る a = what_is_color('red') print(a) #tomato #引数と戻り値に何が入っているかを宣言することができる def add_num(a:int,b:int) -> int: return a+ b r = add_num(1,4) print(r)
その他の引数戻り値の使い方
実引数を入れて関数を呼び出す際、基本は引数に入れた順番で仮引数に代入されることになるが、変数名で指定することにより順番は関係なくても仮引数の変数に代入することが出来る。
def menu(entree,drink,dessert): print(entree) #beef print(drink) #beer print(dessert) #ice #実引数の順番が仮引数の順番と異なっている menu(entree='beef',dessert='ice',drink='beer')
引数にはデフォルト引数を入れることで変更がある値のみ引数に入れて呼び出すことが出来る。
#デフォルト引数を指定する def menu(entree='beef',dessert='ice',drink='beer'): print(entree) #fish print(drink) #coke print(dessert) #ice #変更したい値の見引数に入れる menu(entree='fish',drink='coke')
引数の先頭に「*」を入れることでタプルに「**」を入れることでディクショナリに引数を変更することが出来る
#タプルに変換 def say_something(*args): print(args) #('apple', 'orange', 'banana') for arg in args: print(arg) # apple # orange # banana say_something('apple','orange','banana') #ディクショナリに変換 def create_dic(**kwargs): print(kwargs) #{'main': 'beaf', 'dring': 'coke', 'appetizer': 'sarada'} #呼び出す際は変数=引数で入れる create_dic(main='beaf',dring='coke',appetizer='sarada') create_dic('beaf','coke','sarada') #TypeError: create_dic() takes 0 positional arguments but 3 were given
以上