zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    DateTime的精度小问题
    使用For XML PATH 会影响Cross Apply 返回
    一个update的小故事
    行大小计算测试
    Sql Server 2008R2 遇到了BCP导入各种中文乱码的问题
    php-fpm 启动不了 libiconv.so.2找不到
    Git使用教程
    支付宝接口使用文档说明 支付宝异步通知
    Linux(CentOs6.4)安装Git
    NGINX防御CC攻击教程
  • 原文地址:https://www.cnblogs.com/monologuesmw/p/9575629.html
Copyright © 2011-2022 走看看