首页 > 编程语言 >python基础入门之模块

python基础入门之模块

时间:2022-10-18 20:11:38浏览次数:50  
标签:__ 文件 入门 python py 导入 模块 import

python基础入门之模块

索引取值与迭代取值的差异

l1 = [11, 22, 33, 44, 55]
1.索引取值
print( l1[2] ) # 33
	可以任意位置任意次数取值,不支持无序类型的数据取值。
2.迭代取值
it = iter(l1)    # 创建迭代器对象
print(next(it)) # 11
print(next(it))# 22
	只能从前往后依次取值无法后退,支持所有类型的数据取值(无序有序)。
ps:两者的使用需要结合实际应用场景

模块简介

1、模块的本质

内部具有一定的功能(代码)的py文件

2、python模块的表现模式

1.py文件(py文件也可以称之为是模块文件)
2.含有多个py文件的文件夹(按照模块功能的不同划分不同的文件夹存储)
3.已被编译为共享库或DLL的c或C++扩展(了解)
4.使用C编写并链接到python解释器的内置模块(了解)

模块的分类

  • 自定义模块:我们自己写的模块文件
  • 内置模块:python解释器提供的模块
  • 第三方模块:别人写的模块文件

导入模块的两种句式

注意:

  • 一定要搞清楚谁是执行文件,谁是被导入文件

  • 开发项目时py文件的名称一般是纯英文,不会含中文或空格

01 作业讲解.py #不会出现
test.py views.py #出现
  • 导入模块文件不需要填写后缀名
1、import句式
想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:
# import module1[, module2[,... moduleN]
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
搜索路径是一个解释器会先进行搜索的所有目录的列表。
以import a为例研究底层原理
 	"""
 	1.先产生执行文件的名称空间
 	2.执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
 	3.在执行文件的名称空间中产生一个模块的名字 
 	4.在执行文件中使用该模块名点的方式使用模块名称空间中所有的名字
 	"""

2、from...import...句式
Python的from语句从模块中导入一个指定的部分到当前命名空间中,语法如下:
# from modname import name1[, name2[, ... nameN]]
以from a import name,func1为例研究底层原理
 	"""
 	1.先产生执行文件的名称空间
 	2.执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
 	3.在执行文件的名称空间中产生对应的名字绑定模块名称空间中对应的名字
 	4.在执行文件中直接使用名字就可以访问名称空间中对应的名字
 	"""

导入模块的补充说明

1.import与from...import...两者优缺点
	import句式
    	由于使用模块名称空间中的名字都需要模块名点的方式才可以用,所以不会轻易的被执行文件中的名字替换掉,但是每次使用模块名称空间中的名字都必须使用模块名点才可以。
 	from...import...句式
    	指名道姓的导入模块名称空间中需要使用的名字,不需要模块名点,但是容易跟执行文件中名字冲突。
    
2.重复导入模块
	解释器只会导入一次 后续重复的导入语句并不会执行。
    
3.起别名
	import wuyongerciyuan as wy
 	from wuyongerciyuan import zhangzehonglovezhanghong as zz
 	from a import name as n,func1 as f1
 
4.涉及到多个模块导入
	import a
	import wuyongerciyuan
	如果模块功能相似度不高,推荐使用第一种;相似度高可以使用第二种。
	import a, wuyongerciyuan

循环导入问题

1.循环导入

​ 两个文件之间彼此导入彼此并且相互使用各自名称空间中的名字 极容易报错

2.如何解决循环导入问题

  • 确保名字在使用之前就已经准备完毕
  • 我们以后在编写代码的过程中应该尽可能避免出现循环导入

判断文件类型

所有的py文件都可以直接打印__name__对应的值
当py文件是执行文件的时候__name__对应的值是__main__
当py文件是被导入文件的时候__name__对应的值是模块名
 
if __name__ == '__main__':
    print('哈哈哈 我是执行文件 我可以运行这里的子代码')
 
上述脚本可以用来区分所在py文件内python代码的执行

使用场景
	1.模块开发阶段
 	2.项目启动文件
 
"""
from a import *  *默认是将模块名称空间中所有的名字导入
__all__  = ['名字1', '名字2']  针对*可以限制拿的名字
"""

模块的查找顺序

1.内存
	 import aaa
    import time
    time.sleep(15)
    print(aaa.name)
    aaa.func1()
    
2.内置
	 import time
    print(time)
    print(time.name)
	 """
	 以后在自定义模块的时候尽量不要与内置模块名冲突
	 """
        
3.执行文件所在的sys.path(系统环境环境)
	 一定要以执行文件为准!!!
 	 我们可以将模块所在的路径也添加到执行文件的sys.path中即可
    import sys
    print(sys.path)  # 列表
    sys.path.append(r'D:\pythonProject03\day17\mymd')
    import ccc
    print(ccc.name)

大白话:多个py文件的集合>>>:文件夹
专业:内部含有__init__.py文件的文件夹(python2必须要求 python3无所谓)

标签:__,文件,入门,python,py,导入,模块,import
From: https://www.cnblogs.com/zhiliaowang/p/16803909.html

相关文章

  • 模块
    今日内容索引取值与迭代取值的差异1.索引取值可以在任意位置任意次数取值不支持无序类型数据取值2.迭代取值 只能从前往后依次取值并且无法退后 支持所有类......
  • 模块的导入相关知识
    昨日内容回顾异常处理的语法结构try: 下跟被监测的子代码except: 后跟错误类型子代码为该类型错误解决的提示else: 被监测的子代码正常运行时运行的代码fin......
  • 索引取值与迭代取值,模块基础
    目录索引取值与迭代取值,模块基础今日内容概要今日内容详细索引取值与迭代取值的差异模块简介模块的分类导入模块的两种句式导入模块补充说明循环导入问题判断文件类型模块......
  • 模块基础了解
    今日内容详细索引取值与迭代取值的差异l1=[11,22,33,44,55]1.索引取值 可以任意位置任意次数取值 不支持无序类型的数据取值2.迭代取值 只能从前往后依次取值......
  • python模块/导入模块
    索引取值与迭代取值的差异l1=[1,2,3,4,5]1.索引取值可以任意位置任意次数的取值不支持无序类型的数据取值print(l1[3])print(l1[3])#可以直接获取任意位置的......
  • 进入python的世界_day17_python基础——了解模块、如何使用和导入模块、包的原理
    一、模块介绍1.什么是模块​ 其实我们前一阵已经接触过了,importxxx、fromxximportxxx​ 能够有一定功能的集合体就是模块,比如有某些功能的py文件,包含这个文件的......
  • python中展示json数据不换行(手动换行)
    https://blog.csdn.net/chichu261/article/details/82784904Settings—>keymap—>在搜索框输入wraps—>选择UseSoftWraps—>之后设置快捷键就可以了。针对第......
  • Python基础17
    今日内容概要索引取值与迭代取值的差异模块简介模块分类导入模块的两种句式导入模块补充说明循环导入问题判断文件类型模块的查找顺序绝刀导入与相对导入包概述......
  • 模块与导包
    索引取值与迭代取值的差异索引索引可以重复取值,任意位置取值不支持无序类型的数据取值迭代取值迭代取值只能按照,迭代器内部顺序依次取值支持所有类型的数据取值两......
  • Python爬虫(学习笔记)
    Python爬虫(学习笔记)  常见的反爬机制及应对策略名称描述解决方案/反反爬措施1.Headers 从用户的headers进行反爬是最常见的反爬策略,Headers是......