• python 函数参数


    https://www.cnblogs.com/aszeno/p/10384887.html

    https://www.cnblogs.com/aszeno/p/10386149.html

    链接中的文章讲的比较详细,简单概括一下:

    1. 位置参数

    函数调用时必须指定。 可以直接函数调用时给相应的位置赋值,或者通过关键字指定。 必须有实参。

    2. 默认参数

    在函数定义时已经指定了default 值。函数调用时可以不给这个参数赋值。

    函数定义时所有的默认参数都必须在位置参数之后。

    3. 关键字参数

    这是指函数调用时指定了形参名字和实参值。即函数调用是通过argx=xxx 的形式给出。

    4. 可变长度参数(参数组)

    在函数定义时

    *args 表示tuple 类型参数组。 但不表示调用时的参数为tuple, 只是表示调用时的参数格式为 argx,argy

    **kwargs 表示字典类型参数组。但不表示调用时的参数要为dict. 只是表示调用时参数格式为  argx=xx,argy=yy

     函数调用时,

    如果实参是tuple ,要将tuple 中的item 变成函数的可变参数,那么需要在tuple 前面加上*

    如果实参是dict, 要将dict 中的item 变成函数的关键字参数,那么需要在dict 前面加上**

    也就是说可变参数在调用时有两种方式:

    可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));

    关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。

    注意:

    函数定义时,可变长度参数必须在位置参数和默认参数之后。且字典类型的参数组必须是最后一个。

    5. 列表/元组/字典 可以作为函数的参数(因为他们都是对象,对象可以作为单个变量传递给函数的)

    当他们作为函数参数的时候 只能表示 函数的一个参数,而不是一组参数。在函数中可以对列表和字典的值进行修改。而且这种修改会让输入变量的值永久改变。

     如果要禁止函数修改列表的值:

    #禁止函数修改列表
    print_models(unprinted_designs[:],completed_models)
  • 相关阅读:
    转发与重定向的区别
    Servlet开发详讲
    Servlet的常见错误
    HTTP请求方式之POST和GET的区别
    Spring各种类型数据的注入
    Spring容器的基本使用
    Python接口自动化-测试用例编写
    Python接口自动化-设计测试用例
    python简明教程之数据结构(列表、元组、字典、集合)
    python简明教程之函数
  • 原文地址:https://www.cnblogs.com/flymood/p/12290433.html
Copyright © 2020-2023  润新知