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
函数的作用:
- 当你发现一直在粘贴、复制相同的或者类似的代码时候,就可以定义一个通用的函数,把相同的一段操作程序存储到函数体内,直接调用函数即可(这也就是所谓的封装)
- 函数体里面存放的都是些形式参数,调用时,传入的为实际参数