zoukankan      html  css  js  c++  java
  • 函数-参数(可变参数&关键字参数)

    一个*,会把输入参数打包成一个tuple

    两个*,会把输入参数打包成一个字典

     1 """
     2 可变参数
     3 """
     4 
     5 
     6 def add(*args):
     7     print(args)
     8 
     9 
    10 add()  # 空元组
    11 add(1)  # (1,)
    12 add(1, 2, 3)  # (1, 2, 3)

     可变参数求和(开发过程中,如果参数个数不确定的情况下)

    调用函数,就是找到def定义的那块内存,想办法往里面传值。

    系统只要看到*args,系统底层就提前把容器(元组)准备好,如果里面有元素,就将元素装进容器中

     1 """
     2 可变参数求和
     3 调用函数,就是找到def定义的那块内存,想办法往里面传值
     4 系统只要看到*args,系统底层就提前把容器(元组)准备好
     5 如果里面有元素,就将元素装进容器中
     6 """
     7 
     8 def add(*args):
     9     sum = 0
    10     if len(args) > 0:
    11         for i in args:
    12             sum += i
    13         print("累加和是,sum:", sum)
    14     else:
    15         print("没有元素可计算,sum:", sum)
    16 
    17 
    18 add()
    19 add(1,)
    20 add(1, 2, 3)

     当可变参数搭配固定参数时

     1 """
     2 可变参数搭配不可变参数时,可变参数一定要放在固定参数后面
     3 """
     4 
     5 
     6 def add(name, *args):  # name, *args = "小王", 1, 3, 4
     7     sum = 0
     8     if len(args) > 0:
     9         for i in args:
    10             sum += i
    11         print("%s累加和是:sum:%s" % (name, sum))
    12     else:
    13         print("没有元素可计算:sum:", sum)
    14 
    15 
    16 add("小王", 1, 3, 4)

     可变参数+关键字参数

     1 """
     2 关键字参数:key=value
     3 默认情况下,按顺序依次赋值
     4 """
     5 
     6 
     7 def add(a, b=10):   # 关键字参数,此时的b就是默认值
     8     result = a + b
     9     print(result)
    10 
    11 
    12 add(5)
    13 add(3, 7)
    14 add(3, b=7)   # 此时7就会覆盖b原来的默认值
    15 
    16 print("=========================================")
    17 
    18 def add1(a, b=10, c=4):
    19     print(a, b, c)
    20     result = a + b + c
    21     print(result)
    22 
    23 
    24 add1(1)
    25 add1(1, 3)  # 给b赋值3,默认3是赋值给b的
    26 add1(1, c=6)  # 如想要将6赋值给c,则需要结合关键字的key使用

     **kwargs

    1 """
    2 只要看到**,系统就自动准备一个字典
    3 """
    4 def func(**kwargs):
    5     print(kwargs)  # 默认转成字典保存
    6 
    7 
    8 func(a=1, b=2, c=3)  # 关键字参数

     

  • 相关阅读:
    关于前端框架讨论的链接
    和BEM的战斗:10个常见问题及如何避免
    BEM —— 源自Yandex的CSS 命名方法论
    JavaScript 语句后应该加分号么?
    彻底搞懂word-break、word-wrap、white-space
    ios UIImageWriteToSavedPhotosAlbum报错 NSPhotoLibraryAddUsageDescription
    Emmet使用手册
    vue-cli入门之项目结构分析
    ios移动端原生滚动条滚动不灵敏问题
    ios点击事件失效
  • 原文地址:https://www.cnblogs.com/GumpYan/p/12293999.html
Copyright © 2011-2022 走看看