python全局变量与局部变量

了解全局变量和局部变量之前,我们先来了解一下作用域

a = 10
def func():
  b = 20
  def inner():
    c = 30

以上面这个程序为例:打印a,b,c

  

可以看到只有a打印 10 ,b和c都报错,这就是作用域的问题。

我们把新创建的一个.py文件看做事一个模块,在模块内定义的变量,如a,就是这个模块的全局变量,作用于全局,不论在哪都可以调用,

但是b和c 是定义在函数内部的,我们叫做局部变量,只能作用在函数内部。

我们在看一个问题

  func和inner函数可以调用变量a 么?

  func函数可以调用变量c么?

答案是:a是全局变量,可以在任意地方调用

      

 但是func函数不可以调用c,这时候我们把func看做一个整体,那么inner就是在func内部定义的函数,c也就是inner内部的变量

总结:变量定义在全局可以在任何地方调用,定义在函数内部,只能在函数内使用。

变量查找顺序:LEGB

局部作用域>外层作用域>当前模块中全局>python内置作用域;

在来说关于全局和局部变量的两个两个方法:globalnonlocal

直接上例子吧:

我们可以看到,局部定义了a, 那么我们直接调用a就会报错,

只有在定义后调用才会打印,并且全局变量的a值不会改变

如果我现在想在局部名称空间改变a的值该怎么做呢?这时候就要用到global

我们可以看到,全局变量a的值已经修改成15了。

下面来说nonlocal:

我们看到这时候打印a、b的时候出错了,错误提示是没有定义b

但是a没有报错,这是因为a是全局变量,而b是局部变量,所以出现了这种错误,改正如下:

 因为b是局部变量,所以调用之前用nonlocal声明,之后就可以调用了。

原文地址:https://www.cnblogs.com/python-Arvin/p/11779683.html

时间: 2024-11-08 01:44:28

python全局变量与局部变量的相关文章

Python全局变量和局部变量

python中,对于变量作用域的规定有些不一样.在诸如C/C++.java等编程语言中,默认在函数的内部是可以直接访问在函数外定义的全局变量的,但是这一点在python中就会有问题,下面是一个例子. test.py: #!/usr/bin/python COUNT=1 def func(): COUNT = COUNT + +1 func() Python test.py,会运行报错: Traceback (most recent call last): File "test.py",

python 全局变量与局部变量

一.引用 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字.如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if a == 1: print("a: %d" %a) for i in range(4): if i in b: print("%d in list b" %i) else: print("%d not in list b" %i) if __nam

PYTHON 全局变量和局部变量

#局部变量,只能调用函数体内的变量 def fun(): a = 234 print(a) #全局变量,在函数体外声明,在函数体内都可调用 b = 'gyc' def fun(): a = 234 print(a,b) # 在局部内修改全局变量 b = 789 def fun(): a = 234 global b #global 表示全局b赋值为789 b = 789 print(a,b)

Python中的全局变量与局部变量的区别

全局变量与局部变量两者的本质区别就是在于作用域 用通俗的话来理解的话, 全局变量是在整个py文件中声明,全局范围内都可以访问 局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了 如果在函数内部定义与某个全局变量一样名称的局部变量,就可能会导致意外的效果,可能不是你期望的.因此不建议这样使用,这样会使得程序很不健全 直接来看几个例子来理解全局变量和局部变量的区别吧: Demo1: def fun(x):       y=2       print("乘法

python函数(全局变量,局部变量,作用域,递归函数,高阶函数,匿名函数)

1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能,进行一系列的逻辑运算return 返回值:函数的返回值能表示函数的运行结果或运行状态. 1.1.2函数的作用 函数是组织好的,可重复使用的,用来实现单一,或者相关功能的代码. 函数能够提高应用的模块性,和代码的重复利用率 我们已近知道python提供了许多内置函数,比如print(),我们自已创建的

python 函数传参练习 全局变量与局部变量 的理解

额 还是继续抄一边NLP第二条: 2.一个人不能控制另外一个人   一个人不能改变另外一个人,一个人只能改变自己. 每个人的信念,价值观,规条系统只对本人有效,不应强求别人接守. 改变自己,别人才会有可能改变. 一个人不能推动另外一个人,每个人都只可以自己推动自己. 找出对方的价值观,创造,增大或转移对方在乎的价值,对方便会产生推动自己的行为. 一个人因此不能“教导”另外一个人,一个人只能引导另外一个人取学习. 因此一个人不能希望另外一个人放弃自己的一套信念,价值观和规条系统,而去接受另外的一套

day18 函数定义、参数;名称空间;全局变量及局部变量。

Python之路,Day6 = Python基础6 函数的定义 def func1(): # 定义一个函数,名字叫func1,括号中没有传入参数 print('hello word') # 这里是 func1 的内容,可以定义为任意代码 return 1 # return 是返回的意思,后面是返回值,调用时可以用参数接收,返回值的内容可以为任意形式 # python执行的时候只会检查函数里面是否有语法问题,没有的话,过... # 函数中可以有多个return, 但是执行到return时,函数停止

python3--函数(函数,全局变量和局部变量,递归函数)

1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能,进行一系列的逻辑运算return 返回值:函数的返回值能表示函数的运行结果或运行状态. 1.1.2函数的作用 函数是组织好的,可重复使用的,用来实现单一,或者相关功能的代码. 函数能够提高应用的模块性,和代码的重复利用率 我们已近知道python提供了许多内置函数,比如print(),我们自已创建的

python全局变量

来源:http://andylin02.iteye.com/blog/841632 python全局变量 1. 函数是可以访问全部变量的 a = 9527 def modify() :print a if __name__ == ‘__main__’ :modify()执行结果,就是打印出 9527 2. 如果在函数里 对全局变量进行修改,就会报错 #!/usr/bin/env python# -*- coding: utf-8 -*- a = 9527 def modify() :a += 1