Python--模块引用

每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。
 
内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回
import fibo, sys
dir(fibo) #['__name__', 'fib', 'fib2']
 
 
比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。
目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包,最简单的情况,放一个空的file:__init__.py就可以了。
导入语句遵循如下规则:如果包定义文件 __init__.py 存在一个叫做 __all__ 的列表变量,那么在使用 from package import * 的时候就把这个列表中的所有名字作为包内容导入。
作为包的作者,可别忘了在更新包之后保证 __all__ 也更新一下。
 
 
sys模块
sys.argv 是一个包含命令行参数的列表。
sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。
import os

print '***获取当前目录***'
print os.getcwd()
print os.path.abspath(os.path.dirname(__file__))

print '***获取上级目录***'
print os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
print os.path.abspath(os.path.dirname(os.getcwd()))
print os.path.abspath(os.path.join(os.getcwd(), ".."))

print '***获取上上级目录***'
print os.path.abspath(os.path.join(os.getcwd(), "../.."))
 
在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。
 
导入自写模块
1. 被调用文件和当前需要调用的文件在同一目录下
folder
----test_a.py
----test_b.py
----start.py
在start.py 下引入test_a.py的方法:
import test_a 或 from test_a import *
 
2. 被调用文件和当前需要调用的文件在不同文件夹目录
folder_a
----test_a.py
----test_b.py
folder_b
----start.py
 
在start.py 下引入test_a.py的方法:
1.先把folder_a 由普通文件夹改成包package:新建一个__init__.py 的空文件
2.start.py如下:
import sys
sys.path.append("..")      #这里引用的上级目录,如果是其它目录:sys.path.append('complete_path')
from folder_a.test_a import *    # 或 import folder_a.test_a
 

posted @ 2020-11-13 19:51  盲仔不瞎忙  阅读(53)  评论(0编辑  收藏  举报