#! /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 __name__ == '__main__':

func()

输出结果:

可以看出,无论是列表还是变量,都是可以直接引用的。

二、修改

使用到的全局变量,需要在函数中修改的话,就涉及到歧义问题,如:

#! /usr/bin/python

a = 1

b = [2, 3]

def func():

a = 2

print "in func a:", a

b[0] = 1

print "in func b:", b

if __name__ == '__main__':

print "before func a:", a

print "before func b:", b

func()

print "after func a:", a

print "after func b:", b

输出结果:

可以看出,对于变量a,在函数func中"a = 2",因为存在既可以表示引用全局变量a,也可以表示创建一个新的局部变量的歧义,所以python默认指定创建一个新的局部变量来消除这一歧义,但对于列表b而言,"b[0] = 1"不存在这种歧义,因此直接修改了全局变量,但是如果改成了"b = [3, 4]",那么b也会变成局部变量。特别地,当在func中a = 2之前加入"if a == 1:"这一语句,脚本运行出错,因为这一语句引入了全局变量,导致了"a = 1"这一语句无法创建同名的局部变量。

因此,需要修改全局变量a,可以在"a = 2"之前加入global a声明,如:

#! /usr/bin/python

a = 1

b = [2, 3]

def func():

global a

a = 2

print "in func a:", a

b[0] = 1

print "in func b:", b

if __name__ == '__main__':

print "before func a:", a

print "before func b:", b

func()

print "after func a:", a

print "after func b:", b

输出结果:

结论:引用全局变量,不需要golbal声明,修改全局变量,需要使用global声明,特别地,列表、字典等如果只是修改其中元素的值,可以直接使用全局变量,不需要global声明。

python if 语句内的变量是全局变量吗_python全局变量和局部变量相关推荐

  1. python全局变量赋值_Python全局变量和局部变量

    python中,对于变量作用域的规定有些不一样. 在诸如C/C++.java等编程语言中,默认在函数的内部是能够直接訪问在函数外定义的全局变量的,可是这一点在python中就会有问题.以下是一个样例. ...

  2. python语言保留字可以用变量名来命名_Python语言基本语法元素之变量,变量的含义及命名规则...

    教学是对知识的二次加工. 笔者希望给python初学者提供帮助.上一篇文章写了Python语言基本语法元素之格式框架:注释.缩进.续行符 这里继续,Python语言基本语法元素之变量. 我们来看看前4 ...

  3. python设置全局变量失败_Python全局变量与global关键字常见错误解决方案

    在Python的变量使用中,经常会遇到这样的错误: local variable 'a' referenced before assignment 它的意思是:局部变量"a"在赋值 ...

  4. python语言中内置的字符串排版方法_python基础知识(python内置数据类型-字符串)...

    python中的字符串 字符串基本特点 字符串的本质是字符序列.python中的字符串是不可变的,无法对原字符串做任何修改(不能用下标赋值的方式去改变字符串).但是可以将字符串的一部分赋值创建新的字符 ...

  5. 在python中可以使用for作为变量名对吗_python能用一个变量的值作为另一个变量的变量名吗?...

    =================== A = ['零', '一', '二', '三'] B = ['zero', 'one', 'two', 'three'] for index, item in ...

  6. python定义公民类、变量有身份证号_Python趣解身份证号码的奥秘!

    原标题:Python趣解身份证号码的奥秘! 问题描述 作为一个公民,每个人都有一张独一无二的身份证,有独一无二的身份证号码.在这里面几乎储存了我们所有的行踪与信息,所以有很多不法分子能够仅通过身份证号 ...

  7. python choose语句作用_理解闭包是如何与变量作用域相互影响的

    原文标题:KNOW HOW CLOSURES INTERACT WITH VARIABLE SCOPE 比如说你现在想要对一组数字进行排序,同时希望提高一组数字的优先级使这组数字优先显示.这种模式在展 ...

  8. python 函数递归一次增加一次变量_python3--函数(函数,全局变量和局部变量,递归函数)...

    1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合. 函数名:就相当于是程序代码集合的名称 参数:就是函数运算时需要参与运算的值被称作为参数 函数体:程序的某个 ...

  9. python函数作用域包括局部变量和参数_python函数变量的作用域声明(全局变量和局部变量)...

    函数变量的作用域声明(全局变量和局部变量) 引入问题: 局部变量: 局部变量:定义在函数内部的变量,它的作用域也仅限于函数内部,出了函数就不能使用了. 例如: #encoding = utf-8 de ...

最新文章

  1. Python 从入门到精通:一个月就够了!
  2. 集合 Subset Sums
  3. C语言运行界面字体,C语言实现图形界面登陆窗口.docx
  4. redhat java配置
  5. ElasticSearch之 控制相关度原理讲解
  6. sublime text 3 package control
  7. Spring中采用公共变量并发问题解决
  8. 网站导航颜色停留_提高网站流量的方法有哪些?
  9. SQL Server数据库入门
  10. C盘搬家,不需要任何第三方工具
  11. Rockchip BT.656 TX 和 BT.1120 TX 开发指南
  12. P02014171 刘天一 作业
  13. python输入负数_如何让python使用负数
  14. DevpTips【golang】安装到测试
  15. SDS很好,但处理器需“减负”!
  16. springCloud Alibaba seata 分布式事务
  17. 啊,CET6 2020年12月
  18. HM5080E带平衡功能、5V USB输入8.4V/1.5A两节锂电池充电芯片
  19. FLV流媒体格式详细介绍
  20. 分析师分析业务维度,附(个人制作分析思维导图Xmind)

热门文章

  1. Linux系统编程——冯诺依曼体系结构,操作系统
  2. 快手内容运营技巧,快手上热门秘籍分享;国仁楠哥
  3. Ribbon基本简介
  4. 实验2-2-6 计算分段函数[3] (10 分)
  5. iOS性能优化 - 耗电优化
  6. button与验证控件的矛盾
  7. 人像跟踪相机_什么是拍摄人像的最佳相机镜头?
  8. 使用azkaban 建立一个简单的任务调度系统
  9. HoloLens2之路-Unity2019.4+MRTK2.6配置
  10. 期货保本保利意思(期货保本保利意思是啥)