python变量未定义_引入模块的全局变量未定义
本文总结一个我自己犯的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变量未定义_引入模块的全局变量未定义相关推荐
- python老是报参数未定义_浅谈Python程序的错误:变量未定义
Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...
- python未定义_浅谈Python程序的错误:变量未定义
Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...
- 变量的初始化与使用C语言程序注释,c - (为什么)使用未初始化的变量未定义行为?...
C标准为编译器提供了很大的优势来执行优化. 如果您假设一个简单的程序模型,其中未初始化的内存被设置为某个随机位模式,并且所有操作都按照它们的写入顺序执行,那么这些优化的后果可能会令人惊讶. 注意:以下 ...
- python3中input()方法报错traceback变量未定义的解决方法
python3中input()方法报错traceback变量未定义的解决方法 参考文章: (1)python3中input()方法报错traceback变量未定义的解决方法 (2)https://ww ...
- python未定义_未定义Python函数
当我运行服务器(FLASK app)时,遇到一个函数未定义的错误: 名称错误:未定义名称"format_date" 这是我目前为止的所有代码:from flask import F ...
- python 变量类型注释_变量类型、命名规则及代码注释
人类在纸上可以写数字,也可以写文字,用数字来计算,用文字来说话,在人类的意识里你写的东西代表不同的含义!同样,在程序里面我们也按照人的习惯来设计,因此就有了变量类型这种说法!任何语言都会涉及到变量类型 ...
- vue中渲染对象中属性时显示未定义_揭开 vue 背后的秘密(1)
昨天写了关于 react 如何j将 jsx 渲染到界面,今天朋友让我来谈谈 vue,个人对于 vue 研究还是最近的事.说到 angular.react 和 vue 这三个前端主流框架,最先先接触的 ...
- python变量和常量_Python数学模块常量和示例
python变量和常量 Python数学模块常量 (Python math module constants) In the math module, there are some of the de ...
- python中必须使用import引入模块_Python之import方法引入模块详解
在python用import或者from-import或者from-import-as-来导入相应的模块,作用和使用方法与C语言的include头文件类似.其实就是引入某些成熟的函数库和成熟的方法,避 ...
- python变量作用域图解_图解python全局变量与局部变量相关知识
这篇文章主要介绍了图解python全局变量与局部变量相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 了解全局变量和局部变量之前,我们先来了解 ...
最新文章
- 从大规模文献库中实现生物医学关系抽取
- cytoscape绘图互作网络图(二)
- python绘制动态模拟图-Python 模拟动态产生字母验证码图片功能
- 2015年9月百度前端在线笔试
- ScrollView以及TextView和对应链接
- [react] shouldComponentUpdate方法是做什么的
- html鼠标变成小手_什么牌子的鼠标好用?2020双十一鼠标选购建议和产品推荐
- 1008	计算(a+b)/c的值
- 预留128k文件空间c语言,【求助】请教ATMEGA128高64k空间如何正确读取使用
- 1.2.3 SPF计算过程
- Java项目:ssm在线答题系统
- js获取传统节假日_js判断节假日实例代码
- c++ tuling123_现代编译原理-图灵计算机科学丛书.pdf
- JavaWeb_基础知识
- 软件测试工作中遇到的痛点,RPA解决方案:几个典型行业痛点工作场景
- 重新规划,希望是转机
- 玩转云网络,这里有一份VMware最强指南
- 黑苹果MacOS Monterey 12.0 -12.3 OpenCore 0.8.0 (OC) 引导升级教程(最新版)
- 呼叫系统呼叫中心crm系统
- hbase应用场景和不适用的场景
热门文章
- Laravel 在哪些地方使用了 trait ?
- .NET 客户IP地址捕捉
- 按位与、按位或、按位异或、左移、右移运算符的简单介绍(部分二进制运算符的简单介绍)...
- WPF学习之页间导航与页间数据传递
- flex知識:container of spark
- ENVI入门系列教程---一、数据预处理---3.2 遥感图像几何精校正
- pip更新导致ImportError: cannot import name ‘InvalidSchemeCombination‘ from ‘pip._internal.exceptions‘
- Java启动sparksql,spark-sql启动的时候需要制定master吗?
- 数据结构------图(一)
- 我是如何通过思维系统实现年薪50万的?