Developer

【Python独学】引数の様々な指定方法
2021.10.05
Lv1

【Python独学】引数の様々な指定方法

今までは引数に直接数字を渡していましたが、引数の渡し方には様々な方法があるので、それを学習していきましょう。


目次

  • 変数を渡す
  • 位置引数
  • キーワード引数
  • 引数の初期値と省略

変数を渡す

まずは一番簡単な、引数として変数を渡してみましょう。

def func( x ):
  res = 2*x+3
  return res
    
num = 2
print(func(1))
print(func(num)) #数字ではなく、変数を引数として渡す。
C:\Python> python func1.py
5
7

これまでと同じ実行結果を得ることができましたね。


位置引数

実は今まで使用していた引数の渡し方はこの位置引数にあたります。

def func( x, z ):
    res = 2*x+4*z+3
    return res
    
print(func(1,2)) 
print(func(2,3))
C:\Python> python func2.py
13
19

呼び出す際の順番が定義された関数の引数の順番に合致します。
func(1,2)の場合、1がxに、2がzに代入されています
func(2,2)の場合、2がxに、3がzに代入されています


キーワード引数

こちらは先程の位置引数とは異なり、順番で指定するわけではありません。
関数を定義した際の引数の名前を使用します

def func( x, z ):
    res = 2*x+4*z+3
    return res
    
print(func(z=1,x=2))  #呼び出し方に注目
print(func(z=2,x=3))
C:\Python> python func3.py
11
17

関数を呼び出す際の引数に、関数を定義した際の引数の名前を指定しています。
こうすることで、引数の指定した順番ではなく、指定した名前の引数に格納されます。

func(z=1,x=2)の場合、2がxに、1がzに代入されています
func(z=2,x=3)の場合、3がxに、2がzに代入されています

このように名前を指定すると、記述内容は増えてしまいますが、
引数の数が増えた場合や、引数の並び順が変わった場合でも、プログラムの改修が少なくてすみます。


引数の初期値と省略

実は、関数を定義する際、引数に初期値を設定することができます。
実際に見てみましょう。

def func( x=10, z=3 ): #このように初期値を設定しておくと。。。。
    res = 2*x+4*z+3
    return res
    
print(func(1))         #位置引数で1つだけしか指定しなくても
print(func(z=2))       #キーワード引数で1つだけしか指定しなくても
print(func())          #引数を何もしてしなくても
              #エラーなく動作します

C:\Python> python func4.py
17 <=2*1+4*3(初期値)+3 31 <=2*10(初期値)+4*2+3 35 <=2*10(初期値)+4*3(初期値)+3 [/su_note] このように、関数定義する際、引数に初期値を設定しておくことで、引数の数が足りなかったり、引数が指定されていなくても関数が正常に実行されます

ですが、この初期値に関しては全て設定しておくのが良いというわけではありません。
何故なら、意図せず渡す引数が少なくなってしまった場合等、本来エラーになってほしい場合でも正常に動作してしまいます
また、正常に動作してしまうことにより、予期せぬデータが作られてしまう可能性もあります。

初期を設定する場合、本当に初期値を設定することが正しいのかどうか設定する初期値に間違いがないかをしっかり確認しましょう


まとめ

引数の渡し方は様々あります。
渡せるもの:
 ・数値や文字を直接
 ・変数
渡し方:
 ・位置引数
   どの順番で引数を渡したかが重要
 ・キーワード引数
   順番は関係なく、引数の名前を指定する。
初期値と省略
 引数は初期値を設定することが可能。
 初期値が設定されている引数は、呼び出し時に省略可能

一度にたくさん出てきましたが、実際に色々コードを書いてみて覚えてください。

連載目次

独学で学ぶ Pythonプログラミング 連載目次