Pythonの基礎day10関数型プログラミング、名前空間スコープ、高階関数

関数のパラメータ

3.ユニバーサルパラメータ

*引数

関数定義、*は、引数に割り当てられ、位置パラメータのすべて1つのタプルに集約され、重合を表す場合

def fun_name(*args):
    print('%s, %s, %s, %s' % args)


fun_name('jason', 'carly', 'dog', 'cat')

演習:すべての着信機能の数を計算する機能の製品を書きます

def func(*args):
    result = 1
    for i in args:
        result = i * result
    return result


print(func(1, 2, 3, 4))

** kwargse

関数が定義されている場合、**それはkwargsからに割り当てられ、辞書に集約されるすべてのキーワード引数の集合を表し、

def info(**kwargs):
    print(kwargs)


info(name='jason', age=24, sex='man')
# 万能参数
def info(*args, **kwargs):
    print(args)
    print(kwargs)

シーケンスのパラメータを形状:

def func(位置参数,*args,默认参数,仅限关键字参数,**kwargs):
# 默认参数和仅限关键字参数顺序可互换

ときに殴らの代わりに関数呼び出し、*に

  • 反復可能オブジェクトを分割する場合にのみ
  • 各ループ反復のオブジェクトの実際の効果に相当渡すことができ、得られた結果は、ループを通過する*引数
def func(*args):
    print(args)


func(*'1234', *'5678')  #结果为('1', '2', '3', '4', '5', '6', '7', '8')
def func(*args):
    print(args)


func(*[1, 2, 3, 4], *[5, 6, 7, 8])  # 结果为(1, 2, 3, 4, 5, 6, 7, 8)
def func(*args):
    print(args)


func(*{'k1': 'v1', 'k2': 'v2'}, *{'k3': 'v3', 'k4': 'v4'})
# 结果为('k1', 'k2', 'k3', 'k4')

**のみ散乱辞書と

  • 各サイクルは、辞書を通過したため、実際の効果は同等ですが、キーは、すべてのkwargsからサイクルが構成される辞書を取得するということです
def func(**kwargs):
    print(kwargs)


func(**{'k1': 'v1', 'k2': 'v2'}, **{'k3': 'v3', 'k4': 'v4'})
# 结果为{'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4'}

*その他の用途

# 首先看下分别赋值
a, b = (1, 2)
print(a, b)  # 1 2
# 其实还可以这么用:
a, *b = (1, 2, 3, 4,)
print(a, b)  # 1 [2, 3, 4]
*rest, a, b = range(5)
print(rest, a, b)  # [0, 1, 2] 3 4
print([1, 2, *[3, 4, 5]])  # [1, 2, 3, 4, 5]

第二に、名前空間

  1. グローバル名前空間 - >ドキュメントに直接おPY、変数はグローバル名前空間に属し関数の外で宣言しました

  2. ローカル名前空間 - >関数内で宣言した変数は、ローカル名前空間に保持されます

  3. 内蔵のネームスペース - >ストレージPythonインタプリタは、これらの組み込まれている名前空間をint型、名前、リスト、タプル、STRを提供してくれます

ロード順:内蔵のネームスペース- >ローカル名前空間- >グローバル名前空間の
値列:グローバル名前空間- >ローカル名前空間- >内蔵の名前空間

第三に、スコープ

グローバルスコープ:組み込みの名前空間、グローバル名前空間
2.ローカルスコープ:ローカル名前空間

  • ローカルスコープはグローバルスコープを持つ変数を参照することができます
  • グローバルスコープがローカルスコープ変数を参照することはできません
  • ローカルスコープはグローバルスコープを持つ変数を変更することはできません

グローバル()ローカル()

a = 1
b = 2
def func():
    c = 3
    d = 4
    print(globals())
    print(locals())
func()

第四に、高階関数

def func1():
    print(1)
    def fun2():
        print(2)
        print(3)
    fun2()
    print(4)
func1()
"""结果为:
1
2
3
4
"""

おすすめ

転載: www.cnblogs.com/west-yang/p/12590616.html