zoukankan      html  css  js  c++  java
  • 形参

    '''
    形参种类:
    1)位置形参
    -- 普通位置形参
    -- 默认值形参
    -- 可变长位置形参

    2)关键字形参
    -- 有默认值关键字形参
    -- 无默认值关键字形参
    -- 可变长关键字形参
    '''


    def fn1(a, b, *, x, y):
    pass


    # fn1()
    # 位置形参与关键字形参的分水岭 *

    # 重点:
    # 位置实参只能给位置形参进行传值
    # fn1(10, 20, 30, 40) # 只有两个位置,给了四个位置
    # 关键字实参可以给位置形参与关键字形参进行传值
    # fn1(x=30, y=40, a=10, b=20)



    # part2
    # 两个带默认值的形参
    def fn2(a=10, *, x=20):
    print(a, x)
    fn2(100, x=200)
    # 总结:
    # 1.有默认值的参数可以不用传值
    # 2.*前有默认值的叫默认值参数,属于位置形参,可以被位置及关键字实参进行传值
    # 3.*后有默认值的叫有默认值的关键字形参,属于关键字形参,只能被关键字实参进行传值

    # def get_p(name, sex='男'):
    # pass
    # get_p('Bob', '女')


    # part3
    def fn3(a, b=10, *, x, y=20, z):
    print(a, b, x, y, z)
    fn3(100, x=200, z=300)
    # 总结:
    # 1.没有默认值的必须传参,有默认值的可以传也可以不传
    # 2.位置有值的必须出现在无值之后,关键字顺序不做要求

    # part4
    def fn4(a, b=10, *args, x, **kwargs):
    print(a, b, x)
    print(args)
    print(kwargs)
    fn4(10, 20, 30, x=100, y=200, z=300)
    # 总结:
    # 1.可变长是用来接收未接收完的值(接收0到n个):
    # -- *args用来接收所以没有接收完的位置(只能接收位置实参)
    # -- **kwargs用来接收所以没有接收完的关键字(只能接收关键字实参)
    # 2.*args必须出现在所以位置参数之后,**kwargs必须出现在所以参数之后

    # 假设第一个位置永远是参数name
    def func4(*args, **kwargs):
    name = args[0] # 将name抽出来

    def func44(name, *args, **kwargs):
    # name 可以直接接收,省了抽出来的过程
    pass



    # part5
    def fn5(*args, **kwargs):
    print(args, kwargs) # args=(10, 20) kwargs={'x': 100, 'y': 200}

    def fn55(*args, **kwargs):
    print(args, kwargs) # args=(10, 20) kwargs={'x': 100, 'y': 200}
    fn5(*args, **kwargs) # *args就会把元组打散传递,**kwargs就会把字典打散传递

    fn55(10, 20, x=100, y=200)

    # 容器类型可以打散传值
    def temp(*args, **kwargs):
    print(args, kwargs)
    ls = [1, 2, 3, 4, 5]
    dic = {'a': 1, 'b': 2}
    temp(*ls, **dic)
  • 相关阅读:
    企业级应用TOMCAT
    HTTP服务及状态码
    Zabbix服务网页报错汇总
    spring aop 嵌套方法注解不生效
    oracle数据库密码修改和解锁
    redis安装
    docker简介
    ffmpeg简介
    JAVA学习笔记之变量
    JAVA学习笔记之类和对象
  • 原文地址:https://www.cnblogs.com/qiangyuzhou/p/10787374.html
Copyright © 2011-2022 走看看