Python局部变量与全局变量
来源:互联网 发布:手机上传淘宝图片空间 编辑:程序博客网 时间:2024/05/22 17:30
Python中的局部全局与全局变量主要体现在函数内的变量与函数外的变量。
局部与全局就是变量的作用域(作用范围)。
当你在函数内部定义变量的时候,它们与函数外具有相同名称的变量没有任何关系,即变量对于函数来说是 局部 的。这也是这个变量的 作用域 。
所有的变量的作用域是它们被定义的块,从它们被定义的地方开始。
使用局部变量:
#!/usr/bin/env python# Filename: func_local.py# -*- encoding:utf-8 -*-def func(x): print 'x is', x x = 2 # 定义函数内的变量 print 'Changed local x to', xx = 50 # 这里定义了全局变量func(x)print 'x is still', x
输出结果:
x is 50
Changed local x to 2
x is still 50
在函数中,我们第一次使用的 x 的值的时候,Python使用函数声明的形参的值。
接着,我们把数值 2 赋值给 x 。x是函数func的局部变量,它的作用域只能在函数内部。所以,当我们改变 x 的值的时候,在主块中定义的 x 不受影响。
在最后的 print 语句中,证明了主块中的 x 的值确实受到影响。
使用 global 语句 声明全局变量:
如果你想要为一个定义在函数外的变量赋值(即想要在函数内改变主块中的变量),那么我们就必须告诉Python这个变量不是局部的,而是 全局 的。我们可使用 global 关键字来声明。如果不使用 global 是不能为定义在函数外的变量赋值的。
你可以使用定义在函数外的变量的值(假设在函数内没有同名的变量)。然而不建议这么做,因为这使得程序的读者不清楚这个变量是在哪里定义的。使用 global 可以清楚的表明变量是在外面的块定义的。
#!/usr/bin/python# -*- encoding:utf-8 -*-# Filename: func_global.pydef func(): global x # 声明变量 x 是全局变量 print 'x is', x x = 2 # 在函数内部为全局变量 x 赋值 print 'Changed local x to', xx = 50func()print 'Value of x is', x
输入结果:
x is 50
Changed global x to 2
Value of x is 2
使用 global 关键字在函数内声明了变量 x 是全局的,因此,我们在函数内为 x 赋值的时候,这个变化也反映在我们在主块中使用 x 的值的时候。
你可以用同一个 global 指定多个全局变量。如:global x,y,z。
注意两点:
1、如果想要在函数内部去改变主块中的的变量值,需要在函数内部声明这个变量为全局变量;
2、如果在函数内部不使用 global 声明与主块中同名的变量,那么这个变量会覆盖主块的变量,在函数内而不会使用全局变量,如例一。
- Python局部变量与全局变量
- Python局部变量与全局变量
- Python 局部变量与全局变量
- python 局部变量与全局变量
- Python 全局变量与局部变量
- Python全局变量与局部变量
- python全局变量与局部变量
- python中的局部变量与全局变量
- Python中的全局变量与局部变量
- 关于python局部变量与全局变量
- python的全局变量与局部变量
- python的全局变量与局部变量实验
- python中的全局变量与局部变量
- python学习之全局变量与局部变量
- 「python」局部变量与全局变量
- Python全局变量与局部变量的区别
- Python 全局变量 局部变量
- 全局变量与局部变量
- SMTP邮件服务设置
- MatLab GUI 数据传递
- maven的配置以及简单使用
- 6.3.2 层次遍历
- POJ 1459 Power Network
- Python局部变量与全局变量
- 使用 System.Net.Mail.MailMessage 发送电子邮件
- 把握销售中的八个细节记好销售日记
- Win7 下装 Ubuntu 双系统遇到的一些问题及解决
- pku_1111_Image Perimeters
- lua中Function
- SGU 168
- linux内核调度器进化史:O(n)->O(1)->O(log(n))
- Lua的function、closure和upvalue