标签:开源 cimage ack 优先 输出 rar teacher hello 也会
? ? 随着代码量的不断增多,一个文件里代码会越来越长,也不容易维护。为了解决这种问题,我们会进行拆分,并将具备类似的功能放同一文件中。这样每个文件包含的代码就相对较少。在Python中一个.py文件就称之为一个模块,英文叫(module)
? ? 使用模块的好处如下所示:
? ? 模块虽然解决了函数名、变量名和类名等命名冲突,那模块之前也会存在命名冲突的情况,应该怎么解决?为解决这个模块命名冲突,Python引入了按目录来组织模块的方法,称为包,英文(package)
? ? 举个例子,现在有两个py文件,分别为surpassA.py和surpassB.py,则相应的模块名即为surpassA和surpassB。如果这两个模块名与其他模块名存在冲突,则可以包来组织模块,使其成为包。方法是选择一个顶层包名,如surpass,按以下形式进行存放
surpass
|—— __init__.py
|—— surpassA.py
|—— surpassB.py
? ? 在引入包之后,只要顶层的包名没有冲突,则可以确保模块名不会产生冲突。则相应的模块名也由原来的模块名变更为surpass.surpassA和surpass.surpassB。
1.包的注意事项:每个包目录中必须存在__init__.py文件,否则Python会将视为普通目录,而非一个包。
2.__init__.py文件内容可以为空,也可以有相应的代码,其本身也是一个模块
? ? 类似这种情况,在一个包里面也是可以存在多个目录,组成多层级的包,示例如下所示:
surpass
|—— __init__.py
|—— surpassA.py
|—— surpassB.py
|—— config
| |—— __init__.py
| |—— surpassC.py
| |—— surpassD.py
|—— web
|—— __init__.py
|—— surpassE.py
|—— surpassF.py
? ? 以示例对应的模块名分别如下所示:
? ? 在Python中库是具有相关功能模块的集合,英文(library)。可分为以下三种形式:
? ? 第三方库的安装,一般使用pip安装,其形式如下所示:
pip/pip3 install -U 库名
? ? Python自身内置了很多模块,只要安装完成后,即可以正常调用。导入模块的常见形式如下所示:
import 模块名
import 模块名 as 别名 # 在模块名称特别长的时候,可以简化调用所输入的模块名
import 模块名A,模块名B,模块名C,
from 模块名 import 函数名/类名 # 导入指定模块中的函数或类
from 模块名 import * # 导入指定模块中的所有内容,但排除以下划线开头的变量、函数等
? ? 引入某一特定路径下的模块,可使用sys.path.append(模块名),示例如下所示:
import sys
# 表示将上一层路径添加到sys.path中,在添加之后,解释器会搜索当前模块所在目录以及sys.path指定的路径去找需要import的模块
sys.path.append("..")
? ? 导入模块需要遵循的规则如下所示:
person.py
class Person:
def __init__(self,name,age):
self._name=name
self._age=age
def getPerInfo(self):
print(f"name is {self._name},age is {self._age}")
mulClass.py
class Student:
def __init__(self, name, age,classNo):
self._name = name
self._age = age
self._classNo=classNo
def getPerInfo(self):
print(f"name is {self._name},age is {self._age},class NO. is {self._classNo}")
class Worker:
def __init__(self,name,occupation):
self._name=name
self._occupation=occupation
def getWorkerInfo(self):
print(f"name is {self._name},he/she is {self._occupation}")
class Teacher():
def __init__(self,name,classNO):
self._name=name
self._classNo=classNO
def getClassNo(self):
print(f"teacher‘s name is {self._name},His/Her‘s class is {self._classNo}")
def testFunc(name):
print(f"Hello, {name}")
main.py
import person
from mulClass import Student
from mulClass import testFunc
if __name__ == ‘__main__‘:
person=person.Person("Surpass",28)
person.getPersonInfo()
student=Student("Surpass",18,"Class-1")
student.getStudentInfo()
testFunc("testFunc")
输出结果如下所示:
name is Surpass,age is 28
name is Surpass,age is 18,class NO. is Class-1
Hello, testFunc
本文地址:https://www.cnblogs.com/surpassme/p/13020585.html
本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:
标签:开源 cimage ack 优先 输出 rar teacher hello 也会
原文地址:https://www.cnblogs.com/surpassme/p/13020585.html