Python3.xの基本的な学習関数の使用法

関数の使用法

 

関数パラメーターのタイプ

不変の型パラメーター:数値、文字列str、タプルtuple。
変数タイプ:
aは、リストおよび辞書dict 関数では不変ですFun(a)は内部的に値を変更しますが、それ自体に影響を与えることなく、コピーされた別のオブジェクトのみを変更します。
1.不変の型パラメーターを渡してもパラメーター自体には影響しません
2.変数型パラメーターを渡してもパラメーター自体に影響します

不変パラメータータイプ
a = 1 print (id(a)) 2009628784 def func(a): a = 10 print (a、id(a)) func(a) 20 2009629392 def func(a): a = 1 印刷(a、id(a)) func(a) 1 2009628784 印刷(a、id(a)) 1 2009628784

 

可変パラメータタイプ

B = [10,20 ]
 プリント(ID(B))
2324968580360 


DEF FUNC(B):
    b.append( 30 プリント(ID(B))


FUNC(B) 
2324968580360 
印刷(B、 id(b))
 [10、20、30] 2324968580360

 関数パラメーター(必須パラメーター、デフォルトパラメーター、オプションパラメーター、キーワードパラメーター)

 

#必須パラメーター

def func1(x):
    return x * x 

func1(2 
4 
デフォルトパラメーター注:デフォルトパラメーターは必須パラメーターの後に配置する必要があります#欠陥:

def funcx(L = []):
    L.append(" The End " return L funcx()#関数定義では、デフォルトパラメータLで指定されたアドレスが決定されています。呼び出しごとにLの内容が変更されます
  


 
 

関数func2 DEF(X、Y = 10 ):
     リターン X * Yの

関数func2(3 30 

関数func2(35。 ) 15 

オプションパラメータ

DEF FUNC3(* nmbers):
  SUM = 0
  Iの数値で:
    SUM = SUM + i * i
  return sum

func3([1,2,3])
#14

キーワードパラメータ

def func4(name、** kwargs):
  print( "data:"、kwargs)

 

 

再帰関数

再帰関数関数が内部でそれ自体を呼び出す場合、この関数は再帰関数です。
再帰関数を使用するための条件:
1.出口を出る必要があります
2.独自の

case1を呼び出します
再帰関数の評価3 ... * 2 * 1 7 * * * 8 9 * 10。。。
DEF FUNC(X):

    IF X == 1 リターンX
     リターン X * FUNC(-X 1 

プリント(FUNC(10 ))

3628800

 

ケース2:

#リストをすべて

展開しますlst1 = [1,2、[3,4、[5、[6、[7]、8,9]]、10]、 11,12,13 ] lst2 = [] def func(lst1 ): のためにLST1: IFのでisinstance(I、リスト): リストは、FUNCを実行された場合(ⅰ) FUNC(ⅰ) lst2.append(ⅰ) 、それはLST2要素のリストに入れていない場合 (FUNC lst1) [ 1、2、3、4、5、6、7、8、9、10、11、12、13 ]

ケース3:

#再帰関数を使用してフィボナッチ数列を見つけます
1 1 2 2 3 2 + 1 = 3 4 3 + 2 = 5 ... nf(n-1)+ f(n-2) def func (n): if n == 1 または n == 2 return n return func(n-1)+ func(n-2 print(func(5 )) 8

ケース3:

カエルは一度に1、3、7、または10ステップジャンプできますQ:nステップあります。
1-2 1 n <= 2 f(n)= 1 
3 2 f(2)+ f(0)= 2 
4 2 + 1 = 3 f(3)+ f(1)= 4 
5 3 + 1 = 4 
6 4 + 2 = 6 
... 
nf(n -1)+ f(n-3)+ f(n-7)+ f(n-10 


def func(x):
     if 1 <= x <3 return 1
     elif x < 0:
         return 0
     else return func(x-1)+ func(x-3)+ func(x-7)+ func(x-10 

print(func(10 ))

22

 

関数の名前空間

ネームスペースは、ローカルネームスペース、グローバルネームスペース、および組み込みネームスペースの3つのタイプに分かれています。ローカルネーム

スペース:各関数には、ローカルスペースと呼ばれる独自のネームスペースがあり、関数のパラメーターやローカルを含む、関数の変数を記録します。定義された変数
def test():
    a = 2 
    print(a)

test()
print(a)
2  
#NameError:名前' a '  定義されていません


グローバル名前空間:各モジュールには、グローバル名前空間と呼ばれる独自の名前空間があり、関数、クラス、その他のインポートされたモジュールなど、モジュールの変数を記録します。
a = 2 

def test():
    print(a)

test()
print(a)
2 2

 



組み込みの名前空間:すべてのモジュールがアクセスでき、組み込みの関数と例外が格納されます。
print()、input()...

 

ローカル変数とグローバル変数

ローカル変数:関数内で定義された
変数グローバル変数:関数外で定義された変数。不変タイプの場合、関数内で変更できません。
NAME = ' zzq ' 
LIST1 = [ 10 ] 
DEF FUNC():
    名前 = ' ジョンソン' 
    list1.append(名)
    プリント(" 内側" 、名)
FUNC()
プリント(" 外側" 、名)
プリント(LIST1) 
内側ジョンソン
#外側zzqの

名前 = ' zzq ' 
名前 = ' ジョンソン' 
DEF FUNC():
    グローバル名#全局变量 = ' 123' 
func()
print(name)
123 

name = ' zzq ' 
def func1():
    name = ' ls ' 
    def func2():
        nonlocal name#関数のローカルスコープが変数を見つけられない場合、インタープリターは自動的に外部関数で
        name = ' abc ' 
    func2()
    print(" --------- " 、name)
func1()
print(name)を検索します
    • 関数はローカルスコープを定義し、モジュールはグローバルスコープを定義します。
      関数でグローバルスコープを定義する場合は、グローバル修飾子を追加する必要があります。
    • 変数名の解決:LEGBの原則
      関数で認証されていない変数名を使用する場合、Pythonは4つのスコープ[ローカルスコープ(L)(グローバル変数を使用せずに内部で宣言された関数)を検索し、その後に上位レイヤー構造を検索します。 defまたはラムダのローカルスコープ(E)、続いてグローバルスコープ(G)(モジュールレベルで宣言されたグローバルまたは変数を使用して関数内で宣言された変数)、最後に組み込みスコープ(B)(つまり、Pythonの組み込みクラス)そして、関数など)]と変数名を見つけることができる最初の場所で停止します。検索プロセス全体で変数名
      が見つからない場合、Pythonはエラーを報告します。
    • https://www.cnblogs.com/summer-cool/p/3884595.htmlに転載

 

おすすめ

転載: www.cnblogs.com/johnsonbug/p/12610758.html