Day26--Python--包

1. from xxxx import *
从xxx导入所有. 如果XXX模块内部有__all__ 导入all中的内容. 如果没有__all__全部都导入
__all__ = ["money", "chi"] # 此时如果有人导入这个模块. 并且是from xxx import *
money = 5000

def chi():
    print("人喜欢吃东西")

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self): # 当执行print(对象)
        return self.name + str(self.age)+"明天换套衣服"

# 此时money 和chi都可以访问,但是Person不能调用

2. 包
  from urllib.request import urlopen # 点 前面的一定是包
  包其实就是文件夹

  from urllib import request
  request.urlopen()

文件夹内包含了__init__.py在导入包的时候, 默认执行__init__.py
   py2中,包中必须有__init__.py,但是py3中不强制.如果自己写包一定要加__init__.py,否则不容易确定文件夹是否是一个包
创建包:
    创建文件夹
    创建__init__.py
    使用pycharm可以直接创建python的package(包)

   查找的顺序: 内存 -> 内置 -> sys.path
sys.path有坑: 根据你启动的脚本所在的位置确定查找包, 模块的路径
sys.path.insert(0, "你想加入的位置") # sys.path是一个列表,可以insert和append,但不建议使用
1. 绝对路径
从sys.path找. 根


2. 相对路径
相对于当前文件所在文件夹
. 当前
.. 上一层
启动脚本不能在包内, 所以一般在包外都写一个run.py
# run
if __name__ == '__main__':
    pass
View Code run.py

 

原文地址:https://www.cnblogs.com/surasun/p/9779638.html