异常处理作业讲解

file = open('/home/pyvip/aaa.txt','w+')

try:

my_dict = {'name':'adb'}

file.write(my_dict['age']) #只能传字符串

except Exception as e:

print(e)

finally:

file.close()

print('文件已经正常关闭了')

运行结果:

'age' #报错信息

文件已经正常关闭了

迭代器与生成器

1.迭代器

迭代就是依次从数据结构中拿出东西的过程.

for 迭代变量 in 可迭代对象

每一次循环都会自动让'迭代变量'指向'下一个元素'.

从可迭代对象生成一个迭代器.

迭代器 = iter(可迭代对象)

下个值 = next(迭代器)

for实现原理

itr = iter(the_list)

try:

while True:

var = next(itr)

print(var)

except StopIteration:

pass

只要对象里面有--iter--()魔法方法,就证明是可迭代对象

li = [1,2,3,4,5]

a = iter(li)

next(a)

输出:1

next(a)

输出:2

自己实现一个可迭代对象:

class Mylist:

def --ter--(self): #iter魔法方法,必须要返回一个迭代器.

return iter([1,2,3,4,5])

li = Mylist() #实例化

for i in li:

print(i) #实现了可迭代.

可迭代对象跟迭代器的区别,迭代器多了一个next方法.

2.生成器

迭代协议

class Cycle:

def --init--(self,elem,n):

self.elem = elem

self.n = n

def --iter--(self):

elem = self.elem

n = self.n

class CycleIter:

def --init--(self):

self.count = 0

def --next--(self):

if self.count < n:

self.count +=1

return elem

else:

raise StopIteration

def --iter--(self):

return self

return CycleIter()

3.生成器与yield

特性一:类似于函数的逻辑

特性二:支持显式的暂停与恢复

特性三:隐式的支持迭代协议.

def cycle(elem,n):

count = 0

while True:

if count < n:

count += 1

yiele elem

else:

break

生成器语法:

yield一个对象:返回这个对象,暂停这个函数,等待下次next重新激活.既支持next,也支持for循环.

def my_gen():定义生成器,由next函数触发执行

print('第一次执行')

yield 1 #返回一个1并暂停函数

print('第二次执行')

yield 2 #返回一个2并暂停函数

print('第三次执行')

#没有代码了,引发StopIterration异常

g = my_gen()

v1 = next(g) #输出:第一次执行

print(v1) #输出:1

v2 = next(g) #输出:第二次执行

print(v2) #输出:2

v3 = next(g) #输出:第三次执行,并抛出一个StopIteration异常.

生成器,是python提供的一种非常简便的语法,能让我们来自己写出迭代器,注意!生成器,是一种特殊的迭代器.

def cycle(elem,n):

count = 0

while True:

if count < n:

count += 1

yield elem

else:

break #一个生成器例子.

my_cycle = cycle('abc',1000) #取值可以用生成器,控制数量,不会卡死.取出来占内存加载一下.

4.模块导入/包

import -> 执行导入的文件 -> 在当前这个文件里生成一个模块对象.

导入语法与导入路径

import ... #直接全部导入

import ... as ... #导入以后,重新命名

from ... import ... #部分导入,模块内部的东西,而不要模块.

sys.path 用于存放导入路径的列表,类似于环境变量中的PATH

import sys

print(sys.path) #显示包路径.不在这个路径下面导入无效.

*代表所有,导入所有方法

相对路径导包: import .bbb.ccc 在python2中可以.

import datetime()

datetime.datetime.now()全部导入使用时代码长

5.包和包管理

模块就是一个py文件.

包,就是包含了很多模块的文件夹.

如何构造一个包,首先需要把py文件放入包文件夹中,并且在包文件夹下加一个--Init--.py文件.可以什么都不写.

加入包的概念后,导入规则是否有变化?通过包,我们加入了层级导入.

查看包的源码:ctrl 点击包名

一个模块就是一个py文件,py文件当中有很多方法.

项目就是很多文件\包集合在一起,还有一些其他的配置文件.

模块中

if --name-- == '--main--': #用来做调试的.

print('正在调试')

print(--name--) 输出--main--

只在我们当前的文件下,自己执行的时候,条件满足,别人调用的时候,--name-- 等于包名字,不是--main--,不会运行.

python基础知识13-迭代器与生成器,导入模块的更多相关文章

  1. python基础知识7——迭代器,生成器,装饰器

    迭代器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器 ...

  2. python 基础篇 13 迭代器与生成器

    13. 前⽅⾼能-迭代器和⽣成器本节主要内容:1. 迭代器2. ⽣成器 ⼀. 迭代器我们之前⼀直在⽤可迭代对象进⾏迭代操作. 那么到底什么是可迭代对象. 本⼩节主要讨论可迭代对象. ⾸先我们先回顾⼀下 ...

  3. python基础篇_005_迭代器和生成器

    Python迭代器和生成器 1.迭代器 迭代:可以将某个数据集内的数据“一个挨着一个的取出来” for i in range(1, 10, 2): # in 后面的对象必须是一个可迭代的 print( ...

  4. 【笔记】Python基础四:迭代器和生成器

    一,迭代器协议和for循环工作机制 (一),迭代器协议 1,迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stopiteration异常,以终止迭代(只能往 ...

  5. python函数知识四 迭代器、生成器

    15.迭代器:工具 1.可迭代对象: ​ 官方声明,只要具有__iter__方法的就是可迭代对象 list,dict,str,set,tuple -- 可迭代对象,使用灵活 #方法一: list.__ ...

  6. Python基础入门(迭代器和生成器)

    1 Python迭代器 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退. 迭代器有两个基本的方法:iter() 和 ...

  7. python基础9 (迭代器、生成器)

    1.可迭代对象 迭代:将某个数据集内的数据“一个挨着一个的取出来” 可迭代协议:可以被迭代要满足的要求,即内部含有__iter__()方法 可迭代的类型:字符串.列表.元组.字典.集合特点:惰性运算 ...

  8. python基础——9(迭代器、生成器)

    一.迭代器 1.概念 器:包含了多个值的容器 迭代:循环反馈(一次从容器中取出一个值) 迭代器:从装有多个值的容器中一次取出一个值给外界 s = 'abcdef' ls = [1,2,3,4,5] 遍 ...

  9. python基础十一之迭代器和生成器

    可迭代 内置方法中含有__iter__的数据类型都是可迭代的,只要是可迭代的就可以使用for循环,反之亦然. print(dir('')) # dir()函数可以获取当前数据类型的所有内置方法 返回值 ...

  10. Python基础——函数的迭代器和生成器

    等待更新…………………… 后面再写

随机推荐

  1. UWP 保存用户设置

    一:需求 需要保存用户设置,用户下一次再打开app时,加载默认的设置.比如用户设置的主题颜色,用户自定义的文件保存路径等. 一般应用的的数据存储分为两种,一种是云存储(将数据保存在云端,下次打开的时候 ...

  2. 2017浙江工业大学-校赛决赛 小M和天平

    Description 小M想知道某件物品的重量,但是摆在他面前的只有一个天平(没有游标)和一堆石子,石子可以放左边也可以放右边.他现在知道每个石子的重量.问能不能根据上述条件,能不能测出所问的重量. ...

  3. 【aspnetcore】用ConcurrentQueue实现一个简单的队列系统

    第一步:定义队列服务接口 public interface ISimpleQueueServer { /// <summary> /// 添加队列消息 /// </summary&g ...

  4. 转:在linux中vi 文件里行尾奇怪的^M及解决

    Linux编辑器vim中删除行尾的^M 有时候,在 Linux 中使用打开曾在 Windows 中编辑过的文件时,会在行尾看到 ^M 字符.看起来总是感觉很别扭. 删除方法如下: 在 Vim 的命令模 ...

  5. Windows server 2003 + IIS6 搭建Asp.net MVC运行环境

    安装.Net Framework4.0.下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=17718 安装WindowsServ ...

  6. SpringMVC中,前台jsp封装参数,绑定参数,传递参数到后台controller的过程详解

    前台到后台的流程:前台jsp->后台:controller控制器层->service业务层->DAO数据访问层->数据库model模型层. 从上面流程可知,前台jsp的数据,想 ...

  7. 企业CIO、CTO必读的34个经典故事

    一. 用人之道 去过庙的人都知道,一进庙门,首先是弥陀佛,笑脸迎客,而在他的北面,则是黑口黑脸的韦陀.但相传在很久以前,他们并不在同一个庙里,而是分别掌管不同的庙.弥乐佛热情快乐,所以来的人非常多,但 ...

  8. tomcat+nginx 横向扩展

    1.分别在电脑上部署两个tomcat tomcat1  tomcat2 2.不是nginx 并启动 输入 localhost 并进入nginx欢迎界面,证明部署成功 3.修改nginx 配置 ngin ...

  9. 卷积网络中的通道(Channel)和特征图

    转载自:https://www.jianshu.com/p/bf8749e15566 今天介绍卷积网络中一个很重要的概念,通道(Channel),也有叫特征图(feature map)的. 首先,之前 ...

  10. 原生js格式化json的方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...