首页 > 其他分享 >索引取值与迭代取值,模块基础

索引取值与迭代取值,模块基础

时间:2022-10-18 19:55:50浏览次数:60  
标签:__ 文件 迭代 索引 导入 模块 import 取值

目录

索引取值与迭代取值,模块基础

今日内容概要

  • 索引取值与迭代取值的差异
  • 模块简介
  • 导入模块的两种句式
  • 导入模块的句式补充
  • 循环导入问题及解决策略
  • 判断文件类型
  • 模块的查找顺序
  • 模块的绝对导入与相对导入

今日内容详细

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

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

模块简介

1.模块的本质
	内部具有一定的功能(代码)的py文件
2.python模块的历史
	python刚开始的时候所有搞其他编程语言的程序员都看不起 甚至给python起了个外号>>>:调包侠(贬义词)
    随着时间的发展项目的复杂程度越来越高 上面那帮人也不得不用一下python 然后发现真好用>>>:调包侠(褒义词)
3.python模块的表现形式
	1.py文件(py文件也可以称之为是模块文件)
	2.含有多个py文件的文件夹(按照模块功能的不同划分不同的文件夹存储)
	3.已被编译为共享库或DLL的c或C++扩展(了解)
	4.使用C编写并链接到python解释器的内置模块(了解)

模块的分类

1.自定义模块
	我们自己写的模块文件
2.内置模块
	python解释器提供的模块
3.第三方模块
	别人写的模块文件(python背后真正的大佬)

导入模块的两种句式

"""强调:
	1.一定要搞清楚谁是执行文件 谁是被导入文件
	2.以后开发项目的时候py文件的名称一般是纯英文
    	不会含有中文甚至空格 test.py view.py	出现
	3.导入模块文件不需要填写后缀名
"""
1.import句式
	以import a为例研究低层原理
  	"""
  	1.先产生执行文件的名称空间
  	2.执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
  	3.在执行文件的名称空间中产生一个模块的名字
  	4.在执行文件中使用
  	"""
2.from...import...句式
	以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 wuyongerciyuan
 	import a
 	如果模块功能相似度不高 推荐使用第一种 相似度高可以使用第二种
    import a,woyongercyuan

循环导入问题

1.循环导入
	两个文件之间彼此导入彼此并且相互使用各自名称空间中的名字 极容易报错
2.如何解决循环导入问题
	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 time
import aaa
time .sleep(10)
print(aaa.name)
aaa.func1()
# 把aaa.py删了还是能运行,是因为已经在内存中运行了,从内存中拿数据

2.内置
import time
print(time)
print(time.name)
# 拿取的是内置模块的time,是因为优先顺序

3.执行文件所在的sys.path(系统环境)
	一定要以执行文件为准!!!
    我们可以将模块所在的路径也添加到执行文件的sys.path中即可
import sys
sys.path.append('F:\APP\pycharm\pythonProject\day17模块基础\模块查找顺序')
print(sys.path)  # 列表
import aaa
print(aaa.name)
# 把绝对路径添加到系统列表中就可以调用,在调用时系统自动遍历列表找到即可运行

绝对导入与相对导入

"""
再次强调:一定要分清楚谁是执行文件!!!
		模块的导入全部以执行文件为准
"""
绝对导入
	from mymd.aaa.bbb.ccc.ddd import name  # 可以精确到变量名
    from mymd.aaa.bbb.ccc import ddd  # 也可以精确到模块名
    ps:套路就是按照项目目录一层层往下查找
    
相对导入
	.在路径中表示当前目录
    ..在路径中表示上一层目录
    ..\..在路径中表示上上一层目录
    不再依据执行文件所在的sys.path 而是以模块自身路径为准
    
    from .import b
    	相对导入只能用于模块文件中 不能在执行文件中使用
"""
相对导入使用频率较低 一般用绝对导入即可 结构更加清晰
"""

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

标签:__,文件,迭代,索引,导入,模块,import,取值
From: https://www.cnblogs.com/zpf1107/p/16803863.html

相关文章

  • 10月18日内容总结——索引取值和迭代取值的差异、模块
    目录一、索引取值和迭代取值的差异二、模块1、简介1.模块的本质2.模块的历史3.python模块的多种表现形式2、模块的分类3、导入模块的两种语法格式1.import模块名2.from名......
  • 关于ES索引被聚合查询导致filedata堵塞 (pressure too high, (smooth) bulk request ci
    今天在生产使用kibana查询了一条聚合语句,因为数据量比较大(40亿+),导致fielddatacache飙升,影响了写入,根据官方文档,进行如下操作:执行命令,查询filedatacache使用比较大的索引......
  • OR导致索引失效如何解决
    被问到,答不上来其实关于在索引段中使用OR的情况要细分如果只有一个是索引段比如这里只有cid是索引,就走的全表扫描那么改成unionall呢?只有前一句走了索引如果是关......
  • 百度索引量工具
     百度搜索资源平台提交入口链接提交工具可实时向百度推送数据、提交sitemap、提交未收录网页链接,百度链接提交有助于百度发现并了解您网站上的网页和网站结构,加快百度蜘蛛......
  • 索引最左前缀原则原理
    比如有一个联合索引(name,age,porstion)底层是将三个字段的数据放到一起来进行排序首先会通过最左边的字段即name进行排序,生成B+树,当name字段相同时则会通过下一个字段age......
  • MySQL 8.0.31并行构建索引特性管窥
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。本文来源:原创投稿;作者:YeJinrong/叶金荣测......
  • mongdo 索引浅析
    什么是索引索引是一种用来方便查询数据的数据结构BTree就是一种常用的数据库索引数据结构,MongoDB采用B树做索引,索引创建在colletions上。我们可以在这个网站上直观......
  • 敏捷迭代,质量内建,责任不变
    转载:https://baijiahao.baidu.com/s?id=1740107744493681988&wfr=spider&for=pc随着敏捷研发模式逐步推广,越来越多的项目为加快交付速度采用了敏捷研发模式。敏捷研发是......
  • python数据分析基础004 -numpy读取数据以及切片,索引的使用
    ......
  • LeetCode 144 94 145 关于前中后序遍历二叉树的思考(包含迭代法)
    用系统堆栈实现(递归)很容易实现:前序:do(),递归左儿子,递归右儿子中序:递归左儿子,do(),递归右儿子后序:递归左儿子,递归右儿子,do()用自定义栈实现(迭代法)首先首......