zoukankan      html  css  js  c++  java
  • python 函数参数

    函数参数

    函数的参数可以分为实参和形参

    实参:调用函数,在括号内传入的实际值,值可以为常量、变量、表达式或三者的组合。

    形参:定义函数,在括号内声明的变量名,用来接受外界传来的值

    注:形参随着函数的调用而产生,随着调用结束而销毁

    实参:

    分为位置实参和关键字实参

    • 位置实参:不用明确形参名的传参方式,一定要按照位置给形参传值。
    • 关键字实参:必须明确形参名字与值为形参传值,可以不用按照位置来传值。

    注:混用
    1.关键字实参必须出现在位置实参后
    2.多个位置实参还是按照位置传参
    3.关键字实参为没有从位置实参拿到值的形参传值,可以不用按照指定顺序

    def fn2(a,b,c,d,e,f):
    	print(a,b,c,d,e,f)
    fn2(10, 20, 30, e=100, f=500, d=200)
    

    形参:

    包含位置形参、默认形参、可变长形参、关键字形参

    • 位置形参

    位置形参可以由 位置实参关键字实参 来传值

    # positional argument
    def fn(a, b, c):
        print(a, b, c)    
    fn(10, 20, 30)
    fn(a=10, b=20, c=30)
    
    输出:
    10 20 30
    10 20 30
    
    • 默认形参

    默认形参可以由 位置实参关键字实参 来传值,还可以不用传值(采用自身默认值)

    def fn(a=10,b=20):
        print(a, b)
    # 默认形参可以由位置实参与关键字实参来传值,还可以不用传值(采用自身默认值)
    fn()
    fn(20, 30)
    fn(a=200, b=300)
    fn(100)  # 就给a传
    fn(b=100)  # 就给b传
    
    输出:
    10 20
    20 30
    200 300
    100 20
    10 100
    

    混用时位置形参与默认形参同时存在,默认形参必须在后。位置形参必须传值,默认形参分情况传值

    # 位置形参与默认形参同时存在,默认形参必须在后
    def fn1(a,b,c=10,d=20):
        print(a, b, c, d)
    fn1(100, 200, d=1000)
    
    输出:
    100 200 10 1000
    
    
    • 可变长形参

    可变长形参会以 元组 形式接受 位置形参与默认形参未接受完的 所有传入的位置实参,用索引来取第几个。可变长形参只能由位置实参来传值

    # 可变长形参只能由位置实参来传值
    def fn(a, b=10, *args):
        print(a, b)
        print(args)
    fn(1, 20, 100, 200) # 1给a  20给b,不能用b=20传  100,200给args            
    输出:
    1 20
    (100, 200)
    

    小细节:可变长形参只能接受位置实参的值,位置实参还必须在关键字实参前,导致默认形参只能由位置实参来传值

    • 关键字形参

    关键字形参就是出现在 ***** 之后的形参
    可变长关键字形参:用来接收没有被关键字形参接收完的关键字形参,也只能由关键字实参来传值,并且是用字典来存放数据

    # 前提:出现在 * 之后的形参
    def fn(a, b=10, *, c, d=20, e)pass
    c,d,e都是出现在*之后,都是关键字形参,由于必须由 关键字实参 来传值,没有顺序的强行要求
    
    # 可变长关键字形参:用来接收没有被关键字形参接收完的关键字形参,也只能由关键字实参来传值
    # 用字典来存放数据
    def fn(**kwargs):
        print(kwargs)
    fn(a=10,b=20)  # {'a': 10, 'b': 20}
    dic = {'x': 100, 'y': 200}
    fn(**dic)  # {'x': 100, 'y': 200}
    
    输出:
    {'a': 10, 'b': 20}
    {'x': 100, 'y': 200}
    

    函数参数总结:

    def fn(a, b, c=10, *args, d, e=20, f, **kwargs):
        pass
    

    位置形参:a、b
    默认形参:c
    可变长位置形参:args
    无初值关键字形参:d、f
    有初值关键字形参:e
    可变长关键字参数:kwargs

    1.位置形参与默认形参: 能用 位置实参 关键字实参 传值
    2.可变长位置形参:只能 位置实参 传值
    3.所以关键字形参:只能 关键字实参 传值

  • 相关阅读:
    对于Python中self的看法
    SpringBoot整合MyBatis-Plus快速开始
    Hive原理--体系结构
    Docker Compose + Traefik v2 快速安装, 自动申请SSL证书 http转https 初次尝试
    记录:更新VS2019后单元测试运行卡住无法运行测试的问题。
    黑帽来源页劫持代码以及如何防范
    OFFICE 2010 每次打开提示安装的问题
    Mssql 查询某记录前后N条
    验证邮箱正则表达式,包含二级域名邮箱,手机号正则表达式支持170号段
    删除TFS上的团队项目
  • 原文地址:https://www.cnblogs.com/linwow/p/10693787.html
Copyright © 2011-2022 走看看