先上代码:
# __init__文件:
# -*- coding: utf-8 -*-
"""
Created on Sat Apr 29 16:56:22 2017
@author: wang bei bei
"""
import sys,os
sys.path.append(str(sys.argv)[2:-2].replace("\\\\","\\").replace("\\__init__.py",""))
sys.path.append("..")
import time
import temp
if __name__ == "__main__":
while(1):
time.sleep(1)
print(temp.return_unrepeated_url_io())
# temp文件:
# -*- coding: utf-8 -*-
"""
Created on Sat Apr 29 16:56:22 2017
@author: wang bei bei
"""
import time
unrepeated_url_io=0
set_=set()#去重需要用到的set
def return_unrepeated_url_io():
global unrepeated_url_io
return unrepeated_url_io
def return_set():
global set_
return set_
#直接导入temp.unrepeated_url_io只能得到浅拷贝,对应文件的修改不能体现出来。
#需要调用函数返回最新的数值不断刷新才行
if __name__ == "__main__":
while(1):
time.sleep(1)
unrepeated_url_io=unrepeated_url_io+1
print(unrepeated_url_io)
# 这个程序的想法很简单,temp文件负责修改变量然后__init__文件负责打印该变量
# 涉及到了跨文件调用全局变量的一点点东西,使用的方法就是每隔一段时间调用
# return_unrepeated_url_io这个函数返回temp里的全局变量,因为跨文件引用全局
# 变量虽然传的参数使用id()打印出来的是一样的,但是实质上传的只是一个浅拷贝
# (我也不知道作者为什么要这么设计..)
# 但是非常坑爹的一点是.......使用了 if __name__ == "__main__": 之后竟然出问题了....
# 之前可以实时刷新的功能因为 if __name__ == "__main__": 的出现失效了.....
# 但是在删除了temp中的 if __name__ == "__main__": 后又恢复了......
>>> 接下来是解(猜)释(测)时刻:
1.为什么要有 if __name__ == "__main__": 这玩意??
>>>因为测试需要执行的代码在主函数调用该库文件之后中希望被屏蔽(不执行)
>>>那在__init__调用temp.return_unrepeated_url_io()时测试代码可能就被选择屏蔽了......
>>>所有的修改都不会被传到__init__的主函数中.....最后失效
>>>
>>>
然后要注意的是,两个文件所处的位置在上下级的文件夹时该怎么办?
具体如下:
|---temp.py
|---package
| | __init__.py
这时候导入sys包
# sys.path.append(str(sys.argv)[2:-2].replace("\\\\","\\").replace("\\__init__.py",""))
# sys.path.append("..")
# 二选一即可