A fondo para conocer la función de Python 2

En primer lugar, el alcance variables

Ámbito de una variable llamada gama de códigos de función de la variable , el nombre de la variable en diferentes ámbitos puede ser la misma, independientemente uno de otro.

  • Variables locales Variables comunes dentro de una función definida por el único trabajo dentro de la función. Después del final de la ejecución de la función, las variables locales eliminan automáticamente, ya no se puede utilizar.
    Referencia es más rápido que las variables globales variables locales, se debe dar prioridad a utilizar.

  • Las variables globales pueden ser definidas por la palabra clave global. Se divide en dos situaciones:
    1. Una variable definida fuera de una función, si se requiere para esta asignación variable dentro de una función, y que desea reflejar el resultado de la asignación al exterior función, puede ser declarado como el uso de variables globales globales dentro de una función .
    2. Si una variable no está definida fuera de la función se puede definir directamente dentro de una función de variables variables globales, después de la ejecución de la función añadirá una nueva variable global.

  • Un valor de referencia de una variable dentro de la función y no asignar un nuevo valor, si tal operación puede llevarse a cabo, entonces las variables variables globales (implícitas) .

  • Si alguna de la posición de funcionamiento de la variable prometedor nuevo valor en la función, la variable se considera que es (implícita) de variables locales , a menos que explícitamente declarado con la palabra clave en la función global.

>>> def demo():
    global x                 #x被声明为全局变量
    x = 3
    y = 4
    print(x,y)

>>> x = 5
>>> demo()
3  4
>>> x
3               #如果把global x删去则输出5,因为此时上边定义的x为局部变量,只在demo()函数内生效
>>> y           #因为y是局部变量所以在函数外调用会报错
NameError: name 'y' is not defined
>>> del x         #把x删掉
>>> x
NameError: name 'x' is not defined
>>> demo()
3  4
>>> x
3
>>> y
NameError: name 'y' is not defined
  • Si las variables locales y variables globales con el mismo nombre, entonces la variable local ocultar la variable global del mismo nombre en su alcance, pero las variables locales declaradas dentro de una función no afecta a la función externa .
>>> def demo():
    x = 3         #创建了局部变量,并自动隐藏了同名的全局变量	

>>> x = 5
>>> x
5                #函数内部声明的局部变量不会影响函数外部
>>> demo()
>>> x             #函数执行不影响外面全局变量的值
5

Dos expresiones lambda,

  • expresiones lambda se pueden utilizar para declarar una función anónima , el nombre de la función no es una función de un pequeño uso temporal, especialmente adecuado para las necesidades de los otros parámetros de la función como una función de la ocasión. También puede definir la función de llamada.
  • expresiones lambda sólo pueden contener una sola expresión , el resultado del cálculo de la expresión puede ser visto como el valor de retorno de la función, las instrucciones compuestas no están permitidos, pero en una expresión pueden llamar a otras funciones.
>>> f = lambda x, y, z: x+y+z        #可以给lambda表达式起名字
>>> f(1,2,3)                         #像函数一样调用
6
>>> g = lambda x, y=2, z=3: x+y+z    #参数默认值
>>> g(1)
6
>>> g(2, z=4, y=5)                   #关键参数
11
>>> L = [1,2,3,4,5]
>>> print(list(map(lambda x: x+10, L)))        #模拟向量运算
[11, 12, 13, 14, 15]
>>> L
[1, 2, 3, 4, 5]
>>> data = list(range(20))           #创建列表
>>> data
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> import random
>>> random.shuffle(data)             #打乱顺序
>>> data
[4, 3, 11, 13, 12, 15, 9, 2, 10, 6, 19, 18, 14, 8, 0, 7, 5, 17, 1, 16]
>>> data.sort(key=lambda x: x)       #和不指定规则效果一样
>>> data
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> data.sort(key=lambda x: len(str(x)))     #按转换成字符串以后的长度排序
>>> data
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> data.sort(key=lambda x: len(str(x)), reverse=True)     #降序排序,两位数在前
>>> data
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

En tercer lugar, la función de generador

  • Contiene una declaración de rendimiento función se puede utilizar para crear el objeto generador, esta función también se llama una función de generador .
  • Declaración de rendimiento y efecto instrucción de retorno valores similares se utilizan para retorno de la función. La diferencia es que la instrucción de retorno, sentencia de retorno se ejecutará una vez al final de la operación de la función de inmediato, pero después de cada ejecución vuelve a producir una declaración de valor y suspender o colgar detrás de la aplicación del código , el siguiente generador de objeto por el __next __ ( ) método, una función de la función next (), para generar una ejecución hoja de vida cuando el objeto a bucle a través de elementos o datos de otro modo explícitas "solicitud".
  • Generador que tiene un perezosos evaluación características, adecuados para el procesamiento de datos de gran tamaño.
#编写并使用能够生成斐波那契数列的生成器函数。
>>> def f():
    a, b = 1, 1            #序列解包,同时为多个元素赋值
    while True:
        yield a            #暂停执行,需要时再产生一个新元素
        a, b = b, a+b      #序列解包,继续生成新元素

>>> a = f()                #创建生成器对象
>>> for i in range(10):    #斐波那契数列中前10个元素
    print(a.__next__(), end=' ')
1 1 2 3 5 8 13 21 34 55 

>>> for i in f():         #斐波那契数列中第一个大于100的元素
    if i > 100:
        print(i, end=' ')
        break

144
>>> a = f()               #创建生成器对象
>>> next(a)               #使用内置函数next()获取生成器对象中的元素
1
>>> next(a)               #每次索取新元素时,由yield语句生成
1
>>> a.__next__()          #也可以调用生成器对象的__next__()方法
2
>>> a.__next__()
3
Publicados 108 artículos originales · ganado elogios 332 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/zag666/article/details/105073301
Recomendado
Clasificación