萌小帅 一路向前

要有朴素的生活和遥远的梦想,不管明天天寒地冻,路遥马亡...^-^...

python 函数篇(1)

CONTENTS

  •  位置参数与关键字参数
    • 函数的声明
    • return的用法
    • 默认参数
    • 注意事项
  • *args 与 **kwargs

 位置参数与关键字参数

 1. 函数的声明

 1 def func1(x, y, z):
 2     '''
 3     func1****函数描述
 4     :param x:   x的声明
 5     :param y:   y的声明
 6     :param z:   z的声明
 7     :return:    返回值的声明
 8     '''
 9     print("x:", x)  # 执行内容
10     print("y:", y)
11     print("z", z)
12     return print("执行完毕")  # 返回内容

函数声明的关键字为def,主要包括四部分:

  • 函数名建立
  • 函数描述(一般写在函数名称下面。当函数名建立好后,有自动的格式生成)
  • 执行内容
  • 返回内容

2. return的用法

在python中,函数体既可以返回值,也可以没有返回值。

return返回时:

  • 可以返回一个值,也可以返回多个值,当返回多个值时,返回的是一个元组
  • 可以返回数字,字符串,列表,字典等多种类型
  • 可以返回函数
  • 当没有返回值时默认为none

3. 注意事项

函数在调用时,既可以使用位置参数进行传参,也可以用关键字参数的形式传参。只要记住“关键字参数不能再位置参数之前”。代码第15行将会报错。

 1 def func1(x, y=2, z=3):
 2     '''
 3     func1****函数描述
 4     :param x:   x的声明
 5     :param y:   y的声明
 6     :param z:   z的声明
 7     :return:    返回值的声明
 8     '''
 9     print("x:", x)  # 执行内容
10     print("y:", y)
11     print("z", z)
12     return print("执行完毕")  # 返回内容
13 func1(1,2,3)
14 func1(1,y=2,z=3)   # 执行效果相同,关键字参数
15 # func1(1,y=2,3)   # 这样写不对,关键字参数不能写在位置参数之前

4. 默认参数

在函数声明时可以设置默认参数,但默认参数应放在最后。默认参数可以不赋值,不赋值将采取默认值,赋值则会替换。

 1 def func1(x, y=2, z=3):
 2     '''
 3     func1****函数描述
 4     :param x:   x的声明
 5     :param y:   y的声明
 6     :param z:   z的声明
 7     :return:    返回值的声明
 8     '''
 9     print("x:", x)  # 执行内容
10     print("y:", y)
11     print("z", z)
12     return print("执行完毕")  # 返回内容
13 func1(1,1,2)
14 func1(1,y=1,z=2)   # 执行效果相同,关键字参数

*args 与 **kwargs

 *args 接受位置参数, 返回的是一个元组

**kwargs 接受关键字参数, 返回的是字典

1. *args

*args可以有赋值,也可以没有赋值,没有赋值返回一个空的元组。

*args的位置必须在位置参数和关键字参数之后,接受除位置参数和关键字参数赋值之外的位置参数,如果接受的参数中包含关键字参数将会报错。

 1 def func1(x, y=2, *args):
 2     '''只有*args'''
 3     print(x)
 4     print(y)
 5     print(args)
 6     return print("执行完毕")
 7 
 8 func1(1)   # 如果y=2想省略赋值, 那么*args便不能再赋值  这时将返回一个空的元组
 9 func1(1, 3, 4, 5, 6)   # 输出的结果是1  3 (4,5,6)
10 func1(1, "圣所", 32, ["lve"], {2:1})  # 这样也可以

2. **kwargs

**kwargs同样也可以有赋值,也可以没有赋值,没有赋值返回一个空的字典

**kwargs的位置必须位于最后(位置参数和关键字参数之后,*args之后)。 接受最后的关键字参数

因为**kwargs返回的是一个字典,而字典由键-值对构成,因此需要关键字参数作为字典的键。

1 def func2(x, y=3, **kwargs):
2     ''' 只有**kwargs  这时便不能再只按位置参数调用'''
3     print(x)
4     print(y)
5     print(kwargs)
6     return print("func2 执行完毕")
7 # func2(1, 2, 3, 4, 5, 6)  # 这时会报错
8 func2(1, y=2, c=3, d=4)   # 必须是关键字参数,因为kwargs 返回的是字典,字典需要有键,所以需要关键字做键

3. *args与**kwargs一起使用时

参数的顺序:位置参数 - 关键字参数 - *args - **kwargs, 之前介绍过,关键字参数不能再位置参数之前。

1 def func3(x, *args, **kwargs):
2     print(x)
3     print(args)
4     print(kwargs)
5     return print("func3 执行完毕")
6 func3(1, 3, 4, 5, z=2)   # 此处的最后不能写x=2

 

posted on 2018-09-03 15:23  墨殇浅尘  阅读(287)  评论(0编辑  收藏  举报

导航