Python教程

713python每日总结birthday

本文主要是介绍713python每日总结birthday,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

今日内容概要

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

  • 模块

  • 导入模块的两种语法句式

  • 导入模块句式的其他用法

  • 模块查找顺序问题

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

下面将对这段列表代码进行所以取值和迭代取值

l1 = [11, 22, 33, 44, 55]

索引取值

 print(l1[0])        11
 print(l1[1])        22
 print(l1[0])        11

迭代取值

res = l1.__iter__()      #用双下iter方法将l1转化为迭代器,再传给res,随后再通过双下next方法进行取值
print(res.__next__())    #11
print(res.__next__())    #22
print(res.__next__())    #33
print(res.__next__())    #44
print(res.__next__())    #55
print(res.__next__())    #报错

将二者取值对比一下我们不难发现他们之间的差别:

索引取值:
   可以反复的取容器内任意值
   但是对于一些无序的容器(比如字典,集合)类型无法取值
迭代取值:
   可以取任意容器中的值
   但是他的取值是顺序取值而且是不可返回的

二者均有优缺点,具体使用那种要结合实际情况判断。

2.模块

2.1模块简介

  模块是什么?

  模块可以看成一个组装好的工具箱,这个工具箱不止一个,而且每个工具箱都有它独特的功能,
我们在要用的时候选择适合的工具箱,工具箱里面的工具也都有独特的功能。

  在python中,我们需要额外的.py文件来承接工具箱也就是模块,
模块中大大小小的函数等就是工具箱中的扳手钳子啊之类的。

2.2模块的分类

  模块大致可以分为三类(内置,第三方,自定义)

1.内置模块
    与之前的内置函数一样是解释器自带的,可以直接使用
    比如time,os    
2.第三方模块
    就是别人写好的模块,然后我们拿过来直接使用就行了
    比如图形识别 图形可视化 语音识别
3.自定义模块
    顾名思义就是我们自己写模块,然后使用
    比如注册功能模块   登录模块

3导入模块的两种句式(import + 要导入模块的文件名     from + 要导入模块的文件名 + import + 模块内元素)

再讲此内容之前我们先来了解一下导入模块的规范

1.在以后的所有项目中,所有的模块的py文件名称都是英文

​     eg:
​        错误的 01.变量的使用
​        正确的 test01.py

2.py文件被当做模块导入的时候不需要考虑后缀

​     eg:
​        import md  #这里的md是md.py模块文件,导入的时候是不需要后缀.py的

3.1import

句式:
    import + 模块的文件名   
eg:
   import mk

 

 

 

 首先创建一个mk文件和一个执行模块文件

 

 

 在mk模块文件中输入

 

 

 再在执行模块文件中输入

 

 

 输出结果就是

 

 

 由上述我们得出结论

执行文件是 执行模块.py
被导入文件是 mk.py

同时结合之前所学的名称空间一说我们还能得到以下结论

1.会产生执行文件的名称空间
2.产生被导入文件的名称空间并运行该文件内所有的代码 存储名字
3.在执行文件中会获取一个模块的名字 通过该名字点的方式就可以使用到被导入文件名称空间中的名字

import模块导入时名称空间详细

 

 

 同时,如果在一个程序中导入相同的模块,导入语句只会执行一次

3.2 from...import...

语法:from +要导入模块的文件名 + import + 模块内元素

执行流程:

首先在mk中输入这两句话,等下我们要调用mc

 

然后在执行模块中用from...import...导入mc  并把它打印下来

 

 

 结果是

 

 

 

 可见只有mc被打印出来了,而mxiangk没有被执行

相当于from...import...是指名道姓的导入

from...import...模块导入时名称空间详细

 

 

 3.3两种语句的优缺点

import md
    优点:通过md点的方式可以使用到模块内所有的名字 并且不会冲突
    缺点:md什么都可以点 有时候并不想让所有的名字都能被使用
from md import money, read1
    优点:指名道姓的使用指定的名字 并且不需要加模块名前缀
    缺点:名字及其容易产生冲突(绑定关系被修改)

补充:

当遇到多个模块文件名相同或文件名比较复杂时时,可以给文件名加后缀

   import语句和from...import....语句都可以导入多个名字
      import time, sys, os
      from md import money, read1, read2

 

 

3.4全导入(*)

  需求:需要使用模块名称空间中很多名字 并且只能使用from...import句式
  from md import * # *表示所有
  ps:针对*号的导入还可以控制名字的数量
  在模块文件中可以使用__all__ = [字符串的名字]控制*能够获取的名字

4模块的查找顺序

  

1.先去内存中找
    导入一个文件,在执行过程中删除该导入的文件,发现代码可以继续执行
  2.再去内置中找
    创建模块文件名的时候尽量不要和内置模块名冲突
  3.再去sys.path(程序系统环境变量)中找
    导入模块的时候一定要知道谁是执行文件
      所有的路径都是参照执行文件来的
      import sys
      sys.path.append(r'D:\pythonProject\day22\xxx')
      import mdd
      print(mdd.name)
    

 

这篇关于713python每日总结birthday的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!