zoukankan      html  css  js  c++  java
  • 050 函数基础小结

    一、定义函数

    只检测语法,不执行代码

    二、函数定义的三种方式

    • 有参函数
    • 无参函数
    • 空函数

    三、调用函数和返回值

    return返回返回值,函数遇到return会终止,return可以返回任意数据类型的值,同时也可以返回多个值
    函数只有在调用阶段才会接收返回值

    def add(x, y):
        return x, y, x + y 
    x,y,z = add(1, 2)   # 函数的调用
    print(x,y,z)
    

    四、函数的参数

    4.1 形参

    接收实参,具有描述意义,没有具体值

    4.2 实参

    具有具体的值,传参给形参

    1. 位置形参:从左到右一个一个接收位置实参
    2. 位置实参:从左到右一个一个传给形参
    3. 关键字实参:根据形参名传参
    4. 默认形参:给形参一个默认值,如果实参不对该形参传值,则使用默认值;反之,使用实参传的值
    • 关键字实参必须得在位置实参后面,默认形参也必须在位置形参后面
    • 一个形参只能接收一个值

    五、可变长参数

    1. *形参:接收多余的位置实参,以元组的方式存储
    2. *实参:把元组打散成一个个位置实参,然后传给形参(不推荐使用,只做了解)
    3. **形参:接收多余的关键字实参,以字典的方式存储
    4. **实参:把字典打散称一个个关键字实参,然后传给形参(不推荐使用,只做了解)
    • 牢记:
    def f1(*args,**kwargs):
        pass
    
    # f1可以接收所有的参数
    f1(1,1,2,3,3,4,5,x=2,y=5,a=8)
    

    六、函数对象

    def f1():
        pass
    
    1. 引用f=f1
    2. 作为函数返回值return f1
    3. 作为函数参数传入f2(f1)
    4. 容器元素lis=[f1]

    七、函数的嵌套

    def f1():
        def f2():
            pass
        
    f2()  # 报错
    

    八、名称空间与作用域

    1. 内置名称空间:存放内置的名字,如len/eval/enumerate/bytes/max/min/sorted/map/filter....
    2. 全局名称空间:除了内置与局部,其他的名字都存放在全局名称空间内
    3. 局部名称空间:函数内部的名字都是局部名称空间,不同函数内部的名字互不干涉
    • 查找顺序:从当前开始往上寻找,如果当前是局部名称空间,查找顺序为:局部--》全局--》内置
    • 执行顺序:先内置(Python解释器启动的时候才会生成)--》全局(文件执行的时候才会生成)--》局部(函数调用的时候才会生成)

    作用域:全局名称空间和局部名称空间中可能会存在名字相同的变量,但是这两个变量互不影响。只针对不可变数据类型,对于可变数据类型除外,尽量不要使用可变类型的这个特性,如果真的使用,可以不同的函数定义不同的变量出来

  • 相关阅读:
    我的第一篇博客
    1.2 位于Shell脚本第一行的#!
    1.1 一个简单的脚本
    JDK与CGlib动态代理的实现
    解决Sublime Text3中文显示乱码问题
    多线程讲解
    (转)Spring中@Async用法总结
    (转)spring boot注解 --@EnableAsync 异步调用
    Spring Boot中的注解
    (转)如何用Maven创建web项目(具体步骤)
  • 原文地址:https://www.cnblogs.com/XuChengNotes/p/11329466.html
Copyright © 2011-2022 走看看