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
  • 相关阅读:
    Server2012R2 ADFS3.0 The same client browser session has made '6' requests in the last '13'seconds
    pig的grunt中shell命令不稳定,能不用尽量不用
    pig脚本的参数传入,多个参数传入
    pig的cogroup详解
    pig的limit无效(返回所有记录)sample有效
    Dynamics CRM2013 任务列表添加自定义按钮
    简述浏览器渲染机制
    如何区分浏览器类型
    使用mock.js生成前端测试数据
    理解Ajax
  • 原文地址:https://www.cnblogs.com/knowledgeYang/p/9302124.html
Copyright © 2011-2022 走看看