• 函数1


    一、函数的使用

    1. 定义

      def 函数名(param1、param2……):
         """
         :param1:参数1
         :param2:参数2
         :return:返回值
         """
         code 1
         code 2
         code 3
         ...
         return 返回值
      

      函数在定义阶段只检测语法,不会报错

    2. 调用

      函数名(param1, param2)
      

    二、定义函数的三种形式

    1. 无参函数

      def func():
          print('hello byx')
          
      func()  # hello byx
      
    2. 有参函数

      def sum_self(x, y):
          """求和"""
          res = x+y
          print(res)
      
      sum_self(1,2)  # 3
      
    3. 空函数

      def func():
          pass
      

    三、函数的返回值的特点

    1. return是一个函数结束的标志,函数内可以由多个return,只要执行到return,函数就会结束。
    2. return的返回值可以返回任意数据类型
    3. return的返回值无个数限制,即可以使用逗号隔开返回多个值
      • 0个:返回None
      • 1个:返回值是该值本身
      • 多个:返回值是元祖

    四、函数的参数

    1. 形参和实参

      • 形参

        # 在函数定义阶段括号内定义的参数,称之为形式参数,简称形参,本质就是变量名。
        def func(x, y):
            print(x)
            print(y)
        
      • 实参

        # 在函数调用阶段括号内传入的参数,称之为实际参数,简称实参,本质就是变量的值。
        func(1, 2)
        
    2. 位置参数

      • 位置形参

        • 定义:在函数定义阶段,按照从左到右的顺序依次定义的形参
        • 特点:按照位置定义的形参,都必须被传值,且不能多不能少
        def func(x, y):
            print(x)
            print(y)
        
      • 位置实参

        • 定义:在函数调用阶段,按照从左到右的顺序依次定义的实参,称之为位置实参。
        • 特点:按照位置为对应的形参依次传值。
        func(1, 2)
        
    3. 关键字实参

      • 定义:在调用函数时,按照key=value的形式为指定的参数传值,称为关键字实参。

      • 特点:可以打破位置的限制,但仍能为指定的形参赋值。

      • 注意

        • 可以混用位置实参和关键字实参,但是位置实参必须在关键字实参的左边。
        • 可以混用位置实参和关键字实参,但不能对一个形参重复赋值。
        func(x, y=2)
        func(y=2, x)  # SyntaxError: positional argument follows keyword argument
        func(x, x=1)  # NameError: name 'x' is not defined
        
    4. 默认形参

      • 定义:在定义阶段,就已经被赋值

      • 特点:调用时可以不用为其赋值

      • 注意:

        • 位置形参必须放在默认形参的左边。
        • 默认形参的值只在定义阶段赋值一次,也就是说默认参数的值在函数定义阶段就已经固定了。
        def func(x, y=10):
            print(x)
            print(y)
            
        func(2)
        

    五、可变长参数

    1. 可变长形参之*

      # 形参中的*会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给*后的参数。需要注意的是:*后的参数名约定俗成为args。
      
      def sum_self(*args):
          res = 0
          for num in args:
              res += num
          return res
      
      
      res = sum_self(1, 2, 3, 4)
      print(res)
      
      10
      
    2. 可变长实参之*

      # * 实参中的*,*会将*后参数的值循环取出,打散成位置实参。以后但凡碰到实参中带*的,它就是位置实参,应该马上打散成位置实参去看。
      
      def func(x, y, z, *args):
          print(x, y, z, args)
      
      
      func(1, *(1, 2), 3, 4)
      
      1 1 2 (3, 4)
      
    3. 可变长形参之**

      # 形参中的**会将溢出的关键字实参全部接收,然后存储字典的形式,然后把字典赋值给**后的参数。需要注意的是:**后的参数名约定俗成为kwargs。
      
      def func(**kwargw):
          print(kwargw)
      
      
      func(a=5)
      
      {'a': 5}
      
    4. 可变长实参之**

      # 实参中的**,**会将**后参数的值循环取出,打散成关键字实参。以后但凡碰到实参中带**的,它就是关键字实参,应该马上打散成关键字实参去看。
      
      def func(x, y, z, **kwargs):
          print(x, y, z, kwargs)
      
      
      func(1, 3, 4, **{'a': 1, 'b': 2})
      
      1, 3, 4, {'a': 1, 'b': 2}
      
    5. 命名关键字形参

      • 定义:在函数定义阶段,*后面的参数都是命名关键字参数。
      • 特点:在传值时,必须按照key=value的方式传值,并且key必须命名关键字参数的指定的参数名。
      def register(x, y, **kwargs):
          if 'name' not in kwargs or 'age' not in kwargs:
              print('用户名和年龄必须使用关键字的形式传值')
              return
          print(kwargs['name'])
          print(kwargs['age'])
      
      
      register(1, 2, name='nick', age=19)
      
  • 相关阅读:
    Python学习——初识类与对象
    用Python代码实现贪心问题:最优合并问题、程序存储问题、最优服务次序问题
    爬虫解析库:XPath
    python基础学习之 模块导入
    python 数据结构
    深入理解vue中的slot与slot-scope
    BeanFactory和FactoryBean的区别简介
    Spring Boot 使用Caffeine缓存
    冒泡算法和递归算法demo
    AJPFX总结方法的特点
  • 原文地址:https://www.cnblogs.com/binyuanxiang/p/11550356.html
Copyright © 2020-2023  润新知