pitón base día10 programación funcional, el alcance de espacio de nombres, funciones de orden superior

A los parámetros de función

3. Los parámetros universales

* args

Cuando la definición de función, * representa la polimerización, todos los parámetros posicionales se agregarán en una tupla, asignado a la args

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


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

Ejercicio: escribir el producto de una función para calcular los números de todas las funciones de entrada

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


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

** kwargse

Cuando se define la función, ** representa la suma de todos los argumentos de palabras clave serán sumados en un diccionario, asignado a los kwargs

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


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

Forma parámetros de la secuencia:

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

Cuando la llamada de función, * En nombre de batido

  • Iterables sólo cuando disgregó
  • Corresponde al efecto real de cada bucle de iteración objetos se pueden pasar, los resultados obtenidos para pasar el bucle * args
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')

** con el diccionario sólo se dispersa

  • El efecto real es equivalente para cada ciclo pasado un diccionario, pero la clave es que todo el ciclo kwargs para conseguir un diccionario que consiste en
def func(**kwargs):
    print(kwargs)


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

* Otros usos

# 首先看下分别赋值
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]

En segundo lugar, el espacio de nombres

  1. espacio de nombres global -> nos Py directamente en el documento, la variable declarado fuera de la función pertenecen al espacio de nombres global

  2. espacio de nombres local -> variables declaradas en una función se mantendrá en el espacio de nombres locales

  3. Espacio incorporado, -> intérprete de python de almacenamiento nos proporciona el nombre, lista, tupla, str, int estos espacios de nombres se construyen

Cargando orden: espacio de nombres de construcción -> espacio de nombres locales -> Espacio de nombres global
valor de secuencia: espacio de nombres global -> espacio de nombres locales -> espacio de nombres incorporado

En tercer lugar, el alcance

A nivel mundial alcance: integrado en el espacio de nombres, espacio de nombres global
2. Ámbito Local: espacio de nombres locales

  • El ámbito local puede referirse a variables con ámbito global
  • alcance global no puede hacer referencia a las variables de ámbito local
  • ámbito local no puede cambiar la variable de ámbito global

globales () locales ()

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

En cuarto lugar, las funciones de orden superior

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

Supongo que te gusta

Origin www.cnblogs.com/west-yang/p/12590616.html
Recomendado
Clasificación