Python - Enciclopedia de funciones

(1) Familiarizarse con las funciones por primera vez

Las funciones son bloques reutilizables de código de programa.

 

Las funciones no solo pueden lograr la reutilización del código, sino también lograr la consistencia del código. La consistencia significa que mientras la función
código, se pueden reflejar todos los lugares donde se llama a la función.
        Al escribir una función, el método de escritura de código en el cuerpo de la función es básicamente el mismo que el que describimos anteriormente, pero el código se encapsula y se llama a las funciones, se pasan parámetros y se agregan los resultados de cálculo devueltos.

 

El concepto básico de función.

         Un programa consta de tareas una por una; una función representa una tarea o una función . Las funciones son un mecanismo común para la reutilización de código.

 

Clasificación de las funciones de Python

 

Las funciones de Python se dividen en las siguientes categorías:
1
función incorporada
Las funciones str() , list() , len() , etc. utilizadas son funciones integradas que podemos usar directamente.
2
funciones de biblioteca estándar
Puede importar la biblioteca a través de la declaración de importación y luego usar las funciones definidas en ella
3
Funciones de biblioteca de terceros
La comunidad de Python también proporciona muchas bibliotecas de alta calidad. Después de descargar e instalar estas bibliotecas, también se importan a través de la declaración de importación y luego se pueden usar las funciones de estas bibliotecas de terceros.
4
función definida por el usuario
La función definida por el usuario es obviamente también una función definida para satisfacer las propias necesidades del usuario durante el desarrollo. Lo que estamos aprendiendo hoy es cómo personalizar las funciones.

(2) Definición y convocatoria de funciones

En Python , la sintaxis para definir una función es la siguiente:
  nombre de función def ([ lista de parámetros ]) :
''' Cadena de documentación '''
Cuerpo de la función / varias sentencias

Caso de demostración:

def add(a,b,c):
    '''完成三个数的加法,并返回他们的和'''
    sum = a+b+c
    print("{0}、{1}、{2}三个数的和是:{3}".format(a,b,c,sum))
    return sum
add(10,20,30)
add(30,40,50)

Análisis inferior:

 Usamos def para definir la función, luego un espacio y el nombre de la función;

Cuando Python ejecuta def , se crea un objeto de función y se vincula a la variable de nombre de función.
 
lista de parámetros
Dentro de los paréntesis hay una lista de parámetros formales y, si hay varios parámetros, use comas para separarlos.
El parámetro formal en el momento de la definición no necesita declarar el tipo, ni necesita especificar el tipo de valor de retorno de la función.
Los parámetros reales al llamar deben corresponder uno a uno con la lista de parámetros formales
 
devolver valor de retorno
Si el cuerpo de la función contiene una declaración de devolución , la ejecución de la función finaliza y se devuelve el valor;
Si el cuerpo de la función no contiene una declaración de devolución , devuelve un valor Ninguno .
 
Antes de llamar a una función, la función debe definirse primero, es decir, primero llame a def para crear un objeto de función
Los objetos de función incorporados se crean automáticamente
Las funciones de biblioteca estándar y de biblioteca de terceros, al importar un módulo a través de import , ejecutarán la instrucción def en el módulo

 

(3)  Parámetros formales y parámetros reales

      Vea el nombre y el significado: el parámetro real es un parámetro que tiene espacio de memoria asignado en el programa. Se le puede asignar un valor específico, como una constante, una matriz, una dirección (puntero) o un nombre de variable, una matriz nombre o una expresión Por supuesto, también se incluyen variables de puntero. (Entendidas como cosas específicas)  Los parámetros formales se definen cuando se escribe una función llamada para explicar el tipo de argumento utilizado y qué operación se va a realizar, no se le asignará espacio de memoria antes de llamar a la función, no se le asignará un valor específico. (entendidas como cosas abstractas).

     En un ejemplo realista, Lao Wang y Xiao Li son ambos chefs, el chef es el parámetro formal y Lao Wang y Xiao Li son los parámetros reales del chef.

Puntos clave sobre parámetros formales y reales:
Dentro de los paréntesis hay una lista de parámetros formales y, si hay varios parámetros, use comas para separarlos.
El parámetro formal en el momento de la definición no necesita declarar el tipo, ni necesita especificar el tipo de valor de retorno de la función.
Los parámetros reales al llamar deben corresponder uno a uno con la lista de parámetros formales

 

Código específico:

def  printMax(a,b):
    '''实现两个数的比较,并返回较大的值'''
    if a>b:
        print(a,'是大值')
        return a
    else:
        print(b,'是大值')
        return b
printMax(10,20)
printMax(30,5)
En la función printMax        anterior , printMax(a,b) se escribe en el momento de la definición . ayb se denominan " parámetros formales" , o " parámetros formales " para abreviar . Es decir, los parámetros formales se utilizan al definir la función. La denominación de los parámetros formales debe ajustarse a la regla de denominación " identificador " .
Al llamar a una función, los parámetros pasados ​​se denominan " parámetros reales " o " parámetros reales " para abreviar . En el código anterior, printMax(10,20) , 10 y 20 son los parámetros reales.

(4) Cadenas de documentación ( comentarios para funciones )

       La legibilidad del programa es lo más importante. Generalmente se recomienda adjuntar la descripción de la definición de la función al comienzo del cuerpo de la función. Esta es la " cadena del documento " , y algunas personas la llaman " comentario de la función " . Logramos esto con tres comillas simples o tres comillas dobles, y se pueden agregar varias líneas de texto en el medio para una explicación.

Probar el uso de docstrings

 

(5) Valor de retorno

Valor de retorno: finaliza la ejecución de la función y devuelve el valor especificado a la persona que llama.

Devolver puntos de valor de retorno:
   Si el cuerpo de la función contiene una declaración de devolución , finaliza la ejecución de la función y devuelve un valor
   Si el cuerpo de la función no contiene una declaración de retorno , devuelve Ninguno
   Para devolver múltiples valores, use listas, tuplas, diccionarios y colecciones para " guardar " múltiples valores

 

#无返回值函数
def print_star(n):
  print("*"*n)

print_star(3)

#有返回值函数:return
def my_avg(a,b):
  return (a+b)/2

 #如下是函数的调用
c = my_avg(20,30)
print(c)

#返回一个列表
def printShape(n):
 s1 = "#"*n
 s2 = "$"*n
 return [s1,s2]

s = printShape(5)
print(s)

(6) Alcance de las variables 

       El rango en el que trabaja una variable se denomina alcance de la variable, y las variables con el mismo nombre en diferentes alcances no se afectan entre sí. Las variables se dividen en: variables globales, variables locales.

Variables globales:

     Variables declaradas fuera de las definiciones de funciones y clases. El alcance es el módulo definido, desde el punto de definición hasta el final del módulo.
    Las variables globales reducen la generalidad y legibilidad de las funciones. El uso de variables globales debe evitarse tanto como sea posible.
    Para cambiar el valor de una variable global dentro de una función, declárela usando global

variable local:

    Variables declaradas dentro del cuerpo de la función (incluidos los parámetros formales).
    Las referencias a variables locales son más rápidas que las variables globales, y se da prioridad al uso
    Si una variable local y una variable global tienen el mismo nombre, oculte la variable global dentro de la función y use solo la variable local con el mismo nombre

 

Código específico:

a = 100  #全局变量
def f1():
  global a  #如果要在函数内改变全局变量的值,增加global关键字声明
  print(a)#打印全局变量a的值
  a = 300
f1()
print(a)

b=100
def f2():
    b = 3  #同名的局部变量
    print(b)

f2()
print(b) #b仍然是100,没有变化

 

(7) Paso de parámetros

      La esencia del paso de parámetros de función es: la operación de asignación de parámetro real a parámetro formal. "Todo es un objeto " en Python , y todas las operaciones de asignación son " asignaciones de referencia " . Por lo tanto, el paso de parámetros en Python es "pasar por referencia", no "pasar por valor".
Hay dos tipos de operaciones específicas:
1 La " operación de escritura " en el " objeto variable " actúa directamente sobre el propio objeto original.
2 La " operación de escritura " en el " objeto inmutable " generará un nuevo " espacio de objetos " y llenará este espacio con nuevos valores .
Los objetos mutables son:
Diccionarios, listas, colecciones, objetos personalizados, etc.
Los objetos inmutables son:
Números, cadenas, tuplas, funciones , etc.
Pasar referencias a objetos mutables
      El parámetro pasado es un objeto mutable (por ejemplo: lista, diccionario, otros objetos mutables personalizados, etc.), y lo que realmente se pasa sigue siendo una referencia al objeto. En lugar de crear una nueva copia del objeto en el cuerpo de la función, el objeto pasado se puede modificar directamente.
 
pasar referencias a objetos inmutables
     Si el parámetro pasado es un objeto inmutable (por ejemplo: int , float , string, tuple, boolean value), lo que realmente se pasa sigue siendo una referencia al objeto. Durante la " operación de asignación " , dado que los objetos inmutables no se pueden modificar, el sistema creará un nuevo objeto.

(8) Varios tipos de parámetros

parámetros posicionales

     Cuando se llama a la función, los parámetros reales se pasan por orden de posición de forma predeterminada y el número debe coincidir con los parámetros formales. Los parámetros pasados ​​por posición se denominan: " parámetros posicionales " .

parámetro predeterminado

      Podemos establecer valores predeterminados para ciertos parámetros para que sean opcionales cuando se pasan. Llamado " parámetro de valor predeterminado " . El parámetro de valor predeterminado se coloca después del parámetro posicional.

parámetros con nombre

También podemos pasar parámetros de acuerdo con los nombres de los parámetros formales, que se denominan " parámetros con nombre " , también conocidos como " parámetros de palabras clave" .

parámetro variable

Varargs se refiere a " número variable de parámetros " . Hay dos situaciones:
*param (un asterisco), recopila varios parámetros en un objeto de " tupla " .
1
**param (dos asteriscos), recopila múltiples parámetros en un objeto " diccionario " .

Parámetros con nombre obligatorios

Agregue un nuevo parámetro después del " parámetro variable " con un asterisco , y debe " parámetros con nombre obligatorios" al llamar .
Código específico:
#位置参数
def f1(a,b,c):
   print(a,b,c)
f1(2,3,4)
#f1(2,3)   #报错,位置参数不匹配

#默认值参数
def f1(a,b,c=10,d=20):   #默认值参数必须位于普通位置参数后面
    print(a,b,c,d)
f1(8,9)
f1(8,9,19)
f1(8,9,19,29)

#命名参数
def f1(a,b,c):
    print(a,b,c)
f1(8,9,19)  #位置参数
f1(c=10,a=20,b=30)  #命名参数

#可变参数
def f1(a,b,*c):
    print(a,b,c)
f1(8,9,19,20)
def f2(a,b,**c):
    print(a,b,c)
f2(8,9,name='baibi',age=18)
def  f3(a,b,*c,**d):
  print(a,b,c,d)
f3(8,9,20,30,name='baibi',age=18)

#强制命名参数
def f1(*a,b,c):
    print(a,b,c)
#f1(2,3,4)#会报错。由于a是可变参数,将2,3,4全部收集。造成b和c没有赋值。
f1(2,b=3,c=4)

(9) expresiones lambda y funciones anónimas

        Las expresiones lambda se pueden utilizar para declarar funciones anónimas. Las funciones Lambda son una manera fácil de definir funciones en la misma línea. La función lambda en realidad genera un objeto de función. Una expresión lambda solo puede contener una expresión y no puede contener instrucciones complejas. El resultado del cálculo de esta expresión es el valor de retorno de la función.
La sintaxis básica de las expresiones lambda es la siguiente:
lambda   arg1 , arg2 , arg3 ...   : <expresión> _
arg1 arg2 arg3 son los parámetros de la función. <expresión> corresponde al cuerpo de la función. El resultado de la operación es: el resultado de la operación de la expresión.

 

Código específico:

f = lambda a,b,c:a+b+c
print(f)
print(f(2,3,4))
g = [lambda a:a*2,lambda b:b*3,lambda c:c*4]
print(g[0](6),g[1](7),g[2](8))

 

(10) función recursiva

 

Una función es recursiva si se llama a sí misma internamente. Las ventajas de las funciones recursivas son la definición simple y la lógica clara. En teoría, todas las funciones recursivas pueden escribirse como bucles, pero la lógica de los bucles no es tan clara como la de la recursividad. Asegúrese de aclarar qué es constante (la función en sí) y qué es variable (parámetros). La idea básica de la recursividad es "llámese a sí mismo"

Las funciones recursivas deben:

Una función recursiva se refiere a una función que se llama a sí misma y se llama a sí misma directa o indirectamente dentro del cuerpo de la función. Toda función recursiva debe contener dos partes:
1
Condición de terminación
Indica cuándo finaliza la recursividad. Generalmente se usa para devolver un valor, ya no se llama a sí mismo.
2
paso recursivo
Asocie el valor en el paso n con el paso n-1 . Debe haber una condición final clara para la recursión, que es la salida de la recursión.
Caso sencillo:
def my_recursion(n):
    print("start:" + str(n))
    if n == 1:
      print("recursion over!")
    else:
        my_recursion(n - 1)
    print("end:" + str(n))

my_recursion(3)

Análisis inferior:

 

(11) Funciones anidadas ( funciones internas )

        Las funciones anidadas significan que, en algunos casos, es posible que deba usar una función como parámetro de otra función . Las definiciones de funciones en lenguaje C son todas paralelas e independientes entre sí, es decir, cuando se define una función, la definición de otra función no puede estar contenida en el cuerpo de la función, es decir, las funciones no se pueden anidar, pero se puede anidar. Una función anidada significa que, en algunos casos, es posible que necesite usar una función como parámetro de otra función, y esta función es una función anidada. En resumen, funciones anidadas: ¡funciones definidas dentro de funciones!
 
2
caso sencillo

Supongo que te gusta

Origin blog.csdn.net/qq_63976098/article/details/131607841
Recomendado
Clasificación