python函数

函数简介

# 函数,就是把一串代码封装起来,要用的时候再去调用它

 

函数的定义:

将一组代码的集合通过一个名字(函数名)封装起来,想要执行这个函数(内部的代码),只需要调用函数名即可

如果函数的代码没有调用,那么函数的代码完全可以不用看

 

函数需要注意的地方:

先定义,后调用,定义了的函数可以在任意位置调用

函数的调用:函数名加括号

 

函数名:

是个内存地址,拿着这个地址去寻找那个代码块,然后执。就类似于变量名,

函数名可以当作变量名来看,

 

函数的返回值:

# 如果外部的代码需要获取函数的返回值

# 函数内要想返回给值给调用者,那必须要用关键字return

# 如果函数中没有return 那么他就会返回None

 

return 有五种情况:

1: 不写return。# 不写return,返回值是None(None表示什么都没有)

def func():
  print('123')
res
= func() print(res) >>> None

 

2:只写return, # 用于直接结束函数运行,返回也是Non

def func():
    while True:
        print('111')
        return
        print('222')

res = func()
print(res)

>>>

111

 

 

3:写return None # 和上面的只写return 一样的,

def func():
    return None

res = func()
print(res)

>>>

None

 

 

4: 写return,返回一个值,这个值可以是python中的任意数据类型

 

def func():
    return 123

res = func()
print(res)

>>>

123

 

   

5: 写return,返回多个值,它会将多个元素打包成元组返回

def func():
    return 1,'2',[3,'4'],{'name':'cly','passwd':'1234'}

res = func()
print(res)

>>>

(1,'2',[3,'4'],{'name':'cly','passwd':'1234'})

 

 

'''

1:为什么要返回元组:

因为元组不能被修改,返回援助保证了,返回值没有被修改

2:如何不返回元组:

用列表括起来。因为列表就是单一的元素

'''

 

 

函数的参数:

def func(): # 不需要参数 def func(args): # 需要一个参数

 

# 函数参数分为两大类型(形参,实参)

 

形参:

# 用于标记函数需要一个参数,但参数不需要指定参数是什么

在函数的定义阶段,括号内写的变量名,叫做形式参数,又称为性参

 

实参:

# 需要调用函数的时候,需要有确定的值

函数的调用截断,括号内实际传入的值,叫做实际参数,又称为实参

 

 

 

主要:这些变量就只是在函数内部使用,在外部是不存在的,无法使用

 

传参:

位置参数:(一一对应)

实参通过按照顺序的方式对实参进行传参,实参必须对应形参,不能多,也不能少了,不然就会报错

def func(x,y):

print('x{},y{}'.format(x,y))

res = func(1,2)

print(res)

>>>

x1,y2

 

关键字传参:(用关键字进行传参)

实参通过形参中的关键字进行传参

def func(x,y):

print('x{},y{}'.format(x,y))

res = func(x=1,y=2)

print(res)

>>>

x1,y2

 

关键字传参可以和位置参数混合传参,但位置传参必须要在关键字传参的前面,而且同一个形参不能被多次传参

 

def func(x,y,z):

print('x{},y{},z{}'.format(x,y,z))

func(1,y=2,z=3)

>>>

x1,y2,z3

 

默认值参数:

在函数的定义阶段,形参就被直接赋值了。

在调用的时候可以不用给有默认值的形参赋值,它可以直接使用默认值

在调用的到时候,如果给默认值传了参,那么就会直接使用传入的实参

 

可变长参数:

# 站在调用函数传递实参的角度 实参的个数不固定的情况

# 也就意味形参也得不固定

# 站在形参的角度 可以用*和**来接收多余的(溢出的)位置参数和关键字参数

 

*args:

可以接收多个值,只能收到位置参数,会把收到的值变成元组的形式

如果没有传值,那么他就是一个空元组

如果只传入了一个值的话,他也会吧那个值组成元组

 

 

**kwargs:

可以接收多个值,只能收到关键字参数,他会把关键字参数变成字典

如果没有传值,那么他就是一个空字典

如果只传入了一个值的话,他也会吧那个值组成字典

posted @ 2019-07-09 21:19  Pscly  阅读(96)  评论(0编辑  收藏  举报