zoukankan      html  css  js  c++  java
  • 【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
  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/knowledgeYang/p/9302124.html
Copyright © 2011-2022 走看看