吴江开发区建设局网站,wordpress多租户,企业网络推广,吉林市做网站的科技在学习python进阶知识中的面向对象之前,还要了解一下当中几个概念:包、模块、类和函数。
一.模块和包 模块和包:用来组织Python代码的。 包 含有 __init__.py文件的文件夹模块 py文件类 class 【面向对象学习】函数#xff08;方法#xff09; def 以上均…在学习python进阶知识中的面向对象之前,还要了解一下当中几个概念:包、模块、类和函数。
一.模块和包 模块和包:用来组织Python代码的。 包 含有 __init__.py文件的文件夹模块 py文件类 class 【面向对象学习】函数方法 def 以上均不能以数字开头也不能和python内置的一切重名 1.1包是具有特殊文件的文件夹
当我们使用一个包时这个包目录下的__init__.py文件中的代码会自动执行。 包的 init 文件中也可以设置 all 内置变量限定 from 包名 import * 时默认导入的模块。 平时沟通时包和模块的概念往往不区分 包和模块都存在内置的第三方的区别第三方的就是玩家自己写的、非Python官方的
第三方包需要额外安装 安装命令 pip install 包名或模块名 -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install 包名或模块名版本号 pip install 包名或模块名
卸载命令pip uninstall 包名或模块名
注意
安装第三方的包和模块是在 python 解释器安装目录的 Lib/site-packages 下面python虚拟环境和默认环境 需要各自安装各自的三方包 安装到指定的py虚拟环境下 /虚拟环境路径/python -m pip install 包名或模块名 默认安装到默认python下pip install 包名或模块名
1.2 模块的搜索路径
一切以被运行的python文件所在的路径为准是工作路径同时也是相对路径的起点
import sys
print(sys.path)sys.path可以说明
运行py代码时Python解释器会自动搜索要使用的模块
会自动向以下两个路径进行搜索
1. 当前工作路径
2. Python虚拟环境路径还可以手动添加导包环境路径
import sys
sys.path.append(要导包的位置)注意自定义的一切变量、函数、类、模块、包都不要和python内置的一切重名二.模块和包的使用
在我们写Python代码的时候,常常需要导入一些模块和包,下面是导入模块和包的几种方式。 假设有一个包(包的名字:my_module),包里面会有一个__init__.py文件,在里面再创建自己的模块py文件(名字:my_module),文件里面有自己写的func_1函数。
方式一:import 模块名 示例: import my_module print(my_module.func_1(1,2)) print(my_module.arg_a) 方式二:from 模块 import 函数 示例: from my_module import func_1,arg_a print(func_1(2,3)) print(arg_a) 方式三:用 as关键字 起别名 示例1: import os as winos ret winos.listdir() print(ret) 示例2: from os import listdir as win_listdir ret win_listdir() print(ret) 方式四:(不推荐)from 模块名 import * 原因如下: 1- 不方便阅读 2- 如果有多个导入会导致重名的问题 3- 配合__all__使用会有使用限制 三.__name__ 属性 只有运行入口的py文件模块的__name__是__main__其他被引用的文件模块的__name__是不带扩展名的文件名 下边的a.py和b.py两个文件在同一目录中 a.py - 运行该文件
print(a模块的name属性值,__name__)if __name__ __main__:print(对数据库中数据删除的操作)b.py
print(__name__)if __name__ __main__:# 如果被其他py文件引用这里将不会执行# 因为被引用时b.py的__name__是 b而不是__main__# 只有b.py作为主文件运行时b的__name__才是__main__print(bbbb)print(__name__)__name__属性总结
1- 代码中一般都会写下面的判断语句也就是if __name__ __main__:
2- 该判断是用来限定某些代码只在执行该模块代码的时候才执行。一般放的是测试代码或者是整个程序的入口函数四.__all__属性 如果一个py文件模块中有 __all__变量(list类型)当其他py文件模块使用from 模块名 import *引用它时只能导入这个列表中指定的内容 a.py
__all__ [foo, my_int] my_int 666def foo():return my_intdef bar():return 777b.py - 运行该文件
# from a import *
#
# print(my_int)
# print(foo())
# print(bar())from a import my_int,foo,bar
print(my_int)
print(foo())
print(bar())__all__属性总结
1- __all__是一个列表用来控制其他导入的时候使用权限。需要配合import *
2- 如果在import中明确要导入的内容那么是不受__all__属性影响