python 包管理机制,python包管理工具pip
1.模块A模块是一个包含python代码的文件,后缀名是。py。模块是一个python文件。为什么我们会使用太大的模块程序,不方便编写和维护?需要拆分模块增加代码复用方法,并将其作为命名空间,避免命名冲突。你如何定义一个模块?模块就是一个普通的文件,所以任何代码都可以直接写。但是根据模块规范,最好在这个块中写下面的内容函数(单个函数)类(类似函数的组合,或者类似的业务模块)来测试代码。如何使用模块模块直接导入模块名,模块名直接以数字开头,需要借助importlib帮助语法。
导入模块名称
模块名称.功能名称
模块名称.类名称案例01.py,02.py,p01.py,p02.py #案例01.py
#包含一个学生类
# say hello函数
#打印声明
班级学生():
def __init__(self,name=NoName ,age=18):
self.name=name
年龄=年龄
def say(自我):
打印(“我的名字是{0}”。格式(自我名称))
def sayHello():
打印(嗨,)
Print(我是模块p0)# case02.py
#在importlib包的帮助下,可以导入以数字开头的模块名。
导入导入库
#相当于导入一个名为01的模块,并将导入的模块赋给一个。
a=importlib.import_module(01 )
斯图=a .学生()
Stu.say()#案例p01.py
#包含一个学生类
# say hello函数
#打印声明
班级学生():
def __init__(self,name=NoName ,age=18):
self.name=name
年龄=年龄
def say(自我):
打印(“我的名字是{0}”。格式(自我名称))
def sayHello():
打印(嗨,)
#这个判断语句建议永远作为程序的切入点。
if __name__==__main__ :
打印(我是模块p01)#案例p02.py
导入p01
stu=p01。学生(小静,19)
斯图.赛伊()
我的名字叫小静
嗨,以别名导入模块。导入时,给模块一个别名。其余用法同第一种情况p03.py #情况p03.py。
将p01作为p导入
学生(岳跃,18岁)
我叫岳跃,来自模块名导入功能名,类名。按照上述方法选择性导入使用时,可以直接使用导入的内容,无需前缀case p04# case p04.py
从p01导入学生,说你好
stu=学生()
斯图.赛伊()
我的名字叫诺娜
嗨,从模块名称导入*导入模块所有内容案例p05.py #案例p05.py
从p01导入*
说你好()
stu=学生(姚娜,20)
你好,
使用我的名字是姚娜if _ _ name _==``` _ main _ _可以有效避免模块代码导入时被动执行的问题。建议所有程序都以此代码为入口。2.模块的搜索路径和存储什么是模块的搜索路径?加载模块时,系统会在哪里寻找这个模块系统的默认模块搜索路径,导入sys?
sys.path属性可以获取路径列表。
# casep06.py # casep06.py
导入系统
打印(类型(sys.path))
打印(系统路径)
对于sys.path中的p:
打印(p)类“列表”
[ D:\\python\\project \ \ Package Management , D: \ \ PyCharm社区版2019.1.1 \ \ Helpers \ \ PyDev , D:\ \ Python \ \ Project , D:\ \ Helpers \ \ thirftpy , D:\\PyCharm社区版2019.1.1\\helpers\\pydev , C:\ \ Users \ \ user \ \ . pycharmce 2019.1 \ \ system \ \ Cythonxtensions , D:\ \ Python \ \ Project \ \ Package Management , D:\ \ anaconda 3 \ \ ENVS \ \ OPP \ Python 37 .
d:\ python \ project \ Package Management
D:\PyCharm社区版2019.1.1\helpers\pydev
D:\python\project
D:\PyCharm社区版2019 . 1 . 1 \ helpers \ third _ party \ thriftpy
D:\PyCharm社区版2019.1.1\helpers\pydev
c:\ Users \ user \ . pycharmce 2019.1 \ system \ cytone extensions
d:\ python \ project \ Package Management
d:\ Anaconda3 \ envs \ opp \ python 37 . zip
d:\ Anaconda3 \ envs \ opp \ dll
D:\Anaconda3\envs\opp\lib
D:\Anaconda3\envs\opp
d:\ anaconda 3 \ envs \ opp \ lib \ site-packages添加搜索路径sys.path.append(dir)模块加载顺序搜索内存中已经加载的模块搜索python的内置模块搜索sys.path路径包是一种组织和管理代码的方式,存储模块的文件夹包含模块是包自定义包-package的结构
--_ _ init _ _。py包标志文件
--模块1
--模块2
--子包(子文件夹)
- - - __init__。巴拉圭
---子包模块1
---子包模块2包导入package_name的导入操作直接导入一个包,可以使用__init__.py中的内容,使用方式为:package _ name.func _ name。
package _ name . class _ name . func _ name()这样访问的内容是case pkg01,p07.py # pkg01。__init__py。
def inInit():
打印(“我在包的初始化中”)
# pkg01.p01.py
班级学生():
def __init__(self,name=NoName ,age=18):
self.name=name
年龄=年龄
def say(自我):
打印(“我的名字是{0}”。格式(自我名称))
def sayHello():
打印(嗨,)
打印(我是模块p01)#案例p07.py
导入pkg01
Pkg01。在init()中我在init的包中导入package _ name作为P的具体用法和作用方式,这与上面的简单导入是一致的。注意,这个方法是__init__的默认导入。py内容。模块导入包中的特定模块使用package.module.func_name方法
package.module.class.fun()
package . module . class . var casep 08 . py # casep 08 . py
导入pkg01.p01
stu=pkg01.p01.Student()
Stu.say()我是模块p01。
我的名字是无名进口包。模块作为pm从…导入从包导入模块1、模块2、模块3导入…此导入方法不执行pkg01导入p01中__init__的内容。
P01。从包导入*导入当前包__init__中的所有函数和类。py文件,使用func_name()方法
class_name.func_name()
Class_name.var case p09.py请注意本次导入# case P09.py的具体内容。
从pkg01导入*
inInit()
stu=Student()我在包的初始化中
错误:名称 student 不是从package.module import *导入包中指定的模块的所有内容都使用方法func_name()
Class_name.func_name()经常引用开发环境中的其他模块,可以直接将其他模块的内容导入到当前包中。使用from package import *,* Importable contents __init__时,完整包或模块__all__的路径用法。py如果文件为空或者没有__all__,那么只能将__init__中的内容导入__init__如果设置了__all__的值,将根据__all__指定的子包或模块加载
然后是content _ _ all _ _=[module1 , module2 , package1 ._ _ init中的]将不会被加载。案例pkg02,p10.py # PKG02。__init__。巴拉圭
__all__=[p01]
def inInit():
打印(“T am in init of package”)
# pkg02.p01.py
班级学生():
def __init__(self,name=NoName ,age=18):
self.name=name
年龄=年龄
def say(自我):
打印(“我的名字是{0}”。格式(自我名称))
def sayHello():
打印(嗨,)
#这个判断语句建议永远作为程序的切入点。
if __name__==__main__ :
打印(我是模块p01)#案例p10.py
从pkg02导入*
stu=p01。学生()
stu . say()My name is NoName namespace一个特定的前缀,用于区分不同位置同名但功能不同的函数或变量,用于防止命名冲突setName()
Student.setName()
Dog.setName()
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。