zoukankan      html  css  js  c++  java
  • Python 参数使用总结

    Python 中参数的传递非常灵活,不太容易记住理解,特整理如下备忘:

    普通参数

    即按照函数所需的参数,对应位置传递对应的值,可以对应 Java 中的普通参数

    def max(a, b):
      if a > b:
        return a
      else:
        return b
     
    max(5, 13) # = 13
     

    默认参数

    可以对位置参数中的某个参数设置默认值,设置了默认值的参数在调用时可以不传递

    此时需要注意,默认参数只能在必选参数后面

    def max(a, b=0):
      if a > b:
        return a
      else:
        return b
      
    max(5, 13) # = 13
    max(5) # = 5
    max(-6) # = 0
     

    当有多个默认参数时,调用参数传递的值会按照顺序赋值,也可以通过指定参数值为特定参数赋值

    def position(x, y=1, z=0):
      print('x:', x, 'y:', y, 'z:', z)
      
    position(5) # x=5, y=1, z=0
    position(5, 6) # x=5, y=6, z=0
    position(5, z=6) # x=5, y=1, z=6
     

    可变参数

    即传递的参数个数不确定,可以对应为 Java 中的可变参数,类似传递了一个 list 或 tuple

    可变参数只能出现在必选参数和默认参数后面

    def max(*numbers):
      # 此处可以有更简单的写法
      sum = 0
      for number in numbers:
        sum += number
      return sum
    ​
    sum(1,2,3,4,5) # = 15
    # 对于 list 或 tuple, 如 nums = [1,2,3,4,5], 可以这样使用
    sum(*nums) # = 15
     

    命名关键字参数

    命名关键字有些像普通参数和默认参数的结合,在一个 * 后面的参数为命名关键字参数

    和普通参数、默认参数的区别就是需要在传递参数时指定赋值给的参数名字

    命名关键字参数只能出现在必选参数、默认参数、可变参数后面

    def person1(name, *, age, sex):
      print('name:', name, 'age:', age, 'sex:', sex)
     
    def person1=2(name, *, age=15, sex='F'):
      print('name:', name, 'age:', age, 'sex:', sex)
      
    person1('zhang', age=15, sex='F') # 如果命名关键字参数没有设置默认值,则必须显示给每个参数赋值
    person2('zhang') # 函数中已经对参数设置默认值
     

    如果命名关键字参数前面有可变参数,则可省略 * 号

    # age 和 sex 均是命名关键字参数
    def person(name, *args, age, sex):
      pass
     

    关键字参数

    关键字参数必须出现在必选参数、默认参数、可变参数、命名关键字参数后面

    在可变参数的基础上,即不仅仅可以传递任意个参数,同时还可以对传递的各个参数指定参数名,可以理解为传递了一个 dict

    def person(name, **kw):
      print('name:', name, 'other:', kw)
      
    person('zhang', age=15, sex='M') # name: zhang other: {'sex': 'M', 'age': 15}
    # 对于 dict, 如 p={'age': 15, 'sex':'M'}, 可以这样使用
    person('zhang', **p)
     

    总结一下

    • 普通参数——必选参数

    • 可选参数——参数有默认值,调用函数时可以传递也可以不传递,如果不传递则使用默认值

    • 可变参数——传递数量不确定 (可以为0个) 的参数,类似传递一个 list

    • 命名关键字参数 ——如果设置默认值,则同可选参数,否则必须传递,且传递时指定值对应的参数名

    • 关键字参数——传递数量不确定 (可以为0) 的 键值对,类似传递一个 dict

    在函数中出现的顺序必须和上面的保持一致

     

     参考资料:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000

  • 相关阅读:
    Android 系统开发做什么?
    MySQL索引-B+树
    转:redis雪崩、穿透、击穿
    转:django3上线部署踩得坑
    nginx、uwsgi部署django中session丢失得问题
    类型转换(数字转字符串等)
    JS基础篇1:数据类型(8种)
    css3动画与js动画的区别
    drag拖拽事件
    三栏布局,中间自适应
  • 原文地址:https://www.cnblogs.com/zawier/p/8411053.html
Copyright © 2011-2022 走看看