函数的基本内容总结

函数
 函数是对功能的封装
 语法:
     def函数名(形参列表)
        函数体(代码块,return)

 调用:函数名(实参列表)

2,返回值
  return: 在函数执行的时候,如果遇到return,直接返回
  1,如果函数什么都不写,不写return,就没有返回值,得到的是none
  2,在函数中间或者末尾写return,返回的是none
  3,在函数中写return 值,返回一个值
  4,在函数中可以返回多个返回值,return 值1,值2,值3...,接收的是元组

3,参数
  参数执行的时候给参数传递信息
  *形参:函数声明的位置的变量
  *实参:函数调用的时候给的具体的值
  传参:把实参交给形参的过程

  1,实参:
    位置参数:按照形参的参数位置,给形参传值
    关键字参数:按照形参的名字给形参传值
    混合参数:既用位置参数,也用关键参数
  2,形参:
    位置参数
    默认值参数: 先位置参数,后默认值参数
    动态参数
1,函数的动态参数
  1, *args  位置参数动态传参
  2, *kwargs  关键字参数动态传参
  顺序: 位置参数 *args 默认值参数 *kwargs
  
  dec func(*args,*kwargs):
      pass
      
  形参的位置*,** : 聚合
  实参的位置*,** : 打散
2,命名空间
  1,内置名称空间
  2,全局名称空间
  3,局部名称空间  
  
  作用域:
      1,全局作用域: 内置 + 全局
      2,局部作用域: 局部(函数被调用)
      globals():查看全局中的内容
      locals():查看作用域中的内容
3,函数的嵌套
  函数可以互相的嵌套
4,global和nonlocal的关键
  global:在局部访问全局中的内容  
  nonlocal:在局部访问外层函数离它最近的那个变量
函数名的应用:(第一类对象)
    函数名的命名规范和变量是一样的
    函数名其实就是变量名

    可以作为列表中的元素进行存储
    def func1():
        pass
    def func2():
        pass
    list = [func1,func2]
    for el in list:
        el()

    可以作为参数传递给函数
    def func():
        pass
    def proxy(fn):
        fn()
    proxy(func)

    可以作为函数的返回值
    def func():
        def inner():
            pass
        return inner)
    func()()
2,闭包
    在内层函数中访问外层函数的局部变量
    好处:
        1,保护你的变量不受外界影响
        2,可以让变量常驻内存
    写法:
        def outer():
            a = 10
            def inner():
                print(a)
            return inner
原文地址:https://www.cnblogs.com/feifeifeisir/p/9443375.html