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. 函数体里面存放的都是些形式参数,调用时,传入的为实际参数

 

posted @ 2020-11-10 17:28  紫陌红尘雪落无声  阅读(2502)  评论(0编辑  收藏  举报