Python自动化开发-函数02
1.函数的全局变量与局部变量
了解局部变量和全局变量的定义
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
例1:全局变量定义
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/env python # -*- coding:utf-8 -*- #全局变量定义:没有缩进并且在顶头定义的变量 name="lucy" print(name)
代码运行结果:
lucy
例2:局部变量定义
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/env python # -*- coding:utf-8 -*- #局部变量定义:有缩进并且没有顶头定义的变量 def test01(): name="lily" print(name) test01()
代码运行结果:
lily
例3:局部变量和全局变量混合使用
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/env python # -*- coding:utf-8 -*- # #全局变量定义:没有缩进并且在顶头定义的变量 name="lucy" #局部变量定义:有缩进并且没有顶头定义的变量 def test01(): name="shiying" print(name) test01() print(name)
代码运行结果:
shiying
lucy
例4:定义全局变量方法二:使用global定义全局变量
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/env python # -*- coding:utf-8 -*- #全局变量定义方法二:使用global定义全局变量 name="haxi" def test01(): global name name="shiying" print(name) test01() print(name)
代码运行结果:
shiying
shiying
需要注意:
a.优先读取局部变量,能读取全局变量,无法对全局变量重新赋值 NAME=“fff”,
b.如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值 NAME=“fff”
例1:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/env python # -*- coding:utf-8 -*- #全局变量定义方法二:使用global定义全局变量 name="haxi" def test01(): global name name="shiying" print(name) def test02(): print(name) test01() print(name)
代码运行结果:
shiying
shiying
例2:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/env python # -*- coding:utf-8 -*- name=["lixian","wangjing"] def test02(): print(name) #全局变量定义方法二:使用global定义全局变量 def test01(): global name name.append("lucy") print(name) test02() test01() print(name)
代码运行结果:
['lixian', 'wangjing']
['lixian', 'wangjing', 'lucy']
['lixian', 'wangjing', 'lucy']
例3:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/env python # -*- coding:utf-8 -*- NAME="lisa" def test03(): name="liyong" print(name,NAME) def test04(): name01="litian" print(name01) test04() test03()
代码运行结果:
liyong lisa
litian
2.函数-前向引用
例1:函数的前向引用
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/env python # -*- coding:utf-8 -*- def bar(): print("from bar") def foo(): print("from foo") bar() foo()
代码运行结果:
from foo
from bar