Python中的参数

Python中的参数

  • 注:形参与实参不在讲解,住哟啊讲解动态参数;

1、默认参数

  • def func(a,b=10)
    	print(a,b)
        
    #传入参数的时候b可以不写,默认是10,也可以传入
    

2、动态参数

  • 定义一个函数,不知道需要多少个参数

2.1 *args

  • *,只要是以*开头即可,只是约定俗成写成*args

  • 传参是要按照位置传参

  • args在函数内部是一个元组

    def func(*args):
        print(args)
    # 只能按位置传参
    func(11,22,33)
    func(1)
    func()
    

    image-20211123145027280

2.2 **kwargs

  • **,只要是以**开头即可,只是约定俗成写成**kwargs

  • 只能按照关键字传参

  • kwargs在函数内部是一个字典

  • 不传入就是空字典

    def func2(**kwargs):
        print(kwargs)
    # 关键字传参    
    func2(name="hello",age=18)
    

    image-20211123145837758

2.3 *args 和 **kwargs

  • 即可以按照位置传参,也可以按照关键字传参,使用较多 ;

  • kwargs要在·args后面

    def func3(*args,**kwargs):
        print(args,kwargs)
    func3(1,2,3,4,5,name="zqbj",age="20")#关键字传参在位置参数后面
    

    image-20211123150400106

  • 注意:传参的时候一旦前面的参数使用了关键字传参,后面的参数必须使用关键字传参,不能再使用位置传参,因此都是,位置传参在前面,关键字穿在在后面

2.5 format内部原理

v1="我叫{},今年{}".format("zqbj",18)
v2="我叫{},今年{age}".format("zqbj",age=19)
print(v1,v2)

image-20211123150908230

注:内部使用的是*args**kwargs进行的传参;

2.6 实参的动态参数

  • image-20211123154232270

  • def func3(*args,**kwargs):
        print(args,kwargs)
    # 动态传参
    func3(*[1,2,3])
    func3(**{"a":1,"b":2})
    

    image-20211123155446777

  • 补充上次的动态使用Sql

    image-20211123160130703

3、注意事项

  • 参数和动态参数使用时,动态参数只能放在最后
    def func(a,**kwargs)
    	pass
    
  • 默认参数和动态参数同时存在
    • 默认参数要在**kwargs前面即可;(使用较少)

4、坑(后两个为面试题)

  • 默认参数是可变类型的时候函数内存会维护默认内存不清空,如果连续使用请注意避坑;

  • image-20211123152410126

  • image-20211123152851776

  • image-20211123153321119

posted @ 2021-11-23 16:02  紫青宝剑  阅读(70)  评论(0编辑  收藏  举报