Funciones de 25 Python

05-función \ 01-función uno.pdf
05-función \ 02-función dos.pdf

1. Documentación de funciones

Pensando: Después de definir una función, ¿cómo pueden los programadores escribir programas que puedan activar rápidamente la función de esta función?

Respuesta: Notas

Pensando: si hay mucho código, ¿necesitamos encontrar la ubicación de esta definición de función en mucho código para ver el comentario? ¿Qué sucede si desea
ver el rol de la función de manera más conveniente?

Respuesta: La documentación de la función.

La documentación de la función también se denomina documentación de la función.

1. Gramática

Documentación para definir funciones

def 函数名(参数):
	""" 说明⽂文档的位置 """
	代码
	......

Ver la documentación de la función

help(函数名)

2. Experiencia rápida

def sum_num(a, b):
	""" 求和函数 """
	return a + b
help(sum_num)

Producción:

Help on function sum_num in module __main__:

sum_num(a, b)
    求和函数

2. Cómo modificar variables globales en el cuerpo de la función

Existe el siguiente código:

a = 100
def testA():
    print(a)    #这里的a应该是全局变量
def testB():
    a = 200     #这里的a应该是局部变量
    print(a)

testA() # 全局变量的值100
testB() # 局部的变量的值200

print(f'全局变量量a = {a}') # 全局变量量a = 100

Salida del programa:

100
200
全局变量量a = 100

Pensando: ¿Cómo modificar las variables globales dentro del cuerpo de la función testB ()?
Respuesta: use la palabra clave global para declarar

a = 100
def testA():
    print(a)
def testB():
    # global 关键字声明a是全局变量量
    global a
    a = 200
    print(a)


testA() # 100
testB() # 200

print(f'全局变量量a = {a}') # 全局变量量a = 200

La salida del programa:

100
200
200
全局变量量a = 200

3. La función tiene varios valores de retorno

Pensando: cómo escribir código si una función tiene múltiples valores de retorno

def return_num():
    return 1, 2
result = return_num()
print(result) # (1, 2)

La salida del programa:

(1, 2)

Nota:

  1. Devuelve a, b está escrito, cuando se devuelven varios datos, el valor predeterminado es el tipo de tupla.
  2. Una lista, tupla o diccionario se puede concatenar después de volver para devolver varios valores.

4. Parámetros de función

1. Parámetros de ubicación

Parámetros posicionales: Al llamar a una función, los parámetros se pasan de acuerdo con la posición del parámetro definido por la función.

def user_info(name, age, gender):
	print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')
user_info('TOM', 20, '男')

Salida del programa:

您的名字是TOM, 年龄是20, 性别是男

Nota: El orden y el número de parámetros pasados ​​y definidos deben ser coherentes.

2. Parámetros de palabras clave

La llamada a la función está "键=值"especificada por el formulario. Puede hacer que la función sea más clara y fácil de usar, y también elimina la necesidad de ordenar los parámetros.

def user_info(name, age, gender):
	print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')
user_info('Rose', age=20, gender='女')
user_info('小明', gender='男', age=16)

Salida del programa:

您的名字是Rose, 年龄是20, 性别是女
您的名字是小明, 年龄是16, 性别是男

3. Parámetros predeterminados

Los parámetros predeterminados también se denominan parámetros predeterminados, que se utilizan para definir funciones y proporcionar valores predeterminados para los parámetros. Al llamar a la función, es posible que no se pasen los valores de los parámetros predeterminados (nota
: todos los parámetros posicionales deben aparecer antes que los parámetros predeterminados). parámetros, incluidas las definiciones de funciones y las llamadas).

Nota: Cuando se llama a la función, si pasa el valor del parámetro predeterminado, modifique el valor del parámetro predeterminado; de lo contrario, use este valor predeterminado.

5. Parámetros de longitud variable

Los parámetros de longitud variable también se denominan parámetros variables. Se utiliza en escenarios en los que no está seguro de cuántos parámetros se pasarán al llamar (no se pueden pasar parámetros).

En este momento, es muy conveniente utilizar los parámetros posicionales de empaquetado o los parámetros de palabras clave de empaquetado para la transferencia de parámetros.

Cuando una función pasa variables, hay dos formas: una es los parámetros posicionales y la otra es los parámetros de palabra clave. De manera similar, también hay dos formas para los parámetros con longitudes variables.

1. Entrega de la ubicación de la parcela

def user_info(*args):
	print(args)
user_info('TOM')
user_info('TOM', 20)
user_info('TOM', 20, '男')

La salida del programa:

('TOM',)
('TOM', 20)
('TOM', 20, '男')

Nota: Todos los parámetros pasados ​​serán argsrecopilados por variables. Se fusionarán en una tupla ( tuple) de acuerdo con la posición del parámetro pasado, que es un argstipo de tupla , que es la transferencia de la posición del paquete.

2. Entrega de la llave del paquete

def user_info(**kwargs):
    print(kwargs)
# {'name': 'TOM', 'age': 18, 'id': 110}
user_info(name='TOM')
user_info(name='TOM', age=18)
user_info(name='TOM', age=18, id=110)

La salida del programa:

{
    
    'name': 'TOM'}
{
    
    'name': 'TOM', 'age': 18}
{
    
    'name': 'TOM', 'age': 18, 'id': 110}

En resumen: ya se trate de transferencia de ubicación de paquete o transferencia de palabra clave de paquete, es un proceso de agrupación de un paquete.

6. Desembalaje

1. Desembalaje: tuplas

def return_num():
	return 100, 200 #这种形式默认返回的是元组
num1, num2 = return_num()
print(num1) # 100
print(num2) # 200

2. Desembalaje: Diccionario

Desempaquete el diccionario y obtenga la clave del diccionario

dict1 = {
    
    'name': 'TOM', 'age': 18}
a, b = dict1
# 对字典进行拆包,取出来的是字典的key
print(a) # name
print(b) # age
print(dict1[a]) # TOM
print(dict1[b]) # 18

La salida del programa:

name
age
TOM
18

3. Intercambiar valores de variables

a,b = 1,2
print(a)
print(b)

a,b = b,a
print(a)
print(b)

Salida del programa:

1
2
2
1

7. Cita

1. Conoce las referencias

En Python, los valores se pasan por referencia.
Podemos usar id()para determinar si dos variables se refieren al mismo valor.
Podemos entender el valor id como la identificación de la dirección de esa parte de la memoria.

# 1. int类型
a = 1
b = a
print(b) # 1
print("id(a):", id(a))
print("id(b):", id(b))

a = 2
print(b) # 1,说明int类型为不可变类型

print("id(a):", id(a))
print("id(b):", id(b))

La salida del programa:

1
id(a): 2305065249072
id(b): 2305065249072
1
id(a): 2305065249104
id(b): 2305065249072

El comienzo de ayb son la misma dirección, también puede ver en la impresión que el valor de b es 1, y luego se ejecuta a = 2después de que el original no está de acuerdo con el valor lógico de b debe ser 1, porque representan el misma pieza de área de memoria. Pero luego, se puede ver en la impresión que las direcciones de ayb son diferentes.

2. Lista de referencias

# 2. 列列表
aa = [10, 20]
bb = aa

print(id(aa))
print(id(bb))

aa.append(30)

print(bb) # [10, 20, 30], 列列表为可变类型
print(id(aa))
print(id(bb))

Salida del programa:

3066822266688
3066822266688
[10, 20, 30]
3066822266688
3066822266688

8. Cotizar como parámetro real

def test1(a):
    print(a)
    print("before a += a, id(a):", id(a))


    a += a
    print(a)
    print("after a += a,id(a):", id(a))

# int:计算前后id值不不同
b = 100
print('id(b):', id(b))
test1(b)

# 列列表:计算前后id值相同
c = [11, 22]
print('id(c):', id(c))
test1(c)

Salida del programa:

id(b): 2453566281168
100
before a += a, id(a): 2453566281168
200
after a += a,id(a): 2453566284432
id(c): 2453567835904
[11, 22]
before a += a, id(a): 2453567835904
[11, 22, 11, 22]
after a += a,id(a): 2453567835904

La primera es la variable entera b = 100, la dirección de b es 2453566281168, antes de que se 2453566281168ejecute a + = a, la dirección de a es , después de la ejecución, la dirección de a se convierte en2453566284432

Pero la lista no cambió la dirección.

9. Tipos mutables e inmutables

El llamado tipo variable y tipo inmutable se refieren a: los datos se pueden modificar directamente, si se pueden modificar directamente, entonces es variable, de lo contrario es inmutable

  • Tipo variable
  1. Lista de columnas
  2. diccionario
  3. colocar
  • Tipo inmutable
  1. Entero
  2. Punto flotante
  3. Cuerda
  4. Tupla

Supongo que te gusta

Origin blog.csdn.net/sgy1993/article/details/115015565
Recomendado
Clasificación