问题发现

xxx = 23
def PrintFileName(strFileName):
if xxx == 23:
print strFileName
xxx = 24 PrintFileName("file")

报错

Traceback (most recent call last):
File "C:/Users/Desktop/del.py", line 7, in <module>
PrintFileName("file")
File "C:/Users/jihite/Desktop/del.py", line 3, in PrintFileName
if xxx == 23:
UnboundLocalError: local variable 'xxx' referenced before assignment

意思说局部变量‘xxx’前边没有定义,但是最前面不是定义了吗。注意这里提示是局部变量,一开始定义的为全局变量。如果这里定义的就是全局变量可以通过关键字global来说明

xxx = 23
def PrintFileName(strFileName):
if xxx == 23:
global xxx
print strFileName
xxx = 24 PrintFileName("file")

运行正常。

但是这样也是没错

xxx = 23
def PrintFileName(strFileName):
if xxx == 23:
print xxx PrintFileName("file")

问题所在

在python的函数中和全局同名的变量,如果你有修改变量的值就会变成局部变量,在修改之前对该变量的引用自然就会出现没定义这样的错误了,如果确定要引用全局变量,并且要对它修改,必须加上global关键字。

最新文章

  1. Android随笔之——Activity中启动另一应用
  2. Gulp如何编译sass
  3. DEDE有无缩略图如何调取
  4. Lingo语法
  5. nginx配置rewrite
  6. .net winform软件自动更新
  7. umask:遮罩码
  8. Matlab求范数
  9. 图论(2-sat):HDU 4421 Bit Magic
  10. 关于 iOS socket 都在这里了
  11. Lesson 7: Responsive Typography In Action
  12. iOS - UITableViewCell Custom Selection Style Color
  13. 随记,C#修饰符访问级别
  14. 武汉科技大学ACM :1004: C语言程序设计教程(第三版)课后习题6.3
  15. 如何把程序钉到Windows7任务栏(修正版)
  16. centos下的activemq的配置及PHP的使用
  17. CSS个别属性
  18. python习题二
  19. PyQt5——基本控件
  20. mybatis中两种取值方式?谈谈Spring框架理解?

热门文章

  1. 第一个.NET Core应用,创建.NET Core命令
  2. Spring Boot - Spring Async
  3. 用Echarts的力向导图可视化数据
  4. 深入了解java虚拟机(JVM) 第三章 内存区域----堆空间
  5. js返回上一级代码和刷新页面代码
  6. 集合的addAll方法--list.addAll(null)会报错--java.lang.NullPointerException
  7. Windows下使用DOS命令进入MySQL数据库
  8. [ActionScript 3.0] 如何获得实例对象的类名及类
  9. [转] Linux 硬件设备查看命令
  10. Touchmove获取当前触摸的Dom节点