python文件名带日期变量_Python变量和文件名冲突

这是我的项目结构:

a

├── b.py

└── __init__.py

>文件b.py为空.

>文件__init__.py是一行:

b = 'this is a str'

然后以下程序给出了a.b的不一致结果:

import a

print(a.b) # str

import a.b

print(a.b) # module

检测变量和文件名之间这种名称冲突的最佳方法是什么?

解决方法:

“以下程序给出了不一致的打印结果(a.b)”

我想指出,虽然结果可能不同,但事实上,Python并没有做任何不一致的事情.没有详细介绍,这就是程序中每一步所发生的事情.

进口一个

Python搜索sys.path上的目录,直到找到其中一个:一个名为“a.py”的文件,或一个名为“a”的目录,其中包含一个名为__init__.py的文件. Python然后imports你的package.值得注意的是,Python没有查看包“a”并自动导入所有“.py”文件(这节省了内存和时间).

打印(a.b)

Python查找a的属性b,它在__dict__属性中找到. b的值是’this is a string’,它被打印出来.

导入a.b.

Python导入你的模块.使用此语句,与__dict__中的键b对应的值将成为模块对象a.b.

打印(a.b)

Python查找属性b. b的值是打印的模块对象a.b.

“检测这种名称冲突的最佳方法是什么?”

您可以编写一个脚本来列出包中所有模块的名称,以及所有变量(本地和全局),并确定是否存在任何冲突.然而,恕我直言,在这种情况下,一盎司的预防值得一磅治疗; Python中的良好命名约定(一个很好的资源 – PEP8)是防止这样的错误的最佳方法.

标签:python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值