[python] #3. n.関数


関数は再利用可能なセグメントです.
特定の命令ブロックを組み合わせて呼び出すことができます.
キーワードはdefによって定義されます.defの後に関数の識別子名を入力し、カッコで囲み、使用するパラメータのリストを入力し、最後にコロンを入力すると、関数定義は終了します.
def say_hello():
  # 함수 블록 시작
  print 'hello world'
# 함수 끝

say_hello()  # 함수 호출
say_hello()  # 함수 한번 더 호출

関数とパラメータ


関数を定義するときに、パラメータまたはパラメータと呼ばれる値を関数に渡すことができます.
def print_max(a, b):
  if a > b:
    print a, '는 최대값'
  elif a == b:
    print a, '는', b, '와 같다.'
  else:
    print b, '는 최대값'
    
print_max(3, 4)

x = 5
y = 7

print_max(x, y)

ゾーン変数


変数は、定義ポイントのブロックの範囲内で使用できます.
この範囲をscopeと呼び,これらの変数を関数の領域変数と呼ぶ.
x = 50

def func(x):
  print 'x 는 ', x
  x = 2
  print '로컬 변수 x 를 ', x, '로 바꿈'
  
func(x)
print 'x 는 ', x

결과

x 는 50
로컬 변수 x 를 2로바꿈
x 는 50

グローバル


先に説明した領域変数ではなく、上のブロックでも使用したい場合は、グローバル変数として使用するようユーザーに通知する必要があります.
x = 50

def func():
  global x
  
  print 'x 는 ', x
  x = 2
  print '전역 변수 x 는 ', x
  
func()
print 'x 는 ',  x

결과

x 는 50
전역 변수 x 는 2
x 는 2

デフォルトの引数値


特殊な場合、選択的に買収を移管することができます.
渡されていないパラメータは、デフォルト値を自動的に使用するように指定できます.
def say(message, times = 1);
  print message * times
  
say('Hello')
say('World', 3)

결과

Hello
WorldWorldWorld
この場合、デフォルトの引数値は定数でなければなりません.
また、デフォルトの引数値は、最後の引数のみを指定できます.
つまり、def func(a, b=5)は正しいが、def func(a=5, b)は間違っている.

キーワード引数


複数のパラメータに特定のパラメータの名前を指定することで、キーワード引数と呼ばれる値を直接渡すことができます.
これには2つの利点がある.
  • の買収順序を気にする必要はありません.
  • のみがパラメータが値を超えたことを指定し、残りのパラメータはデフォルトのパラメータ値を自動的に入力します.
  • def func(a, b=5, c=10):
      print 'a 는 ', a, ', b 는 ', b, ', c 는 ', c
      
    func(3, 7)
    func(25, c=24)
    func(c=50, a=100)
    
    결과
    
    a 는 3, b 는 7, c 는 10
    a 는 25, b 는 5, c 는 24
    a 는 100, b 는 5, c 는 50

    VarArgsパラメータ


    パラメータの個数は任意に指定できます.
    def total(initial=5, *numbers, **keywords):
      count = initial
      for number in numbers:
        count += number
      for key in keywords:
        count += keywords[key]
      return count
      
    print total(10, 1, 2, 3, vegetables=50, fruits=100)
    
    결과
    
    166
    *paramに示すように、パラメータを指定すると、関数に渡される位置ベースのパラメータはすべてparamというtupleにバインドされます.
    また、同様に、**paramのような前の2つの星を有するパラメータにパラメータを指定すると、関数に渡されるすべてのキーワードはparamという辞書に分類される.

    ドアに戻る


    を選択してオプションを設定します.
    def maximum(x, y):
      if x > y:
        return x
      elif x == y:
        return '두 수는 같음'
      else:
        return y
        
    print maximum(2, 3)

    DocString


    Pythonには、文字列を説明する便利な機能があります.
    これはプログラムを理解しやすくし、説明書の機能を持つツールです.
    def print_max(x, y):
      '''Prints the maximum of two numbers.
     The two values must be integers.'''
      
      x = int(x)
      y = int(y)
      
      if x > y:
        print x, '가 가장 큽니다.'
      else:
        print y, '가 가장 큽니다.'
        
    print_max(3, 5)
    print print_max.__doc__
    
    결과
    
    5가 가장 큽니다.
    Prints the maximum of two numbers.
     The two values must be integers.
    DocStringは一般的に最初の行の最初の文字を大文字に書き、最後の文字を句点に書きます.
    そして2行目は空白にし、3行目から詳細記入機能を開始します.DocStringは、モジュールおよびクラスにも適用されます.