関数の基礎(一)

6819 ワード

目次
  • 関数セクション
  • 関数体系
  • 関数
  • とは
  • 関数の使用理由
  • 関数
  • の使用方法

  • 関数定義の3つの方法
  • 無パラメトリック
  • パラメータ
  • 空関数
  • 関数の戻り値
  • 戻り値
  • とは
  • なぜ戻り値
  • があるのか
  • 関数の呼び出し
  • 関数の呼び出し
  • とは
  • なぜ関数
  • が呼び出されたのか
  • 関数呼び出しの3つの形式
  • 関数パラメータの応用
  • 形参
  • 実参
  • 位置パラメータ
  • 位置パラメータ
  • 位置実参
  • キーワードパラメータ
  • デフォルトパラメータ
  • まとめ
  • 関数セクション
    関数体系
  • 関数
  • とは
  • なぜ関数
  • を使用するのか
  • 関数の分類
  • 構文
  • パラメータ関数
  • が定義する
  • パラメータレス関数
  • を定義する
  • 空関数を定義し、空関数適用シーン
  • 呼び出し関数
  • 関数
  • を呼び出す方法
  • 関数の戻り値
  • 関数のパラメータの適用:パラメータと実パラメータ、位置パラメータと位置実パラメータ、キーワード実パラメータ、デフォルトパラメータ、*args、*kwargs

  • 関数とは
    関数はプログラミング言語の様々なツールのパッケージであり、必要なロングショットに遭遇したら直接呼び出すことができます.
    関数を使用する理由
    プログラムコードが長すぎると、一緒に書くと、プログラムが冗長になり、プログラムの拡張性が悪く、プログラムの読み取りとメンテナンス性が悪くなります.この場合、関数の分割機能を分割する必要があります.
    関数の使用方法
  • はまず関数を定義し、その後
  • を呼び出す.
  • 定義関数
  • def     (param1.param2..):
        code 1
        code 2
        code 3
        
        return    
  • 呼び出し関数
  •    (param1,param2...)
  • 関数登録機能
  • def register():
        usename = input('usename:').strip()
        pwd = input('password':).strip()
        
        with open('1.txt','a',encoding = 'utf8') as fa:
            fa.writea(f'{usenamea}:{pwd}
    ') fa.flush register() register() register()
  • 関数登録機能
  • def login():
    
        usename = input('usename:').strip()
        pwd = input('password':).strip()
        
        with open('1.txt','rt',encoding = 'utf8') as fr:
            for use_info in fr:
                user_info = use_info.strip('
    ').split(:) if usename == suer_info[0] and pwd == user_info[1]: print('login sucessful') else: print(' ') login()
  • 関数定義フェーズ
  • def func():
        bar()
        print('*' * 10)
  • 関数呼び出しフェーズ
  • def bar():
        print('from bar')
        
    def foo():
        print('from foo')
        bar()
        
    foo()
    def foo():
        print('from foo')
        bar()
        
    def bar():
        print('from bar')
        
    foo() #     

    関数定義の3つの方法
    パラメトリック関数なし
    関数を定義するときのパラメータは、関数体が外部から伝達されるメディアを受信することであり、実際には変数名である.
    関数括弧内にパラメータがないことを無パラメトリック関数と呼ぶ.定義時にパラメータがないということは、呼び出し時にパラメータを入力する必要がないことを意味します.関数体コードロジックが外部から入力された値に依存する必要がない場合は、パラメータなし関数として定義する必要があります.
    def func():
    
        print('hello word')
    
    func()

    パラメータ関数
    関数定義フェーズのカッコ内にパラメータがあり、パラメータ関数と呼ばれます.定義時にパラメータがあり、呼び出し時にパラメータを入力する必要があることを意味します.
    関数のコードボディが外部から入力された値に依存する必要がある場合は、パラメータ関数として定義する必要があります.
    def sum_self(x,y):
        res = x+y
        print(res)
        
    sum_self(2,3)

    くうかんすう
    ある機能を実現するだけで、コードでどのように実現するか分からない場合は、一時的に空の関数でスキップして、他の機能を実現することができます.
    def func():
        pass

    関数の戻り値
    戻り値とは
    関数内部コードは一連の論理判断を経て処理結果が得られる
    def func():
        name = 'nick'
        return name
    name = func()
    print name  #      

    なぜ戻り値があるのか
    今需要があって、2人の月給を比較して、それから月給の大きい人の年俸を獲得します
    プログラムで関数処理結果を取得してさらに処理する必要がある場合は、関数に戻り値が必要です.
    次の点に注意してください.
  • returnは1つの関数の終わりの標識で、関数は複数のreturn値を持つことができて、returnに実行する限り、関数は
  • を停止します.
  • return関数は、任意のタイプのデータ
  • を返すことができる.
  • returnの戻り値は、カンマで区切る複数の戻り値(複数の値を返す場合はタプル形式で出力)
  • を返すことができる.
    def max_self(salary_x, salary_y)
        if salary_x > salary_y:
            return salary_x
        else:
            return salart_y
    
    max_salart = max_self(2000,3000)
    print(max_salary * 12)  # return 360000
    def func():
        name = 'nick'
        age = 19
        hobby_list = ['read','run']
        return name,age,hobby_list
        
    name,age,hobby_list = func()
    print(f'name,age,hobby_list:{name,age,hobby_list}')
    # name,age,hobby_list:('nick',19,['read','run'])

    関数の呼び出し
    関数の呼び出しとは
    関数が ()の形式で現れると、関数体コードが実行され、returnに遭遇したり、関数体内のすべてのコードが終了したりすることを知っています.
    関数はすべてのコードを実行し、関数体がreturnを書かない場合はNoneを返します.
    def foo:
        pass
        
    print(foo())

    関数を呼び出す理由
    関数内の機能を使用して、プログラムを簡略化
    関数呼び出しの3つの形式
    def max_self(x,y):
        if x > y:
            return x
        else:
            return y
            
    max_self(1,2)
    res = max_self(1,2) *12
    max_self(max_self(2000,3000),4000)

    関数パラメータの適用
    パラメータ
    関数定義段階の括弧内で定義されたパラメータを形式パラメータと呼び、形パラメータと略称し、本質は変数名である
    def func(x,y):
        print(x)
        print(y)

    実参
    関数呼び出しフェーズのカッコ内に入力されるパラメータは、実際のパラメータと呼ばれ、実パラメータと略称され、本質は変数の値である.
    func(1,2)

    位置パラメータ
    位置パラメータ
    関数定義フェーズで、左から右の順に定義されたパラメータを位置パラメータと呼びます.
    def func(x,y)
        print(x)
        print(y)

    特徴:位置によって定義されたパラメータは、いずれも値を伝えなければならない.一つ多くはだめだ.一つ少なくはだめだ.
    位置パラメータ
    関数呼び出しフェーズでは、実パラメータが左から右の順に定義され、実パラメータと呼ばれます.
    func(1,2)

    特徴:位置に応じた形パラメータを順次伝達する
    キーワードパラメータ
    関数を呼び出すときにkey=valueの形式で指定したパラメータに値を渡し、キーワードパラメータと呼ぶ
    func (y = 2, x = 1)

    特徴:位置の制限を破ることができますが、指定したパラメータに値を割り当てることができます.
    注意:
  • は、位置実パラメータとキーワード実パラメータを混在させることができるが、位置実パラメータは、キーワード実パラメータの左側
  • にある必要がある.
  • は、位置実パラメータとキーワード実パラメータを混在させることができるが、1つのパラメータに対して
  • を繰り返すことはできない.
    func(x, y=2)
    func(y=2,x)
    func(x,x=1)

    既定のパラメータ
    定義フェーズでは、すでに値が割り当てられています.
    def func(x,y=10):
        print(x)
        print(y)
    
    func(2)

    フィーチャー:定義フェーズですでに値が割り当てられています.これは、呼び出し時に値を割り当てる必要がないことを意味します.
    注意:
  • 位置パラメータは、デフォルトのパラメータの左側
  • に配置されます.
  • デフォルトパラメータの値は定義フェーズに1回のみ付与、すなわちデフォルトパラメータの値は関数定義フェーズで
  • 固定されている.
    m = 10
    
    def foo(x = m)
        print(x)
        
    m = 111
    foo()
  • デフォルトパラメータの値は、通常、可変型
  • であるべきである.
    def register(name,hobby,hobby_list = []):
        hobby_list.append(hobby)
        print(f'{name}prefer{hobby}')
        print(f'{name}prefer{hobby_list}')
        
    register('nick', 'read')
    register('tank','zuipiao')
    register('jsaon', 'piao')
    def register(name,hobby,hobby_list = None):
        
        if hobby_list is None:
            hobby_list = []
        
        hobby_list.append(hobby)
        print(f'{name}prefer{hobby}')
        print(f'{name}prefer{hobby_list}')
        
    register('nick', 'read')
    register('tank','zuipiao')
    register('jsaon', 'piao')

    まとめ
    実参の応用は個人の習慣にかかっている.
    ==パラメータの適用:
  • ==ほとんどの場合の呼び出し値と同様に、このパラメータを位置パラメータ==
  • として定義する必要があります.
  • ==ほとんどの場合の呼び出し値と同様に、このパラメータをデフォルトのパラメータ==
  • として定義する必要があります.