• Python 函数之间的调用和作用域


    函数之间的调用

    1.内嵌函数之间的调用(在同一个py文件内的函数之间的调用)

    #定义offer函数
    def offer(name):
    return name
    #定义people函数
    def people(name,likefood):
    '''people函数内调用offer函数'''
    print(name+'喜欢'+likefood)
    M=offer('清华大学')
    print(name+'拿到了'+M+'offer,他请大家吃他喜欢吃的'+likefood)

    print(people('小张','牛排自助'))

    输出结果:
    小张喜欢牛排自助
    小张拿到了清华大学的offer,他请大家吃他喜欢吃的牛排自助

    注意:

    1.被调用的函数,必须在调用之前被定义,也就是people函数要想调用offer函数,那offer函数必须在people函数之前就被定义好,否则会报错,被调用的函数找不到,无法继续内嵌调用

    2.函数之间调用的禁忌!!!

    • 两个函数之间不要相互调用,相互调用会导致递归错误,内存有限,一直循环,停止不下来,直到内存资源被耗尽
    • 函数不要自己调用自己,否则也会导致递归错误

     函数的作用域

    1.函数的全局变量:定义的变量,整个py文件内可以公共使用,在定义的函数体外定义

    2.函数的局部变量:在函数体内定义的变量,叫做函数的局部变量

    a='祖国我爱你'
    print('这是函数体外的变量a:{}'.format(a))
    def add(name):
        a='中国是一个充满爱的国家'
        print('{}说:这是函数体内的变量a:{}'.format(name,a))
        return a
    
    add('小明')
    
    输出结果:
    这是函数体外的变量a:祖国我爱你
    小明说:这是函数体内的变量a:中国是一个充满爱的国家

    总结:函数体外定义的变量为全局变量,函数体内定义的变量为局部变量

    3.全局变量和局部变量之间的关系

    • 全局变量不能获取局部变量
    • 局部作用域能获取全局变量
    • 全局变量不能修改局部变量
    • 局部作用域能修改全局变量(但是前提必须在局部变量前加global关键字)

    全局作用域不能获取局部变量

    c=10
    def add(a,b):
        c=a+b
        c=c+2
        return c
    e=add(3,3)
    print(e)
    print(c)  #这里打印的是全局变量的c,而不是局部变量的
    
    输出结果:
    8
    10

    局部作用域获取全局变量

    c=10
    def add(a,b):
        e=a+b+c    #局部作用域获取全局变量
        return e
    al=add(3,3)
    print(al)
    
    输出结果:
    16

    加global,在局部作用域修改全局变量,

    如果不加global 表明是全局变量,局部是不能修改全局变量的

    如果想再局部去修改全局变量,加global表明这是一个全局变量

    c=10
    def add(a,b):
        global c   #在局部作用域加global,将局部的c变成全局变量
        c=c+8
        print(c)
    add(6,6)
    print(c)  
    
    输出结果:
    18
    18

    函数的作用

    1. 当你发现一直在粘贴、复制相同的或者类似的代码时候,就可以定义一个通用的函数,把相同的一段操作程序存储到函数体内,直接调用函数即可(这也就是所谓的封装)
    2. 函数体里面存放的都是些形式参数,调用时,传入的为实际参数
  • 相关阅读:
    swiper 增加一个鼠标移入分页器的小点后就切换展示图片
    css中的单冒号和双冒号 以及 伪类和伪元素
    pointer-events: none;元素永远不会成为鼠标事件的target
    jQuery off() 方法
    jQuery方法汇总
    vue 数组修改 页面无法刷新
    mysql error Code 1441:datetime function: datetime field overflow
    生命的意义
    删除镜像或容器
    nginx Redis 不能访问问题
  • 原文地址:https://www.cnblogs.com/lucky1212/p/13938333.html
Copyright © 2020-2023  润新知