python 3 基础之模块的制作、导入
2021-04-23 10:30
标签:静态方法 安装 全局 strong function 一个 解析 自己 命名 模块 一个项目里的各个单位由小到大: 变量(全局变量、局部变量、实例属性、类属性)——>函数方法(实例方法、类方法、静态方法)——>类——>模块——>包——>工程(项目) 1、模块是什么? 在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字 说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块 要使用非本.py文件里的类、函数或者变量等,必须先用import关键字引入模块名称,然后才能调用(模块名.函数名) 2、模块的制作 在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字 2.1、定义一个模块test.py 调用自己定义的模块 2.2、制作一个模块(正常代码、测试代码),if __name__ == ‘__main__‘ test.py 创建一个测试模块ceshi.py调用test.py 解释:调用自测函数为什么不用main(),用if __name__ == ‘__main__‘ 一个模块的自测函数调用方式使用了:if __name__ == ‘__main__‘ 就会出现这样的情况:在本模块中可以正常调用自测函数,而在另外一个模块调用本模块时,自测函数不会运行(因为另外的模块不需要此自测函数,所以用这种方式) 在同一个.py文件中,打印__name__结果均为__main__;把一个test.py文件的打印__name__的代码封装成函数,导入另外一个模块cesh.py使用,打印出来的结果是test.py的模块名字test 3、导入模块(关键字import) 如果一个模块被另一个模块导入后 就把这个模块里面可以执行的代码都执行一遍 3.1、python中使用import 关键字导入模块 导入模块格式: 当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。 3.2、调用非本模块的函数 格式:模块名.函数名 调用非本模块的函数为何要加上模块名: 会有一种情况:在多个模块中含有相同名称的函数,若只是通过函数名来调用,解释器不知道到底要调用哪个函数,会报错。所以如果像上述这样引入模块的时候,调用函数必须加上模块名 3.3、单独调用非本模块的某个函数 此时只需要引入该函数即可:from.......import...... 不仅可以引入函数,还可以引入一些全局变量、类等 通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数function( ),在模块B中也有函数function( ),如果引入A中的function在先、B中的function在后,那么当调用function函数的时候,是去执行模块B中的function函数 3.4、导入一个模块的所有东西(函数、变量、类) from 模块名 import * 如果想一次性引入math中所有的东西,还可以通过from math import *来实现 这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。 3.5、给导入的模块起别名 as 格式:import 模块名 as 别名(在此模块只使用别名即可) 3.6、模块中的__all__变量使用(只有配合from 模块名 import*使用才有效) __all__也属于模块中的变量,如果一个模块用了__all__ = [‘变量1‘,‘变量2‘.....] 若在某个模块中使用了__all__,那么只有在__all__的列表中的字符串(变量)才可以被其他模块调用 要符合条件:其他模块必须是通过from 模块名 import* 方法导入的 如下test.py模块 test.py ceshi.py 3.7、定位模块 当你导入一个模块,Python解析器对模块位置的搜索顺序是: 当前目录 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/ 模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。 python 3 基础之模块的制作、导入 标签:静态方法 安装 全局 strong function 一个 解析 自己 命名 原文地址:https://www.cnblogs.com/will-wu/p/13269944.htmldef test_sum(a,b):
return a + b
import test
print(test.test_sum(3,4))
name = ‘制作模块‘
def add2num(a,b):
return a + b
class Person(object):
def eat(self):
print(‘人会吃饭‘)
# 用来测试代码的函数(自测函数),一般命名main()
def main():
print(name)
ret = add2num(12,32)
print(ret)
p = Person()
p.eat()
# 调用测试函数
if __name__ == ‘__main__‘:
main()
import test
# 需要测试test模块,定义 一个本模块的测试函数
def main():
print(test.name)
ret = test.add2num(222,22)
print(ret)
p = test.Person()
p.eat()
# 调用测试函数
if __name__ == ‘__main__‘:
main()import 模块名1,模块名2..........
# 实例:导入随机模块
import random
from 模块名 import 函数名1,函数名2....
from math import *
# 条件 其他模块必须是通过from 模块名 import * 方式导入的模块
__all__ = ["name",‘add2num‘]
name = "加法运算"
def add2num(a, b):
return a + b
def delnum(a,b):
return a - b
from test import *
# 可以正常调用
print(name)
print(add2num(33,8))
# 调用delnum函数失败
f = delnum(33,2)
print(f)
文章标题:python 3 基础之模块的制作、导入
文章链接:http://soscw.com/index.php/essay/78494.html