El uso básico de la función del décimo día.

¿Qué es una función
ps: una función es un contenedor para contener código

Un contenedor con una función determinada ------ "Función
, el proceso de preparación de la herramienta primero -------" La definición de la función,
solo úsela cuando se encuentre con el escenario de la aplicación ----- - "La llamada de la función

Entonces, el principio de uso de la función:
definir primero y
luego llamar

Por qué utilizar funciones:
resuelva los siguientes problemas:
1. La organización del código no es clara y la legibilidad es deficiente
2. La escalabilidad es deficiente

Cómo utilizar las funciones

定义的语法:
	def函数名(参数1,参数2,参数3,....)
	    "函数的文档注释”
	    代码1
	    代码2
	    代码3
	    return  返回值
 

Definir función

发生的事情
1.申请内存空间把函数体代码放进去
2.将函数内存地址绑定给函数名
强调:定义的函数只检测语法,不执行代码
def login():             #login = 函数的内存地址
    print(111)
    print(222)
    print(333)
print(login)      #<function login at 0x00EB8268>

x=10                   #x = 10的内存地址
print(x)           #打印出来的是x的值,python解释器会自动把变量名的值取出来返回给我们
本质上函数民跟变量名都是一样的,不过函数定义后我们主要是为了调用函数的功能,运行代码
变量名定义后,我们主要是想通过变量名取出变量值

Funciones de llamada:

发生的事情:
先通过函数名定位到函数的内存地址
函数的内存地址()-》触发函数体代码的运行
强调:调用函数才会执行函数体代码
longin 函数名指向函数的内存地址,()指向执行函数的代码

Definir las tres formas de
funciones sin parámetros

def func():
    print(“xxxx”)

func()
函数体代码不需要外部传值的是无参函数
案例1
def say():
    print("===========")
	print("welcome to here")
    print("=========")
say()
案例2
def login():
    name=input("username").strip()
    pwd=input("password").strip()
    if name =="nana"and pwd=="123":
        print("pass")
    else:
        print("fail")

Función de parámetro

def func(x):
	print(x)

func(1111
函数体代码需要外部传值的是有参函数
案例1
def max2(x,y):
    if x>y:
        print(x)
    else:
        print(y)
max2(10,20)

Función vacía

def login():
    pass
作用:刚开始写函数的时候用来搭函数的架构

Tres formas de funciones de llamada

语句
len(“hello”)

表达式
res=len(“hello”)*10
print(res)     # 50

可以当做参数传给另一个函数
print(len(“hello”))    #5

有返回值的一般都会在表达式里面做赋值运算
没有返回值的一般都会直接调一下语句形式

Los parámetros de la función se dividen en dos categorías:
Parámetros formales : los parámetros especificados entre paréntesis durante la fase de definición de la función se denominan parámetros formales, o parámetros formales para abreviar: "Nombre de la variable y
parámetros reales : pasados ​​entre paréntesis durante la fase de llamada de la función Valor, llamado parámetro actual, referido como parámetro actual - "valor variable

形参与实参的关系是:
在调用函数时,实参值会绑定给形参名,在函数调用完毕后解除绑定
def func(x,y):      #形参
    # x = 111 
    # y = 222
    print(x,y)

m=111
n=222
func(m,n)      #实参

Clase de parámetro formal

Parámetros posicionales : al definir una función, los nombres de variables definidos en orden de izquierda a derecha se denominan parámetros posicionales

特点:每次调用,必须被赋值
def func(x,y):
	print(x)
	print(y)
	
func(123) #报错,值多了一个
func(1)     #报错,少了一个值

Parámetro predeterminado : cuando se define la función, un valor ya está asignado a un parámetro, que se denomina parámetro predeterminado

特点:调用函数时,可以不用为其赋值
def func(name,age=18):
	print(name)
	print(age)
func(“nana”)
func(“nana”,19)           #打印结果为nana  19 默认参数可以为其赋值,也可以不为其赋值
注意:可以混用位置形参与默认形参,但是
 1.位置形参必须在前面
 2.默认形参的值通常时不可变类型
 3.默认形参的值时在函数定义阶段赋值的
def func(age=18,name):
	print(name)
	print(age)
案例1
def func(name, hobby, hobbies=None):
    if hobbies is None:
        hobbies = []
    hobbies.append(hobby)
    print("%s的爱好是%s" % (name, hobbies))

func("nana", "read")                      #nana的爱好是['read']
func("tom", "play")                        #tom的爱好是['play']
func("jack", "music")                     #jack的爱好是['music']
func("lili", "eat", ["moive"])             #lili的爱好是['moive', 'eat']
案例2
m = 111
def func(x, y, z=m):
    print(x)             #x=1
    print(y)			    #  y=2
    print(z)             #z=111       默认形参的值时在函数定义阶段赋值的


m = 666
func(1, 2)

Serie de parámetros real

Posición de los parámetros reales : al llamar a la función, los valores pasados ​​en orden de izquierda a derecha se denominan posición de los parámetros reales.

特点:按照位置为形参赋值,一一对应
def func(name,age):
	print(name)
	print(age)
func(“nana”,18

Argumento de palabra clave : al llamar a la función, pase el valor en forma de clave = valor, que se denomina argumento de palabra clave

特点:可以打乱顺序,但是依然能够指名道姓的为指定的形参赋值
def func(name,age):
	print(name)
	print(age)
func(age=18,name="nana")

Preste atención cuando el puesto esté realmente involucrado en el uso mixto de palabras clave y argumentos.

1、位置实参必须在关键字实参的前面
2、不能为同一形参重复赋值
案例1
def func(name,age):
	print(name)
	print(age)
 func("egon",age=18)
 func(age=18,"egon")   # 语法错误,位置实参必须在关键字实参的前面


案例2
def foo(x,y,z):
   pass
   
foo(1,y=2,3)                     # y=2关键字形参在位置形参3的前面,所以报错
foo(1,y=2,z=3,x=4)           # 重复赋值x,所以报错

Serie de longitud variable

可变长参数指的是在调用函数时,传入的实参个数不固定,对应着必须有特殊形式的形参来接收溢出的实参
实参无非分为两种形式
溢出的位置实参------->*
溢出的位置关键字实参--------->**

***在形参中应用是一种汇总行为
1.*在形参中的应用,*会溢出的位置实参合并成一个元组,然后赋值给紧跟其后的那个形参名
def func(x, *args):            # args=(2,3,4,5)
    print(x)							#x=1									
    print(args)

func(1, 2, 3, 4, 5)
 
 案例:*args 求和
def my_sum(*args):
    res=0
    for i in args:
        res += i
    print(res)

my_sum(1,2)

** Aplicación en parámetros formales

**会将溢出的关键字实参合并成一个字典,然后赋值给紧跟其后的那个形参名
def func(x, **kargs):    #kwargs={
    
    "a":2,"c":4,"b":3}
    print(x)
    print(**kargs)

func(1, a=2, b=3, c=4)

***在实参中是一种打散行为
*在实参中的应用:*后可以跟可以被for循环遍历的任意类型,*会将紧跟其后的那个值打散或位置实参
def func(x,y,z):
    print(x)
    print(y)
    print(z)

func([11,22,33])   #列表为一个值,会报错
func(*[11,22,33])     #X=11 Y=22 Z=33
func(*"hello")          #字符串值过多,报错
func(*{
    
    "k1":111,"k2":222,"k3":555})       #func("k1","k2","k3"

** Aplicación en parámetros reales

**只能跟字典类型,**会将字典打散或关键字实参
def func(x,y,z):
    print(x)
    print(y)
    print(z)

func(**{
    
    "x":111,"y":222,"z":333})        #func(111,222,333

例:
def index(x,y,z):
     print(x,y,z)

例:
def  index(x,y,z):
	print(x,y,z)
def wrapper(*args,**kwargs):      # args=(1,2,3,4,5,6)         kwargs={
    
    "a":1,"b":2,"c":3}

index(*args,**kwargs)               # index(*(1,2,3,4,5,6),**{
    
    "a":1,"b":2,"c":3})
                                                       index(1,2,3,4,5,6,a=1,b=2,c=3)
wrapper(1,2,3,4,5,6,a=1,b=2,c=3)
wrapper(1,y=2,z=3)
了解:命名关键字形参:***中间的形参称之为命名关键字形参
      特点: 必须按照key=value的形式传值
 def func(x,m=333,*args,y=222,z,**kwargs):
     print(x)
     print(args)
     print(y)
     print(z)
     print(kwargs)

 func(1,2,3,z=4,a=1,b=2,c=3)
 func(1,2,3,4,5,6,7)

detalles de devolución

def max2(x, y):
    if x > y:
        return x
    else:
        return y


res = max2(10, 30)
print(res * 12)           #360

函数可以有多个return,但只要执行依次return,整个函数就立即结束,并且return后的值当做本次调用的结果返回
def func():
    print("=======")       #只能反馈值======111
    return 111
    print("******")
    return 222
    print("-----------")
    return 333


res = func()
print(res)

return后的返回值有三种情况
return值:返回的就是一个值
return1 ,值2 ,值3:返回的是一个元组
def func():
    return  111,"xxx",[22,33]

res=func()
print(res)         #(111, 'xxx', [22, 33])

函数内可以没有return,或者是return None,或者return,默认返回None
def func():
    pass


res = func()
print(res)          #None

执行完函数功能之后想拿函数的值做进一步的出来的时候,需要用到返回值用return

Supongo que te gusta

Origin blog.csdn.net/Yosigo_/article/details/111869959
Recomendado
Clasificación