python的模块和包,python基本模块中的对象
Yyds干货库存
一、Python内置模块1。什么是Python模块?一个Python文件,以。py,包含Python对象定义和Python语句。模块可以定义函数、类和变量,模块也可以包含可执行代码。
2.模块的分类在Python中,模块通常可以分为两类:内置模块(目前使用)和自定义模块。
3.模块导入模式导入模块名称
从模块名导入函数名
从模块名称导入*
将模块名作为别名导入
从模块名导入函数名作为别名
4.使用import导入模块的基本语法:
导入模块名称
或者
导入模块名1、模块名2、
使用模块中封装的方法:
模块名称。方法()
案例:使用Import导入数学模块
导入数学
#求数字9=3的平方根
print(math.sqrt(9))
案例:使用import导入数学和随机模块
导入数学,随机
print(math.sqrt(9))
print(random.randint(-100,100))
5.使用from模块名导入函数名提问:已经有导入模块了,为什么还需要使用from模块名导入函数名之类的导入方法?
答:import代表导入一个或多个模块中的所有函数,但在某些情况下,我们只想使用这个模块下的一些方法,而不是全部导入。此时,建议使用from模块名导入函数名。
从模块名导入*这个导入方法代表了导入这个模块的所有函数(相当于导入模块名)。
从数学导入*
从模块名导入函数名(推荐)从数学导入sqrt,floor
注意:以上两种方法可以用来导入一个模块中的一些方法,但是在调用具体方法的时候,我们只需要函数名()。
名称()
案例:
#从数学导入*
#或者
从数学导入sqrt,floor
#通话模式
打印(sqrt(9))
打印(地板(10.88))
6.使用as关键字为导入的模块定义别名。在某些情况下,如果导入的模块名称太长,建议使用as关键字对其进行重命名。以后调用这个模块的时候,可以用别名来操作。
导入时间为t
#通话模式
睡眠测试(10)
在Python中,如果你为一个模块定义一个别名,命名规则建议使用一个大驼峰。
7.使用as关键字将来自模块导入函数名的导入函数的别名定义为函数名别名
案例:
从时间进口睡眠为sl,时间为t
#通话模式
打印(“hello world”)
sl(十)
打印(“你好python”)
8.扩展:Python中时间模块中的time()方法,时间模块除了sleep方法之外还有一个方法叫time()方法。
time.time()
主要功能:返回从绿色时间到当前时间的秒数(时间戳)。
案例:求运行递归代码的执行时间。
导入时间
# Return:从绿灯时间到当前时间的秒数
start=time.time()
#编写递归函数
定义函数(n):
如果n==10:
返回1
return (func(n 1) 1) * 2
print(func(1))
end=time.time()
Print(f 上述代码已执行{end-start}s )
第二,Python 1中的自定义模块。什么是用户自定义模块?在Python中,模块可以分为两类:内置系统模块和用户自定义模块。
模块的本质:在Python中,模块的本质是一个Python独立文件(扩展名。py),它可以包含全局变量、函数和类。
注意:在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。也就是说,自定义模块名必须符合标识符命名规则。
2.定义自定义模块案例:在Python项目中创建一个自定义文件,比如my_module1.py
def sum_num(num1,num2):
返回数字1数字2
3.导入自定义模块导入模块名称
或者
从模块名导入函数名
案例:
导入我的模块1
#调用my_module1模块中的自定义sum_num方法
print(my_module1.sum_num(10,20))
4.自定义模块中的功能测试在我们编写完自定义模块后,最好提前在模块中测试代码,以防出现任何异常。
介绍一个魔方方法:__name__,它存储的内存是字符串类型的数据。
不同的运行页面返回的结果不同:
如果__name__正在当前页面上运行,则返回的结果是__main__
如果__name__导入到第三方页面,返回的结果是模块名。
基于上述特性,我们可以使用以下语法在自定义模块中编写__name__:
if __name__==__main__ :
#执行测试代码
__name__ magic方法不仅可以在自定义模块中测试使用,还可以作为编写程序的入口:
#定义一个主方法(入口文件)
def main():
#执行我们想要执行的功能
# 打印选择菜单
# 添加学生信息
# 删除学生信息。
# .
#调用执行门户
if __name__==__main__ :
主()
5.多模块中的函数命名冲突问题。我们在编写多个模块的时候,在导入到其他页面的时候可能会出现一个问题:全局变量、函数、类的名字都一样,我们称之为“命名冲突”。
例如,当导入my_module2和my_module3时,其中封装了一个func()方法。导入后,my_module3中的func()方法将覆盖my_module2中的func()方法。
my_module2.py
定义函数():
print( my _ module 2中的func方法)
my_module3.py
定义函数():
print( my _ module 3中的func方法)
导入到其他Python文件中并测试效果:
从my_module2导入函数
从my_module3导入功能
函数()
解决方案将所有模块的导入方法写入文件的顶部。如果发现任何命名冲突,立即与模块开发人员一起检查函数。
将重名方法重命名为。
从我的模块2导入函数作为我的模块2的函数
从my_module3导入func作为my_module3_func
6.模块命名的注意事项。在实际的项目开发中,一定要特别注意:我们自定义的模块名称一定不能和系统内置的模块名称相同,否则会导致代码无法正常执行。
举个栗子:定义一个与系统内置模块同名的模块。
random.py
08-引入自定义模块。py与Python中的系统模块同名
随机导入
print(random.randint(-100,100))
以上代码运行的结果是:
Randint属于随机模块的内置方法,不存在找不到的可能。出现上述问题的主要原因是我们项目中存在一个与系统模块同名的模块文件。因此,它指的是随机模块,以及它的执行顺序:
引入一个模块=查找当前项目中是否有同名文件=找到就直接使用,没有找到=继续查找=在Python解析器中
如何证明:模块的引用必须按照你说的顺序?
回答:使用__文件_ _魔术方法
打印(随机。__file__)
7.__all__ Magic Method如果一个模块文件中有__all__个变量,用from xxx import *导入时,只能导入这个列表中的元素。
主函数:限制模块中某些函数的使用,也就是说导入后可以使用的方法只能是封装在__all__中的那些。
案例:
我的_模块. py
__all__=[func1]
定义函数1():
打印(“func1方法”)
定义函数2():
打印(“func2方法”)
09-Python中受限引用模块中的method.py
从我的模块导入*
func1()
Func2() #报告了错误
三。Python 1中的Package包。什么是包裹包裹?它把相关的模块组织在一起,也就是把它们放在同一个文件夹里,创建一个名为__init__的文件。py放在这个文件夹里,那么这个文件夹就叫做包。
2.包的制作
新注册,如mypackage:
3.在包中创建多个模块。在mypackage中创建多个模块:my_module1和my_module2。
my_module1.py
打印(我的模块1 )
定义函数1():
print( my _ module 1模块的func1方法print(mypackage )
my_module2.py
打印(我的模块2 )
定义函数2():
print( my _ module 2模块的func2方法print(mypackage )
4.在项目代码中导入包。方法1:使用import导入包。
导入包名称。模块名
#调用模块中的方法
包名。模块名称。方法名称()
方法2:使用from导入包。
从包名导入*
#调用模块方法
模块名称。方法名称()
注意:您必须将__all__=[]添加到__init__。py文件来控制允许导入的模块列表。
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。