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

l1 = [1,2,3,4,5]
1.索引取值
可以任意位置任意次数的取值
不支持无序类型的数据取值
print(l1[3])
print(l1[3])
#可以直接获取任意位置的数据,同一数据也可以无限次重复获取 2.迭代取值
只能从前往后依次取值,无法后退
支持所有类型的数据取值(无序,有序都可以)
l1 = l1.__iter__() # 使用.__iter__ 方法变身为迭代器
print(l1.__next__()) # 1
print(l1.__next__()) # 2
# 只可以依次取值,从前往后 无法退后

模块介绍

1,什么是模块?
内部具有一定功能的py文件,就是一个py文件里面有可运行的代码 就可以把这个文件理解为是一个模块 2.python模块的历史
起初python并不被看好,觉得太过简单不上档次,只是简单的调包侠。随着发展更多的人尝试python都爱上了模块调用,python中就是因为有很多强大的模块来兴起的 3.python模块的表现形式
1.py文件(也可以称之为模块文件)
2.含有多个py文件的文件夹(按照模块功能不同划分不同的文件夹储存)
3.被便衣为贡献库或Dll的c或C++扩展(可以理解为插件)
4.使用c语言编写并连接到了python解释器的内置模块(python解释器自带的内置模块)

模块的分类

1.自定义模块
也就是我们自己编写的py文件
2.内置模块
也就是python解释器中提供的内置模块
3.第三方模块
也就是其他人已经写好的出色的模块文件,我们可以下载使用

导入模块的两种句式

'''
前提: 1,在使用模块时,我们一定要清楚谁是执行文件,谁是被导入文件
2. 在开发项目时所有的py文件都应该使用纯英文的命名(尽量避免中文和空格)
3. 导入模块时只需要用文件名,不需要填写后缀名
'''
1.import 句式
import test
print(test.name) #正确 模块名.的方式调用模块内名称
print(name) # 错误,不可以直接调用模块内的名称
'''
当你在运行该句式时
1,首先在当前文件(执行文件)中产生了一个 模块名的名称空间
2. 被导入的模块里面的所有变量和名次 都会放到这个专属于它的名称空间内
3. 在当前文件中如果要使用模块内的名称,需要用 模块名.的方式使用
'''
2.from ... import ... 句式
以 from test import name
print(name) # 正确
'''
当你在运行该句式时
1.首先在当前文件产生了一个名称 test
2.然后把 test 文件里面的 name 名称 拿到了当前文件
3.然后在当前文件 就可以直接使用 name 该名称
'''

导入模块句式补充说明

1.import 和 from ... import ...两者的优点缺点
import句式
缺点:需要使用 模块名加.的方式才可以使用模块内变量名
优点:模块名加.的方式使用变量名可以避免模块名称与执行文件名称冲突 from ... import ...
缺点:容易造成变量名冲突,可能产生误导。使用时 我们要避免模块名称和执行文件名称重复问题
优点:可以直接使用模块内名称 2.重复导入模块
如果重复导入同一个模块,解释器只会导入一次,后面重复导入的模块代码不再次生效 3.模块名别名
加入我们遇到了一个很难记很长的模块名称时
import nikanwonanbunanjijiuwanshil
import nikanwonanbunanjijiuwanshil as nik
from test import nikanwonanbunanjijiuwanshil as nik
nikanwonanbunanjijiuwanshil.name #太麻烦了 这个名称太复杂了
nik.name # 这多舒服
我们可以使用 as 来给模块名备注 备注后就可以使用备注名来代替了 4,涉及导入多个模块
1.如果模块功能是同类的 可以使用 import 模块名,模块名
2.模块功能不同
import 模块1
import 模块2
建议使用第二种 不要怕麻烦 导就完事了 5.循环导入问题
两个文件之间彼此导入彼此并且相互使用各自名称空间中的名字 极容易报错
如何解决循环导入问题
1.确保名字在使用之前就已经准备完毕 #名称最好在导入模块代码执行前已经准备完毕
'''
name = 'moon'
import test2
'''
2.我们以后在编写代码的过程中应该尽可能避免出现循环导入

判断文件类型

所有的py文件都可以直接打印__name__对应的值
当py文件是直接文件 则 __name__ 对应的值是__main__
当py文件是被导入文件的时候(模块)时 __name__ 对应的值是 模块名 import test
print(__name__) # __main__ 因为这个在正在执行的文件中 test.py文件中
print(__name__) # test 因为这个是在被导入的文件中,被导入的模块中 当我们想在模块中或者某些文件中测试功能时
if __name__ == '__main__':
条件达成后运行的代码
这样就可以达到,当我们运行这个文件时这些代码才会生效,当别人调用这个文件时 if里面的子代码
不会生效。
上述脚本可以用来区分所在py文件内python代码的执行 使用场景:模块开发阶段自测 项目启动文件 *号的使用
from test import *
#此代码代码我们可以直接使用 test模块里面的所有名称
#*默认是将模块名称空间中所有的名字导入
#模块内有__all__ = ['名字1','名字2'] 这是设置目前可以被调用的名字

模块的查找顺序

模块名调用查找顺序:
1.内存
import test
import time
time.sleep(10) #假设在代码睡眠期间删除了 test文件
print(test.name) # 依然可以执行
内存优先级最高,当代码运行后文件数据已经被储存在内存中 2.内置
import time
print(time)
print(time.name) #报错
优先使用内置函数,为了避免出错,自定义模块时避免和内置模块名冲突 3.执行文件所在的sys.path(系统环境中)
一定是以当前执行的文件为准!!!
import sys
print(sys.path)
sys.path.append('/Users/moongod/Desktop/pythonProject/练习/ceshi/ceshi2')
#添加模块路径到当前可以查询到的路径列表中
import md
print(md.name) 我们也可以将模块所在的路径也添加到执行文件的sys.path
sys.path里面是一个列表,在这里列表里面才可以被当前执行文件直接获取到直接导入
所以如果模块不在同一个环境里面,就需要在环境里面添加

绝对导入和相对导入

1,首先当我们在导入文件时 一定要分清楚谁是正在被执行的文件
导入模块的路径都是已被执行文件所在路径为准 2. 绝对导入
from outer1.inner1.inner import module1
#根据当前执行文件所在地址 一层一层的找 执行文件跟outer1平级,然后找
#outer1文件夹>>>inner1文件夹>>>inner文件夹 然后在这个文件夹里面就可以找到模块 module1 成功导入
from outer1.inner1.inner.module1 import name
# 当然也可以一层一层的直接精确到变量名 3.相对导入
.在路径中表示当前目录
..在路径中表示上一层目录
..\..在路径中表示上上一层目录
不在依据执行文件所在的sys.path 而是以模块自身路径为准
from . import b
相对导入只能用于模块文件中 不能在执行文件中使用
'''
相对导入使用频率较低 一般用绝对导入即可 结构更加清晰
'''

python模块/导入模块的更多相关文章

  1. python有三种导入模块的方法(转)

    原文:http://www.cnblogs.com/allenblogs/archive/2011/11/15/2055149.html python有三种导入模块的方法 其一, import mod ...

  2. python中导入模块的本质, 无法导入手写模块的解决办法

    最近身边一些朋友发生在项目当中编写自己模块,导入的时候无法导入的问题. 下面我来分享一下关于python中导入模块的一些基本知识. 1 导入模块时寻找路径 在每一个运行的python程序当中,都维护了 ...

  3. Python 动态导入模块

    动态导入模块 目录结构: zhangsandeMacBook-Air:1110 zhangsan$ tree . . ├── lib │   └── aa.py ├── test1.py lib目录下 ...

  4. python 全栈开发,Day28(复习,os模块,导入模块import和from)

    一.复习 collections 增加了一些扩展数据类型 :namedtuple orderdict defaltdict队列和栈time 时间 三种格式 : 时间戳 结构化 字符串random 随机 ...

  5. Python关于导入模块的一些感想:

    写项目的时候,碰到这种情况 程序业务为core,里面有两个目录,core1 和core2  core1中有三个模块,business  main   main1 程序入口为bin目录下的project ...

  6. python动态导入模块——importlib

    当在写代码时,我们希望能够根据传入的选项设置,如args.model来确定要导入使用的是哪个model.py文件,而不是一股脑地导入 这种时候就需要用上python的动态导入模块 比如此时文件结构为: ...

  7. python基础--导入模块

    一,import的使用1, 模块就是一组功能的集合体,我们的程序可以导入模块来复用模块中的功能一个模块就是包含了一组功能的python文件,例如demo.py 可以通过import来使用这个文件定义d ...

  8. python中导入模块的注意点

    1.import  和 from  import 的区别 import module导入模块:语句执行完后会创建一个新的命名空间,在该命名空间中执行相应的函数.执行时,需要的变量.函数和类名前需要加  ...

  9. python控制流-导入模块

    一.模块 1.含义 Python 程序可以调用一组基本的函数,这称为“内建函数”,包括你见到过的 print().input()和 len()函数.Python 也包括一组模块,称为“标准库”.每个模 ...

  10. python改变导入模块中的变量的问题

    Python中循环函数1调用函数2,函数2中import了一个模块,函数1: def run(): for a in b: runTest(a,patter) 函数2: def runTest(cas ...

随机推荐

  1. 给 SSH 启用二次身份验证

    转载自:https://mp.weixin.qq.com/s/ssuhFbfaHxxzGmLg6Y2MjA 目前来说,二次验证(这里就不做过多解释了)是比较常用的安全手段,通过设置二次验证(谷歌或其他 ...

  2. 移除worker节点

    1.在准备移除的 worker 节点上执行 kubeadm reset -f 2.在 master 节点上执行 kubectl get nodes -o wide 3.删除worker节点,在 mas ...

  3. 在 Linux 中找出 CPU 占用高的进程

    列出系统中 CPU 占用高的进程列表来确定.我认为只有两种方法能实现:使用 top 命令 和 ps 命令.出于一些理由,我更倾向于用 top 命令而不是 ps 命令.但是两个工具都能达到你要的目的,所 ...

  4. 中小制造企业需要ERP和MES吗?

    并不是所有中小制造企业都需要ERP和MES,这个取决于你的规模和管理思维与模式!匹配很重要,不同规模的企业做不同的选择!比如你大型企业,一般是要使用ERP的,其工厂也应该需要上MES系统,ERP主要用 ...

  5. PHP全栈开发(八):CSS Ⅲ background

    设置背景颜色: div { background-color:#b0c4de; } 不仅可以给body标签设置背景颜色,还能给p,div,h标签设置背景颜色 设置背景图片: body { backgr ...

  6. 邻接矩阵bfs

    #include<bits/stdc++.h> using namespace std; int a[11][11]; bool visited[11]; void store_graph ...

  7. 周末IT入门锦鲤

    周末总结 第一小节 typora软件 是目前最火的文本编辑器 下载安装 路径尽量不要安装C盘,安装其他盘路径尽量简单方便后续查找使用. 文件路径 路径:计算机上一个文件资源的坐标,C:\XX文件\a. ...

  8. git中 gitignore 忽略文件操作

    通常,.gitignore文件被放置在存储库的根目录中.根目录也称为父目录和当前工作目录.根文件夹包含组成项目的所有文件和其他文件夹.也就是说,您可以将它放在存储库中的任何文件夹中.你甚至可以有多个. ...

  9. uoj349【WC2018】即时战略

    题目链接 WC出了点意外滚粗了,来补补题. \(O(n^2)\)的时间复杂度,\(O(nlogn)\)的询问次数应该还是比较好想的,每次要打通到x的路径,对当前已知的树不断的找重心并询问在重心的哪颗子 ...

  10. Docker | redis集群部署实战

    前面已经简单熟悉过redis的下载安装使用,今天接着部署redis集群(cluster),简单体会一下redis集群的高可用特性. 环境准备 Redis是C语言开发,安装Redis需要先将Redis的 ...