本文总结一个我自己犯的python编码错误,这个错误用一句话来概括,就是:引入模块的全局变量未定义!

具体是这样的:我有一个模块A,和一个模块B,在B中import模块A,然后在B的代码中调用A.func,这时python解释器提示,有一个名叫aa的全局变量找不到,不可访问。

模块A的代码如下:

$ cat test_a.py

def print_aa():

print(aa)

if __name__ == '__main__':

aa = 123

print_aa()

模块B的代码如下:

$ cat test_b.py

from test_a import print_aa

print_aa()

执行效果如下(先运行模块A):

$ python3 test_a.py

123

$ python3 test_b.py

Traceback (most recent call last):

File "test_b.py", line 4, in

print_aa()

File "/home/xinlin/test/test_a.py", line 4, in print_aa

print(aa)

NameError: name 'aa' is not defined

为什么在执行模块B的时候,aa这个全局变量显示没有定义呢?

因为模块A的全局变量aa,定义在 if __name__ == '__main__' 这个条件判断为真的前提下!在模块B中,from test_a import print_aa,会导致python解释器将模块test_a加入sys.modules中,不过这个加入的过程,不会执行到 if __name__ == '__main__' 这个条件判断为真的代码流程中去!也就是说,如果整个程序的口入不是A,A所要用到的全局变量,都不能定义在 if __name__ == '__main__' 这个条件判断为真的代码流程中。

-- EOF --

python变量未定义_引入模块的全局变量未定义相关推荐

  1. python老是报参数未定义_浅谈Python程序的错误:变量未定义

    Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...

  2. python未定义_浅谈Python程序的错误:变量未定义

    Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...

  3. 变量的初始化与使用C语言程序注释,c - (为什么)使用未初始化的变量未定义行为?...

    C标准为编译器提供了很大的优势来执行优化. 如果您假设一个简单的程序模型,其中未初始化的内存被设置为某个随机位模式,并且所有操作都按照它们的写入顺序执行,那么这些优化的后果可能会令人惊讶. 注意:以下 ...

  4. python3中input()方法报错traceback变量未定义的解决方法

    python3中input()方法报错traceback变量未定义的解决方法 参考文章: (1)python3中input()方法报错traceback变量未定义的解决方法 (2)https://ww ...

  5. python未定义_未定义Python函数

    当我运行服务器(FLASK app)时,遇到一个函数未定义的错误: 名称错误:未定义名称"format_date" 这是我目前为止的所有代码:from flask import F ...

  6. python 变量类型注释_变量类型、命名规则及代码注释

    人类在纸上可以写数字,也可以写文字,用数字来计算,用文字来说话,在人类的意识里你写的东西代表不同的含义!同样,在程序里面我们也按照人的习惯来设计,因此就有了变量类型这种说法!任何语言都会涉及到变量类型 ...

  7. vue中渲染对象中属性时显示未定义_揭开 vue 背后的秘密(1)

    ​昨天写了关于 react 如何j将 jsx 渲染到界面,今天朋友让我来谈谈 vue,个人对于 vue 研究还是最近的事.说到 angular.react 和 vue 这三个前端主流框架,最先先接触的 ...

  8. python变量和常量_Python数学模块常量和示例

    python变量和常量 Python数学模块常量 (Python math module constants) In the math module, there are some of the de ...

  9. python中必须使用import引入模块_Python之import方法引入模块详解

    在python用import或者from-import或者from-import-as-来导入相应的模块,作用和使用方法与C语言的include头文件类似.其实就是引入某些成熟的函数库和成熟的方法,避 ...

  10. python变量作用域图解_图解python全局变量与局部变量相关知识

    这篇文章主要介绍了图解python全局变量与局部变量相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 了解全局变量和局部变量之前,我们先来了解 ...

最新文章

  1. 从大规模文献库中实现生物医学关系抽取
  2. cytoscape绘图互作网络图(二)
  3. python绘制动态模拟图-Python 模拟动态产生字母验证码图片功能
  4. 2015年9月百度前端在线笔试
  5. ScrollView以及TextView和对应链接
  6. [react] shouldComponentUpdate方法是做什么的
  7. html鼠标变成小手_什么牌子的鼠标好用?2020双十一鼠标选购建议和产品推荐
  8. 1008 计算(a+b)/c的值
  9. 预留128k文件空间c语言,【求助】请教ATMEGA128高64k空间如何正确读取使用
  10. 1.2.3 SPF计算过程
  11. Java项目:ssm在线答题系统
  12. js获取传统节假日_js判断节假日实例代码
  13. c++ tuling123_现代编译原理-图灵计算机科学丛书.pdf
  14. JavaWeb_基础知识
  15. 软件测试工作中遇到的痛点,RPA解决方案:几个典型行业痛点工作场景
  16. 重新规划,希望是转机
  17. 玩转云网络,这里有一份VMware最强指南
  18. 黑苹果MacOS Monterey 12.0 -12.3 OpenCore 0.8.0 (OC) 引导升级教程(最新版)
  19. 呼叫系统呼叫中心crm系统
  20. hbase应用场景和不适用的场景

热门文章

  1. Laravel 在哪些地方使用了 trait ?
  2. .NET 客户IP地址捕捉
  3. 按位与、按位或、按位异或、左移、右移运算符的简单介绍(部分二进制运算符的简单介绍)...
  4. WPF学习之页间导航与页间数据传递
  5. flex知識:container of spark
  6. ENVI入门系列教程---一、数据预处理---3.2 遥感图像几何精校正
  7. pip更新导致ImportError: cannot import name ‘InvalidSchemeCombination‘ from ‘pip._internal.exceptions‘
  8. Java启动sparksql,spark-sql启动的时候需要制定master吗?
  9. 数据结构------图(一)
  10. 我是如何通过思维系统实现年薪50万的?