一个有关python包管理的有趣问题

先上代码:

# __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("..")
# 二选一即可
image.png

image.png
image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,857评论 0 17
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,968评论 25 709
  • 其实我们最开始接触的古代文学就是唐诗宋词,最先熟背的一定是一首古诗。唐诗与宋词相比,我更喜欢宋词,不是因为...
    张添雅阅读 3,465评论 0 1
  • 随着《欢乐颂2》的陆续播出,剧中的角色开始被越来越多的人所议论。 其中最具争议的莫过于樊胜美这个角色,小编不得不说...
    霍小柒阅读 4,168评论 0 4
  • 成功有三大重要因素,你知道吗?确实在我没有加入思涵创业平台之前,对于成功应该具备什么样的条件,我全然不知,心里确实...
    笙歆阅读 3,226评论 0 1

友情链接更多精彩内容