函数

一 函数的定义、语法、调用

定义

函数: 对代码块和功能的封装和定义

语法

我们使用def关键字来定义函数, 函数的定义语法:

def 函数名():
    函数体

函数名的命名规则和使用和变量基本一样

函数体:函数被执行之后要执行的代码

调用

使用函数名可以调用函数

写法:函数名()

二 函数的返回值

1.函数遇到return,此函数结束,不再继续执行

2.给函数的调用者一个访问结果

3.函数的返回值可以有多个结果

4.如果不写return,或者return后什么都不写,那么返回None

5.如果返回是多个结果,则调用者会接收一个tuple,可以直接解构成多个变量

三 函数的参数

定义

参数:函数在调用的时候制定具体的一个变量的值,就是参数

语法

def 函数名(参数列表):
    函数体

参数

分类

1.实参

位置参数

按照形参的参数位置, 给形参传值

def yue(chat, address, age): # 形参
    print(chat, address, age)
yue("微信","北京","20")

关键字参数

按照形参的名字给形参传值

yue(chat="微信", age=18, address="北京") # 关键字参数.

混合参数

即用位置参数, 也用关键参数

# 混合参数
yue("微信", age=18, address="上海") # 正确.第一个位置赋值给chat, 后⾯的参数开始
指定关键字.
yue(age="18", "微信", address="广") # 错误, 最开始使用了关键字参数, 那么后⾯的
微信的位置就串了, 容易出现混乱

2.形参

1. 位置参数

按照位置来赋值

def yue(chat, address, age):
    return 0

2. 默认值参数 

在函数声明的时候,就可以给出函数参数的默认值,在调用的时候可以给出具体的值,也可以不给值,使用默认值

def yue(chat, address, age=18):
    return 0

动态参数

1.动态接收位置参数

*args

def chi(*food):
    print("我要吃", food)
chi("米饭", "扬州炒饭")
结果:
我要吃 ('米饭', '扬州炒饭') # 多个参数传递进去. 收到的内容是元组tuple

2.动态接收关键字参数

**kwargs

def func(**kwargs):
     print(kwargs)
func(a=1, b=2, c=3)
func(a=1, b=2)
结果:
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2}

最终顺序(*): 位置参数 > *args > 默认值参数 > **kwargs 

def fun(*args):
    print(args)
lst = [1, 4, 7]
fun(lst[0], lst[1], lst[2])
fun(*lst) # 可以使用*把1个列表按顺序打散
s = "臣妾做不到"
fun(*s) # 字符串也可以打散, (可迭代对象)

在实参位置上给一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散.

在形参的位置上的* 表示把接收到的参数组合成一个元组

如果是一个字典, 那么也可以打散. 不过需要用两个*

def fun(**kwargs):
 print(kwargs)
dic = {'a':1, 'b':2}
fun(**dic)

 

posted @ 2018-08-08 17:27  MAOMAOYUA  阅读(104)  评论(0编辑  收藏  举报