• 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

  • 相关阅读:
    ASP.Net Core -- 模型验证
    C# -- nameof什么意思?
    C# -- value是什么意思?
    C# -- 异常(二)
    C# -- 异常(一)
    C# -- 委托(二)
    C# -- 委托(一)
    ASP.Net Core -- Controller返回View
    ASP.Net Core -- 中间件
    ASP.Net Core -- 服务注册和管道
  • 原文地址:https://www.cnblogs.com/Blogwj123/p/15593648.html
Copyright © 2020-2023  润新知