func.py
def my_abs(x):
if x >= 0:
return x
else:
return -x
print(my_abs(-8))
导入引用func.py中的my_abs函数
test.py
from day1.func import my_abs #导入函数
print(my_abs(-9))
import day1.func #导入模块
print(day1.func.my_abs(-8))
from day1 import func #导入模块
print(func.my_abs(-7))
#print(abs(A))
help(abs)
----------------------------------
以相对路径导入模块,把要导入的模块的上级目录添加到环境变量中
import os
import sys
BASE_DIR =(os.path.dirname(os.path.dirname( os.path.abspath(__file__) )))
BASE_DIR = ('%s%s' %(BASE_DIR,'day1'))
sys.path.append(BASE_DIR)
print (BASE_DIR)
import abc1 #标红是因为pycharm在代码运行之前加载的时候,没有找到这个文件,所以会标红。
print(abc1.my_abs(-8))
print(sys.path)
print(__file__) #获取的是当前运行的相对路径
print( os.path.abspath(__file__) ) #获取的是当前运行的绝对路径
print(os.path.dirname( os.path.abspath(__file__) )) #获取当前运行的绝对路径的上级目录
此运行的代码是和day1同级目录下的一个文件夹中的文件里运行的。
-----------------------------------------------
模块定义、导入、优化详解
1.定义:
模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test)
包:用来从逻辑上组织模块的,本质就一个目录(必须带有一个__init__.py文件)
2.导入方法
import module_name
import module1_name,modul2_name
from module_alex1 import * #不建议使用浪费内存,查找慢
from module_alex1 import m1,m2,m3
from module_alex1 import logger as logger_alex
3, import本质(路径搜索和搜索路径)
导入模块的本质就是把python文件解释(运行)一遍(import test test='test.py all code')
(from test import m1 m1='m1 all code')
import module_name ---->module_name.py ----->moudle_name.py的路径------>sys.path ;根据sys.path 环境变量里的列表顺序查找模块的,如果添加在最后,前面的环境变量里面有重复的这个模块名,就会加载sys.path里前面的那个模块,sys.path 是相对路径,只是pycharm会解释成绝对路径;
导入包(import 包名)的本质就是执行该包下的__init__.py文件
可以在该包的__init__.py下添加 form . import 模块名,这样别的地方就可以用这种方式调用这个模块;
4. 导入优化
from module_test import test
这样的好处是不用去查找module_test这个模块,减少代码运行时间
如果这样的话:
improt module_test 调用 test 函数的话
需要 module_test.test()调用,这样增加了代码的运行时间,不建议使用;
5.模块分类
标准库
开源模块
自定义模块
参考:
https://www.cnblogs.com/luckerzhang/p/9390580.html