zoukankan      html  css  js  c++  java
  • 函数

    函数的定义

    对功能或动作的封装

    语法: def 函数名(形式参数):

        函数体(代码块)

    调用方式: 函数名(实参)

    形参:在函数申明的地方定义的是实参 也就是括号里写的就是定义一个变量.

    实参: 在函数调用的时候给函数的形参传递的信息(值)

    传参:把实参交给形参的过程

    返回值:

    return 可以终止一个函数的运行
    1. 什么都不写. 不写return. 返回None
    2. 写了return, 返回None
    3. return 值. 有一个返回值.
    4. return 值1, 值2, 值3...多个返回值. 接收的是元组(不可变)
    参数: 

    def func(*args):
        print(args)
    s = "123456"
    func(s)
    
    
    运行结果为  ('123456',)
    函数

    形参:
    1. 位置参数
    2. 默认值参数
    3. 动态传参
    实参:
    1. 位置参数, 记住位置
    2. 关键字参数, 记住名字
    3. 混合参数, 顺序: 先位置后关键字

    1. 函数的动态参数
    1. *args 位置参数动态传参
    2. **kwargs 关键字参数动态传参
    顺序:位置参数, *args, 默认值, **kwargs

    def func(*args, **kwargs):
    pass

    形参的位置*,**: 聚合
    实参的位置*,**: 打散
    2. 命名空间
    1. 内置名称空间
    2. 全局名称空间
    3. 局部名称空间

    在python解释器开始执行之后,会在内存中开辟一个空间,每当遇到一个变量的时候,就把变量名和值之间的关系记录下来,但是当遇到函数定义的时候,

    解释器只把函数名读入内存,表示这个函数存在了,至于函数内部的变量和逻辑,解释器是不关心的,也就是说,开始的时候函数只是加载进来,经此而已.

    只有当函数被调用和访问的时候,解释器才会根据函数内部申明的变量来进行开辟变量的内部空间,

    随着函数执行完毕,这些函数内部变量占用的空间也会随着函数执行完毕被清空

    def fun():
     a = 10
     print(a)
    fun()
    print(a) # a不存在了已经.
    例子
    def outer():
        print("哈哈")
        def inner_1():
            print("呵呵")
            def inner_1_1():
                print("嘻嘻")
            inner_1_1()
            print("吼吼")
        def inner_2():
            print("嘿嘿")
        inner_2()
        inner_1()
    outer()
    ##
    结果为 >>>>>>
    哈哈
    嘿嘿
    呵呵
    嘻嘻
    吼吼
    名称空间

    加载顺序:

    内置命名空间

    全局命名空间

    局部命名空间(函数执行的时候)

    取值顺序:

    局部命名空间

    全局命名空间

    内置命名空间

    作用域:
    1. 全局作用域: 内置+全局
    2. 局部作用域: 局部(函数被调用)
    globals() 查看全局中的内容
    locals() 查看当前作用域中的内容

    a = 10
    def func():
     a = 40
     b = 20
     def abc():
     print("哈哈")
     print(a, b) # 这⾥使⽤的是局部作⽤域
     print(globals()) # 打印全局作⽤域中的内容
     print(lglobals()) # 打印局部作⽤域中的内容
    func()
    globals() globals()
    # a = 10 # 全局名称空间中的内容
    # def fn(): # fn也在全局名称空间
    #     b = 20 # 局部名称空间
    #     print(a)
    # def gn():
    #     print(a)
    # fn()
    # gn()
    运行结果为>>>>>
    10
    10
    命名空间


    3. 函数嵌套
    函数可以互相的嵌套
    4. global和nonlocal关键
    global: 在局部访问全局中的内容

    nonlocal: 在局部寻找外层函数中离他最近的那个变量

    a = 1
    def fun_1():
        a = 2
        def fun_2():
            nonlocal a
            a = 3
            def fun_3():
                a = 4
                print(a)
            print(a)
            fun_3()
            print(a)
        print(a)
        fun_2()
        print(a)
    print(a)
    fun_1()
    print(a)
    运行结果为>>>>>>>
    1
    2
    3
    4
    3
    3
    1
    nonlocal
  • 相关阅读:
    unitTest单元测试框架
    Day06_页面发布与课程管理
    Day05_RabbitMQ研究
    Day04_页面静态化
    Day04_freemarker
    Day03_CMS页面管理开发
    Java概述练习题
    01_语言概述
    00_编程入门
    德道经
  • 原文地址:https://www.cnblogs.com/y122988/p/9449388.html
Copyright © 2011-2022 走看看