• 函数(二)- 参数


    函数的参数

    # 需求定义一个函数,给定一个数字,遍历从1到该数字之间的所有数字
    num = int(input("请输入一个整数:"))
    def func(n):
        """打印1,n之间的所有数字"""
        for i in range(1,n+1):
            print(i)
            
    func(num)
    
    
    # 需求定义一个函数,给定两个数字,遍历两个数字之间的所有数字
    def func2(num1,num2):
        """打印num1到num2之间的数字"""
        for i in range(num1,num2+1):
            print(i)
        
     
    func2(10,100)
    
    

    1.位置参数

    实参传递的顺序按照形参定义的顺序进行传递的传参方式

    # 需求定义一个函数,给定两个数字,遍历两个数字之间的所有数字
    def func2(num1,num2):
        """打印num1到num2之间的数字"""
        for i in range(num1,num2+1):
            print(i)
    
    # 位置参数传递
    func2(10,100)
    

    2.关键字参数(函数调用时)

    忽略了原本的位置关系,明确指出形参和实参的对应关系:

    格式:函数名(形参=实参)

    # 需求定义一个函数,给定两个数字,遍历两个数字之间的所有数字
    def func2(num1,num2):
        """打印num1到num2之间的数字"""
        for i in range(num1,num2+1):
            print(i)
        
    # 关键字参数
    func2(num1=10,num2=100)
    func2(num2=100,num1=10)
    

    3.默认参数(定义函数体现)

    在定义函数时,可以对某些形参设定默认值,有默认值的参数,在调用时可以不传入,如果不传入就使用默认值。优先使用传入的值。

    使用场景:某个参数变化比较小,就可以指定一个默认值。

    学过包含默认值的方法:列表中的pop(index),字符串中的stirp()

    # 用户输入个人信息,函数打印个人信息:没有默认值
    def print_info(name,age,gender):
        """打印信息"""
        print(f"我叫{name},我今年{age}岁,我的性别是{gender}。")
        
    print_info('zs', 20, "男")
    print_info('ls', 21, "男")
    print_info('ww', 22, "男")
    print_info('ml', 19, "男")
    
    
    # 用户输入个人信息,函数打印个人信息:使用默认值
    def print_info(name,age,gender="男"):
        """打印信息"""
        print(f"我叫{name},我今年{age}岁,我的性别是{gender}。")
    
    # 不传入包含默认值的参数
    print_info('zs', 20,)
    print_info('ls', 21,)
    print_info('ww', 22,)
    print_info('ml', 19,)
    

    4.可变参数(*args,**kwargs)

    1 在定义函数时,函数参数很多

    2 在定义函数时,不确定函数的数量

    • 元组类型可变参数(*args):只能通过位置参数传递
      def print_info2(*args):
          """介绍个人信息"""
          print(args)
          for i in args:
              print(i)
          
      # 不善言辞
      print_info2()
      
      # 正常
      print_info2('zs',20,180)
      print_info2(name='zs', age=20, height = 180)  # 错误,不能使用关键字方式传递
      
      # 善谈
      print_info2('ls',20,175,70,"郑州","吃")
      
      # 定义元组
      t = (1,4,5,6,7,8,8,9,9,0,0)
      print_info2(t)  # 传入一个元素:把元组当做一个整体
      print_info2(*t)  # 传入多个元素:将元组打散
      
    • 字典类型可变参数(**kwargs)

      只能通过关键字参数方式传递

      def print_info3(**kwargs):
          """介绍个人信息"""
          print(kwargs)
          
      print_info3('zs',20,180)  # 错误
      print_info3(name='zs', age=20, height = 180)  # 正确
      

    定义万能参数

    def func(a, b, c=20, *args, **kwargs):
        print(a,b,c)  # 1 2 34
        print(args)   # (4,)
        print(kwargs) # {name:zs,age:20}
    
    func(1, 2, 34, 4, name='zs', age=20)
    
    
    def func2(a, b, *args,c=20, **kwargs):
        print(a,b,c)  # 1 2 20
        print(args)   # (34,4)
        print(kwargs) # {name:zs,age:20}
    
    func2(1, 2, 34, 4, name='zs', age=20)
    

    总结:

    • 在定义函数时:位置参数-- 默认参数和*args---**kwargs
    • 在调用函数时:位置参数---关键字参数
  • 相关阅读:
    FireFox 中 回把nextSibling为/n 换行时解释为undefinded
    陶哲轩实分析习题18.4.10
    单调可测集的测度运算
    数学分析_Tom Apostol_定理7.47
    Emacs+$\LaTeX$ 帮你写数学文章
    陶哲轩实分析引理18.4.2:半空间是可测集
    陶哲轩实分析习题18.4.10
    陶哲轩实分析引理18.4.2:半空间是可测集
    可测集的性质
    数学分析_Tom Apostol_定理7.47
  • 原文地址:https://www.cnblogs.com/duxiangjie/p/14075995.html
Copyright © 2020-2023  润新知