函数的认识

一、函数的定义及调用

  • 1、正常函数定义基本语法

    python中使用def关键词定义函数

    # 定义一个函数
    def 函数名 (形参1, 形参2...):
      ''''
      函数的注释[描述](方便下次查阅)
      '''
      函数体
      return 函数返回值
    
    # 调用函数
    函数名(实参1, 实参2....)
    
  • 2、匿名函数的定义语法(lambda函数)

    # 定义
    z = lambda 形参1, 形参2.... : 返回值
    # 调用
    z(实参1, 实参2)
    
  • 3、函数定义案例

    def foo(num1, num2):
        return num1 + num2
    
    if __name__ == "__main__":
      print(foo(1, 2))
    
  • 4、匿名函数的定义案例

    z = lambda x, y : x + y
    print(z(1, 2))
    

二、函数的调用

函数在调用的时候使用原则:先定义、再调用,没有类似javascript函数声明式中的变量提升特性

  • 1、函数调用的方式主要有
    • 1.直接函数名()
    • 2.高阶函数,把函数作为参数
    • 3.多线程中的调用(在线程篇章会介绍)

三、函数的参数

  • 1、无参函数

    def bar():
        return 'hello'
    
  • 2、固定参数(形参跟实参个数及位置都保持一致)

    def foo(name, age):
        pass
    
    if __name__ == '__main__':
        foo('哈哈', 20)
    
  • 3、可变参数(python中习惯性使用关键词*args)

    可变参数传递到函数中以tuple类型的数据,如果没就是空的tuple

    def foo(*args):
        print(args)
    
    if __name__ == '__main__':
        foo('哈哈', 20)
    
  • 4、关键字参数(python中习惯使用关键词**kwargs)

    关键字参数传递到函数中是以dict的方式展示

    def bar(**kwargs):
        print(type(kwargs))
        print(kwargs)
    
    if __name__ == '__main__':
        bar(name='张三', gender='男', age=20)
    
    # <class 'dict'>
    #{'name': '张三', 'gender': '男', 'age': 20}
    
  • 5、固定参数、可变参数、关键字参数混合使用

    原理:

    • 1.先会把实参不能少于形参固定参数的个数(少于会直接报错)
    • 2.把实参优先给固定参数,多余的给可变参数
    • 3.如果使用了关键词传递的参数就是关键字参数中
    def test(name, age, *args, **kwargs):
        print(name, age)
        print(args)
        print(kwargs)
    
    if __name__ == '__main__':
        test(1, 2, 3, 4, 5, address='广东', mobile = '110')
    
  • 6、默认参数

    上面第五点上写到如果实参少于形参就会直接报错,但是有时候我们可以预先定义默认参数(默认参数必须在最后面)

    def test(name, age=20):
        print(name, age)
    
    if __name__ == '__main__':
        test('哈哈')
    

五、函数的返回值

  • 常规函数的返回值是使用return
  • 如何函数不使用return函数会默认返回一个None的值
  • 生成器函数使用yield例外处理

results matching ""

    No results matching ""