python 学习笔记之 全局变量和局部变量
2015-01-07 13:43
525 查看
最近开始学习python 了!
1 python 中使用在函数之外的变量均为全局变量
2 在函数内部使用的变量为局部变量。
之所以今天写关于变量的作用域的笔记,是因为本人在一个小程序中出了错,再次做些总结。
先看下面的程序:
#!/usr/bin
# Filename: func_global.py
def func():
global x
print 'x is', x
x = 5
print 'change x to', x
x = 100
func()
print 'the value of x is', x
该程序的运行结果是:
x is 100
changed x to 5
the value of x is 5
这个程序的理解是没有问题的,问题的关键在于当我把程序做稍许的改动就报错了。我是这样改的将定义函数def func() 改为def func(x)。将调用函数func()改为func(x)。报错的信息是:
name "x" is local and global
这句报错信息究竟是什么意思呢,很明显系统在告诉我们x 既是局部变量又是全局变量,这是矛盾的,所以就报错了。
仔细分析一下便可得知:
首先,在函数外部的变量为全局变量。
程序首先执行的是语句 x = 100(x 是全局变量)
当执行到调用函数func(x)这个语句时,此时,变量x 被传递到func()内部。此时函数内部global x 语句之外的 x 是作为局部变量的,与x 作为全局变量相矛盾了。
简而言之就是:当变量是全局变量的时候,就不要将其作为函数的实参,否则就会出错。
1 python 中使用在函数之外的变量均为全局变量
2 在函数内部使用的变量为局部变量。
之所以今天写关于变量的作用域的笔记,是因为本人在一个小程序中出了错,再次做些总结。
先看下面的程序:
#!/usr/bin
# Filename: func_global.py
def func():
global x
print 'x is', x
x = 5
print 'change x to', x
x = 100
func()
print 'the value of x is', x
该程序的运行结果是:
x is 100
changed x to 5
the value of x is 5
这个程序的理解是没有问题的,问题的关键在于当我把程序做稍许的改动就报错了。我是这样改的将定义函数def func() 改为def func(x)。将调用函数func()改为func(x)。报错的信息是:
name "x" is local and global
这句报错信息究竟是什么意思呢,很明显系统在告诉我们x 既是局部变量又是全局变量,这是矛盾的,所以就报错了。
仔细分析一下便可得知:
首先,在函数外部的变量为全局变量。
程序首先执行的是语句 x = 100(x 是全局变量)
当执行到调用函数func(x)这个语句时,此时,变量x 被传递到func()内部。此时函数内部global x 语句之外的 x 是作为局部变量的,与x 作为全局变量相矛盾了。
简而言之就是:当变量是全局变量的时候,就不要将其作为函数的实参,否则就会出错。
相关文章推荐
- Python学习笔记(2)-局部变量与全局变量
- Python新手学习基础之函数-全局变量和局部变量
- Python学习笔记之全局变量
- Python学习笔记(7):global关键字及全局变量的用法
- python学习之全局变量与局部变量
- c语言学习笔记之全局变量与局部变量
- Python学习笔记之全局变量
- Python3学习笔记4-函数,全局变量&局部变量,内置函数
- Python学习之,全局变量和局部变量
- Python新手学习基础之函数-全局变量和局部变量
- python学习——局部变量与全局变量
- JavaScript学习笔记: 局部变量和全局变量
- Python学习笔记之全局变量
- C/C++学习笔记23:全局变量与局部变量
- Python笔记(2):多参数,全局变量与局部变量,层状作用域,函数式编程,面向对象
- Python学习之函数(全局变量和局部变量)
- 《零基础入门学习Python》学习过程笔记【020函数的局部变量和全全局变量内部函数和闭包】
- Python新手学习基础之函数-全局变量和局部变量
- python学习笔记30(全局变量的两种解决办法)
- Python3学习笔记4-函数,全局变量&局部变量,内置函数