• 【python】初识函数


    1. 函数的定义

      对代码块和功能进行封装和定义的就叫函数.

    2. 函数语法

      def 函数名(形参):

        函数体

      函数名(实参)

      函数名的命名规则: 命名规则与变量一致.

    3. 函数的返回值

      return,函数执行完毕,不会执行后面逻辑

        1. 如果函数中不写return,返回None

        2. 只写return, 返回None

        3.return返回值, 返回一个值

        4. return 值1,值2,... 返回多个值. 调用方接收到的是tuple元组

    4. 函数的参数

      在函数执行的时候给函数传递的信息

      1. 形参: 

        1. 位置参数

        2. 默认值参数,当调用的时候不给传值使用默认值

        3. 混合使用. 顺序: 位置参数 > 默认值参数

      2. 实参: 

        1. 位置参数, 按照位置给形参赋值

        2. 关键字参数, 按照名称给形参赋值

        3. 混合参数, 顺序: 位置参数 > 关键字参数

      3. 动态参数

        位置参数的动态参数: *args

          可以传入任意的位置参数, 接受到的是tuple类型的数据

        关键字参数的动态参数: **kwargs

          动态接受关键字参数, 接收到的是dict类型的数据

        使用顺序: 位置,*args  >  默认值参数  >  **kwargs

        *表示聚合,所有的位置参数,聚合成元组. **聚合成字典

        在实参位置上给⼀一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散.
        在形参的位置上的* 表示把接收到的参数组合成⼀一个元组 如果是⼀一个字典, 那么也可以打散. 不过需要用两个*

    def fun(**kwargs):    
        print(kwargs) 
    dic = {'a':1, 'b':2}
    fun(**dic)

    5. 函数的命名空间和作用域:

      命名空间: 

      在python解释器开始执⾏行行之后, 就会在内存中开辟⼀一个空间, 每当遇到⼀一个变量量的时候, 就 把变量量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内 存, 表⽰示这个函数存在了了,  ⾄至于函数内部的变量量和逻辑, 解释器是不关⼼心的. 也就是说⼀一开始 的时候函数只是加载进来, 仅此⽽而已, 只有当函数被调⽤用和访问的时候, 解释器才会根据函数 内部声明的变量量来进⾏行行开辟变量量的内部空间. 随着函数执⾏行行完毕, 这些函数内部变量量占⽤用的空 间也会随着函数执⾏行行完毕⽽而被清空. 

        1. 内置命名空间: python解释器内部运行时的变量函数

        2. 全局命名空间: 我们在py文件中直接声明出来的变量.函数

        3. 局部命名空间: 在函数内部声明的变量和函数

      作用域:

        1. 全局作用域: 内置命名空间和全局命名空间

        2.局部作用域: 局部命名空间

        globals()方法: 查看全局作用域中名字

        locals()方法: 查看当前作用域中的名字

    a = 10
    def func():
        a = 20
        print(a)    # 就近原则
        print(globals())  # globals() 获取到全局作用域(内置,全局)中的所有名字
        print(locals())  # locals() 查看当前作用域中的所有名字
    func()

    6. 函数的global和nonlocal:

      global: 不再使用局部作用域中的内容了, 而改用全局作用域中的变量

    def func():
        global a    # a 不再是局部变量. 是全局变量
        a = 30  # 把全局中的a重新赋值成30
        print(a)
    func()
    print(a)

      nonlocal: 在局部作用域中,调用离它最近的一层父级空间中的变量, 不会找全局

    a = 10
    def func1():
    
        def func2():
            nonlocal a  # 找局部作用域中 离他最近的那个变量引入进来
            a = 20
            print(a)
        func2()
        print(a)
    func1()

    7. 函数的嵌套

    a = 1
    def func_1():
        a=2
        def fun_2():
            def fun_3():
                nonlocal a
                a=4
                print(a)
            print(a)
            fun_3()
            print(a)
        print(a)
        fun_2()
        print(a)
    print(a)
    func_1()
    print(a)

    >>>函数打印结果: 1 2 2 4 4 4 1

    8. 函数的注释

    def chi(food, drink):
        """
        这里是函数的注释 , 先写一下当前这个函数是干什么的 , 比如我这个函数就是一个吃
        :param :param food: 参数 food 是什么意思
        :param :param drink: 参数 drink 是什么意思
        :return :return: 返回的是什么东东
        """    
        print(food, drink)    
        return "very good
  • 相关阅读:
    自定义标签的作用
    自定义标签处理器类的生命周期
    自定义标签的执行过程
    自定义标签入门案例
    JSTL核心标签库详解
    JSTL标签(核心标准库)
    动作标签
    jsp标签
    EL表达式
    JSP学习案例--,竞猜游戏
  • 原文地址:https://www.cnblogs.com/knowledgeYang/p/9302124.html
Copyright © 2020-2023  润新知