Aprendizaje de gramática básica de Python - función


prefacio

Continuando con el estudio de esta semana,


1. Función

La definición de la función puede contener varios parámetros formales, por lo que la llamada a la función también puede contener varios parámetros reales. Hay muchas formas de pasar parámetros reales a la función: se pueden usar parámetros reales posicionales y también se pueden usar parámetros reales de palabra clave.

1. Argumentos posicionales

Basándose en el orden de los parámetros reales, asócielos a los parámetros formales.

def describe_pet(animal_type,pet_name):
    print("I have a {animal_type}.".format(animal_type = animal_type))
    print("My {animal_type} name is {pet_name}".format(animal_type = animal_type,pet_name = pet_name))

    
describe_pet('harry','hamster')

En este ejemplo, el primer parámetro real 'harry'se pasa al animal_typeparámetro formal.

2. Argumentos de palabras clave

describe_pet(animal_type = 'harry',pet_name = 'hamster')

Indica claramente a qué parámetro formal pasar el parámetro real. El orden es irrelevante.

3. Valor por defecto

Puede asignar un valor predeterminado a un parámetro formal al definir una función, y será el valor predeterminado si no asigna un valor al parámetro formal al llamarlo. Al definir, los parámetros formales con valores predeterminados deben escribirse después de los parámetros formales sin valores predeterminados, para poder interpretar los argumentos posicionales correctamente.

4. Haz que los argumentos sean opcionales

A veces podemos necesitar o no un parámetro formal en una función. Al llamar, para garantizar que la función pueda ejecutarse normalmente, establezca el valor predeterminado de este parámetro formal al final, de modo que al llamar, si no hay ‘ ’tal parámetro real, su valor predeterminado está vacío, si existe este parámetro real, especifique su valor.

5. Pasar la lista a la función

Si le pasamos una lista a la función y modificamos la lista en la función, también se modificará la lista de parámetros reales (entendido como pasar la dirección de la lista) por
ejemplo

a = [1,2,3,4]
def list_a(a):
    a.pop()

list_a(a)
a
[1, 2, 3]

Se puede ver que el último elemento de la lista a se elimina en la función Después de llamar a la función, la lista a cambia fuera de la función.
Si queremos cambiar la lista solo dentro de la función, pero la lista real a no cambia, ¿cómo deberíamos hacerlo?
Se puede pasar una copia de la lista a. Como sigue

a = [1,2,3,4]
list_a(a[:])
a
[1, 2, 3, 4]

6. Pasa cualquier número de argumentos

Si no sabe cuántos parámetros debe aceptar la función, puede definir solo un parámetro formal al definir la función.
Por ejemplo

def deng(*x):
    print(x)

deng(1)
(1,)
deng(1,2,3,4)
(1, 2, 3, 4)

Como puede ver, agregue un número antes del parámetro formal *, que puede aceptar cualquier número de parámetros reales y convertir todos los parámetros reales en una tupla.

Tenga en cuenta que si hay otros argumentos posicionales o de palabras clave, debemos *argscolocarlos después de los otros parámetros formales.

7. Pase cualquier número de argumentos de palabras clave

Si queremos aceptar cualquier cantidad de argumentos, pero no sabemos qué tipo de información se pasa a la función. Las funciones se pueden escribir para aceptar cualquier número de pares clave-valor.
Los ejemplos son los siguientes:

def build_profile(first_name,last_name,**user_name):
    user_name['first_name'] = first_name
    user_name['last_name'] = last_name
    return user_name

user_profile = build_profile('deng','chao',location = 'princeton',field = 'physics')

print(user_profile)
{
    
    'location': 'princeton', 'field': 'physics', 'first_name': 'deng', 'last_name': 'chao'}

Al definir la función, agregué dos antes del parámetro formal nombre_usuario **.La función de este es almacenar los siguientes parámetros en el diccionario nombre_usuario en forma de pares clave-valor, y también se puede acceder a este diccionario dentro de la función nombre_usuario.

Supongo que te gusta

Origin blog.csdn.net/weixin_47250738/article/details/130598439
Recomendado
Clasificación