理解python的全局变量和局部变量

企鹅博客
企鹅博客
企鹅博客
25193
文章
0
评论
2020年10月4日02:14:02 评论 8 views 957字阅读3分11秒

理解python的全局变量和局部变量

1.定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是被定义为局部变量。在这种情况下,不论全局变量中是否用到该变量名,函数中使用的都是局部变量。例如:

# _*_ coding: utf-8 _*_
num = 110
def func():
    num = 1
    print(num)
func()
输出结果:1
# _*_ coding: utf-8 _*_
num = 110
def func():
    num += 1
    print(num)
func()
输出结果:

UnboundLocalError: local variable 'num' referenced before assignment

错误提示:局部变量num在赋值前被应用,也就是没有定义该变量就使用它,由此再次证明了这里定义了一个局部变量,而不是使用的全局的num。

总结:函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量

2、函数内部的变量名如果第一次出现,且出现在=后面,且该变量在全局域中已定义,则这里将引用全局变量,如果该变量在全局域中没有定义,当然会出现“变量未定义”的错误。例如:

# _*_ coding: utf-8 _*_
num = 110
def func():
    num1 = num +  1
    print(num1)
func()
输出结果:
111

3、函数中使用某个变量时,该变量名既有全局变量也有同名的局部变量,则会使用局部变量,例如:
# _*_ coding: utf-8 _*_
num = 110
def func():
    num = 200
    num1 = num +  1
    print(num1)
func()
输出结果:
201
4、在函数中,如果想给全局变量赋值,则需要用关键字global声明,例如:
# _*_ coding: utf-8 _*_
num = 100
def func():
    num = 300
    num1 = num +  1
    print(num1)
func()
print num
输出结果:

301
100

将num声明:

# _*_ coding: utf-8 _*_
num = 100
def func():
    global  num
    num = 300
    num1 = num +  1
    print(num1)
func()
print num
输出结果:

301
300

from:


以上就是理解python的全局变量和局部变量的详细内容,更多请关注php教程其它相关文章!

继续阅读
初步认识Python中的列表与位运算符 php教程

初步认识Python中的列表与位运算符

Python列表 List(列表) 是 Python 中使用最频繁的数据类型。 列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。 列表用< >标识。是py...
新手python用什么版本好? python教程

新手python用什么版本好?

想学习Python的人都会有一个困惑,那就是Python目前有两个版本Python2和Python3,Python2与Python3有何区别,两个版本该学习哪个好呢? python3 和 python...
python中队列的实现方法(代码示例) python教程

python中队列的实现方法(代码示例)

本篇文章给大家带来的内容是关于python中队列的实现方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 对于python来说,要实现一个队列的类根据已经有的方法,是很简...
Python OS模块常用函数说明 python教程

Python OS模块常用函数说明

Python的标准库中的os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Wi...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: