Pythonカスタム関数定義、パラメータ、呼び出しコード解析

4675 ワード

関数は、アプリケーションのモジュール性とコードの再利用率を向上させることができます.Pythonはprint()など、多くの組み込み関数を提供しています.ユーザー定義関数を作成することもできます.
関数の定義
関数定義の簡単なルール:
関数コードブロックはdefキーワードで始まり、関数識別子名とカッコ()が後続し、任意の入力パラメータと引数はカッコの真ん中に配置する必要があります.
関数の内容はコロンで始まり、インデントされます.
戻り値がある場合、Return[expression]は関数を終了します.return式を持たないのはNoneを返すのと同じです
関数は通常、3つの単一引用符''...'''を使用します.説明関数を注釈します.関数体の内容は空ではなく、passで空の文を表すことができます.簡単な関数の例を次に示します.

''' some basic functions '''
def func1():          #        
  print("func1")       #  return 
func1()             #     

def func2():
  return("func2")       # return     "func2"
print(func2())

def func3(a,b):         #       
  print("a+b = %d" %(a+b))  # print   , return
func3(3,4)

def func4(a,b):         #       
  return (a+b)        # return a+b   
print(func4(4,3))

関数呼び出し
関数を定義するには、関数に名前を1つだけ与え、関数に含まれるパラメータとコードブロック構造を指定します.
この関数の基本構造が完成したら、別の関数で実行を呼び出すか、Pythonプロンプトから直接実行することができます.
上記の例ではfunc 1()はパラメータレス関数の呼び出しである.func 3(3,4)はパラメータ関数の呼び出しである
関数定義の詳細
既定のパラメータ値
最も一般的な形式は、1つまたは複数のパラメータにデフォルト値を指定することです.呼び出すと、デフォルト値のあるパラメータは入力されません.次の例を参照してください.

''' advanced:       '''
def ask_ok(hint, retries=4, complaint='Yes or no, please!'):  #   hint       ,retries   complaint      
  while True:
    u = input(hint)
    if u in ('y','ye','yes'):       # in    ;      ('y','ye','yes') return True 
      return True
    if u in ('n','no','nop','nope'):   #       ('n','no','nop','nope') return False
      return False
    retries = retries -1         #            ,   ,    -1
    if retries <= 0 :           #        ,raise   Error
      raise IOError('refusenik user')
    print(complaint)           #            ,   complaint   

result1 = ask_ok("Yes or No?")        #         hint,     'y' 'no'  ;       'x'   4 
print(result1)                #   return  

# result2 = ask_ok("Yes or No?",2)      #   retries=2,         'x'   2     

# result3 = ask_ok("Yes or No?",'Y or N?')  #           ,          'x',   

# result4 = ask_ok("Yes or No?",3,'Y or N?') #        ,     'y' 'no'  ;       'x'   3 
# print(result4)

注:デフォルト値は、関数定義の役割ドメインで解析されます.以下に示します.

'''                '''
i = 5
def print_i(var=i):
  print(var)
i = 6
print_i()    #    5

重要な警告:デフォルト値は1回のみ割り当てられます.これにより、リスト、辞書、またはほとんどのクラスのインスタンスなど、デフォルト値が可変オブジェクトの場合に異なります.次の例では、関数は後続の呼び出し中に蓄積される前にパラメータに渡されます.

'''          。                  ,   、          。
                       。
'''
def append_L(a,L=[]):     #     a,L   , list,    
  L.append(a)
  return L
print(append_L(1))      #      a=1,    L     [1]
print(append_L(2))      #    [1,2]
print(append_L(3))      #    [1,2,3]

''' L   ,   L,      ,           '''
def change_L(a,L=None):
  if L is None:
    L = []
  L.append(a)
  return L
print(change_L(1))      #      a=1, L None
print(change_L(2))      #      a=2, L None     [2]
print(change_L(3,[0]))    #      a=1, L=[0]     [0,3]

キーワードパラメータ
上記の例では、呼び出し関数が与えるパラメータは、定義された順序に基づいています.また、キーワード関数の形式で関数を呼び出すこともできます.次の例を参照してください.

def add(a,b):          
   return (a+b)        
 print(add(b=9,a=2))        #         b=9 , a=2        
 # print(add(b=9,2))        #    

可変パラメータリスト
関数に可変個数のパラメータ(一般的ではない)を呼び出すことができ、これらのパラメータはメタグループにパッケージされます.これらの可変数のパラメータの前に、0から複数の一般的なパラメータがあります.
可変パラメータは、*argsなどのパラメータ名に*を付けるように表される.次の例を参照してください.

def join_bysep(*strs,sep):    # strs       
  return sep.join(strs)     #         sep.join(str)
print(join_bysep("red","blue","green",sep=" "))
print(join_bysep("red","blue",sep=","))
print(join_bysep("red",sep=","))
print(join_bysep(sep=","))    #  strs  ,       

まとめ
以上、Pythonカスタム関数定義、パラメータ、呼び出しコード解析のすべての内容について、皆さんの役に立つことを願っています.興味のある方は引き続き当駅の他の関連テーマを参照することができます.不足点があれば、伝言を歓迎します.友达の本駅に対する支持に感谢します!