模块简介与导入

模块简介与导入

周而复始,方得始终

1.迭代取值
l1 = [11, 22, 33, 44, 55, 66]
res = l1.__iter__()
print(res.__next__())  # 11
print(res.__next__())  # 22
print(res.__next__())  # 33
print(res.__next__())  # 44
print(res.__next__())  # 55
print(res.__next__())  # 66
"""
迭代取值是我们经常使用的一种取值方式,通过while或者for循环的方式将列表字典元组等地方的值一次取出,但是他
每次取值都是在上次取值的基础上再次取值,取完就没了,再也取不了之前取过的值这就是他的弊病
"""
2.索引取值
l1 = [11, 22, 33, 44, 55, 66]
print(l1[0])  # 11
print(l1[1])  # 22
print(l1[2])  # 33
print(l1[0])  # 11
"""
我们在索引取值的时候是可以根据他的所在位置将他里面的值索引出来,可以将里面的值重复取出但是必须知道这个地方
的内部是什么或者有多少取多少,如果数据过多的话那么就不太建议使用索引取值
"""

image

乘风起高,渡海随行

1.模块的本质	
	模块其实就是别人写的或者自己写的代码我们可以通过调用直接使用别人写的程序,只需要调用然后我们就可以
	使用别人代码的功能。
2.模块的分类
	2.1内置模块
    	内置模块其实就是我们python自带的一些模块,我们直接在py文件中调用就可以使用模块中的内容和功能,例
	如:import time,import sys等的一些自带模块
	2.2自定义模块
    	自定义模块其实就是我们自己写的一些功能模块,如果在相同文件夹内那么我们其实就可以直接调用我们自己
	写的一些模块功能就不需要去重复书写例如我们之前学的一些请输入您的姓名什么的都可以当作模块使用
	2.3第三方模块
    	第三方模块其实就是我们可以去网上寻找别人写的模块下载下来,然后将他放到文件夹中调用即可使用,例如
	一些早已经被写出来并分享到网上的一些大佬模块:图片翻译,小爱同学,图形可视化等
3.模块的表现形式
	3.1py文件我们也可以叫做模块文件我们可以直接调用py文件名直接调用内部的代码,当然必须得同级别
	3.2第二个其实就是由多个py文件共同组成的一个文件夹,我们也可以叫做包(内部按照不同功能来划分不同
	的文件夹来存储)
	3.3已被编译为共享库或DLL的c或C++扩展
	3.4使用C编写并链接到python解释器的内置模块

image

屋漏偏逢连夜雨,借把秋伞盖昏天

1.模块导入到两种模式
	1.1import xxx  # 调用整个模块
		模块文件中的代码:
        name = 'joseph'  # 变量
        def func1():  # 函数1
            print('from func1')  # 输出1
        def func2():  # 函数2
            print('from func2')  # 输出2
        def block():  # 函数3
            global name  # 改变全局名称空间的name
            name = 'Alice'  # 变为alice
	调用代码的文件:
	import experimenta  # 调用模块
	name = 'trump'  # 在本文件全局名称空间创建一个name的变量
	print(experimenta.name)  # 调用模块中的name  joseph
	print(experimenta.func1())  # 调用函数1from func1
	experimenta.block()  # 调用函数3改变name的变量  
	print(experimenta.name)  # 打印模块中的name  Alice
	print(name)  # 打印本文件的name  trump
	xperimenta.func2()  # 打印模块2  from func2
"""
当我们使用import的时候调用的是整个文件中的所有程序每一个变量名和函数名会直接产生以恶搞模块名称空间这个名
称空间的名字由文件名来定义然后将内部所有的变量名存进去调用,我们只需要调用一次这个模块之后就不许要再继续
调用这个模块了
"""
	1.2form xxx import xxx  指名道姓调用
		from experimenta import name  # 从experimenta模块中调用name
		print(name)  # joseph  只能取到name别的全都取不到
		name = 'quinn'  # 改变name的变量
		print(name)  # 重新打印name
		print(experimenta.func1())  # 打印func1函数  报错因为没有调用
"""
在调用阶段使用form xxx import xxx 只能指名道姓调用,但是可以在这个后面加逗号隔开继续调用多个名称,就相
当于我们在调用模块的时候打开了整个模块但是我们只要那个模块中的某一个变量名或函数名然后将他导入本文件的全局
名称空间中就只有他一个变量名其他的来了我们也统统拒之门外不要,公子今晚只服侍一人
"""

image

更名改姓人依旧,死到头来还是你

1.起别名
	1.1当我们调用多个模块时容易出现多个模块名相同的情况,所以我们就出现了起别名,为了我们方便区分他们,
	那个是哪个以防调用失败以及场面混乱
    import time as aaa
    import time as bbb
    import time as ccc
    print(aaa.xxx)
    print(bbb.xxx)
    print(ccc.xxx)
	1.2第二种就是我们调用的文件名过于复杂的话那么我们最好也帮他起一个别名:dog egg, dog left
	the son,rhubarb,Pig boy等简单方便我们记忆即可
    import experimenta as aaa
    import dog left the son as sb
    print(aaa.xxx)
    print(sb.xxx)

众佳侍一夫,今夜已难眠

1.导入多个名字
	1.1导入多个模块
		import time,sys,os
		虽然这样也能一次性导入多个文件但是经常容易出现错误,只有在上方多个模块功能相近的时候才可
		以采用上方那种导入模式
		import time
		import sys
		import os
		在python中如果导入多个模块建议这样一次一个的往里导入。
	1.2方式二:
		from experimenta as name, func1, func2
		当在导入同一个模块中的不同变量或函数的时候我们就可以采用一次性导入多个因为他本来就是同
		一个模块中的

image

万将攻城,歌酒起宴

1.全导入
	当我们在使用同一个模块中的功能并且只能使用from xxx import的时候我们就可以采用全导入的方式导入
	from xxx import *
	就可以将那个模块中的所有功能导入本文件我们直接调用即可
2.私密的程序不想被全导入的话我们可以直接给她限定可以导入些什么也就是针对*号来导入使用__all__ = [字
符串名字]就可以只给他调用你这个里面所包含的变量与函数

image

时空轮转无断言,另辟蹊径转安危

1.循环导入
	循环导入其实就是两个文件之间互相需要对方文件中的代码就需要用到循环导入,不过如果导入不当那么就会
	直接报错,如果我们遇到循环导入时,我们应该在使用对方调用的时候先将他所需要的东西放到前面我们调用放
	到后面以防产生冲突,我们应该尽量避免循环导入这种情况的发生。

image

近友远亲皆赴此,混淆不清是非多

1.判断文件类型
	在我们之后要用的代码中可能就会需要在多个文件中来回的去倒那么我们就需要判断py文件是作为模块文件还
	是执行文件,那么这时我们就能使用__name__
	__name__当文件是执行文件的时候会返回__main__	
	如果文件是被当做模块导入则返回文件名(模块名)
	print(__name__)  # __main__
	if __name__ == '__main__':
	print(True)
	if __name__ == '__main__':
  		read1()
"""
在pycharm中可以直接敲 main按tab键即可自动补全if判断
"""

image

万变不离其宗源,己不乱则究其宗

1.查找顺序
	首先从内存空间中寻找→→然后去内置名称空间中寻找→→最后要是还找不到的话就调用sys模块使用内部的sys.
	path来寻找他的环境变量
2.实际操作
	import experimenta
	import time

	time.sleep(8)
	print(experimenta.name)
"""
首先我们先调用了两个模块,然后使用sleep睡眠调用下方模块,并将上方模块文件删除然后还是执行了出来,就证明他
是在执行的一瞬间就将所调用的模块输入到这个文件中,然后删除也不会影响调用,但是一旦运行结束再运行的话那就
没有这个模块也就不能执行了
"""
	import sys
	sys.path.append(r'D:\pythonProject\day22\xxx')
	import experimenta
	print(experimenta.name)
"""
如果不是同一个地址那么就需要添加执行文件的地址才能调用该模块
"""

image

posted @ 2022-07-13 20:09  Joseph-bright  阅读(56)  评论(0编辑  收藏  举报