32 python - 局部变量和全局变量

简介: 32 python - 局部变量和全局变量

1.局部变量

如下图所示:

  • 局部变量,就是在函数内部定义的变量。
  • 不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响。
  • 局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用。

2.全局变量

如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是全局变量:

# 定义全局变量
a = 100
def test1():
   print(a)
def test2():
   print(a)
# 调用函数
test1()
test2()

运行结果:

3.全局变量和局部变量名字相同问题

4.修改全局变量

既然全局变量,就是能够在所以的函数中进行使用,那么可否进行修改呢?

代码如下:

  1. 在函数外边定义的变量叫做全局变量。
  2. 全局变量能够在所有的函数中进行访问。
  3. 如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错。
  4. 如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的,小技巧强龙不压地头蛇。

5.变类型的全局变量

>>> a = 1
>>> def f():
...     a += 1
...     print a
...
>>> f()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in f
UnboundLocalError: local variable 'a' referenced before assignment
>>>
>>>
>>> li = [1,]
>>> def f2():
...     li.append(1)
...     print li
...
>>> f2()
[1, 1]
>>> li
[1, 1]
  • 在函数中不使用global声明全局变量时不能修改全局变量的本质是不能修改全局变量的指向,即不能将全局变量指向新的数据。
  • 对于不可变类型的全局变量来说,因其指向的数据不能修改,所以不使用global时无法修改全局变量。
  • 对于可变类型的全局变量来说,因其指向的数据可以修改,所以不使用global时也可修改全局变量。
目录
相关文章
|
26天前
|
Python
【python】python跨文件使用全局变量
【python】python跨文件使用全局变量
|
1月前
|
开发者 Python
|
5月前
|
安全 Python
120 python高级 - 多线程共享全局变量
120 python高级 - 多线程共享全局变量
31 0
|
6月前
|
编译器 Python
python之局部变量和全局变量的定义,两者之间的区别和使用方法,global和nonlocal的定义和使用方法,可变与不可变类型的定义和示例
python之局部变量和全局变量的定义,两者之间的区别和使用方法,global和nonlocal的定义和使用方法,可变与不可变类型的定义和示例
|
2天前
|
存储 Python 容器
|
1月前
|
Python
请解释Python中的全局变量和局部变量有什么区别?
请解释Python中的全局变量和局部变量有什么区别?
17 2
|
1月前
|
存储 Python
Python系列(4)—— 全局变量
Python系列(4)—— 全局变量
|
6月前
|
索引 Python
Python中跨越多个文件使用全局变量
Python中跨越多个文件使用全局变量
85 0
Python中跨越多个文件使用全局变量
|
4月前
|
前端开发 Python
Python 教程之变量(3)—— 全局变量和局部变量
Python 教程之变量(3)—— 全局变量和局部变量
32 0
|
4月前
|
存储 Python
Python(二十五)python的全局变量和局部变量(变量作用域)
所谓作用域,就是变量的有效范围,就是变量可以在哪个范围以内使用。 有些变量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。 变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。 一:局部变量 在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能使用了,我们将这样的变量称为局部变量 要知道,当函数被执行时,Python 会为其分配一块临时的存储空间,所有在函数内部定义的变量,都会存储在这块空间中。 而在函数执行完毕后,这块临时存储空间随即会被释放并回收,该空间中存储的变量自然也就无法再被使用。 scss
69 1