
Python语法
非初级Python语法的讲解和实验
Greyplayground
使混沌趋于有序,致力于网络世界的熵减
展开
-
[PythonCookBook][并发] 判断线程启动与否的方法
问题加载进程后判断是否实际运行解决方案为了判断线程是否执行到了其过程中的某个点,以据此执行后续操作,我们使用threading库中的Event对象。简单示例这个实验里‘countdown is running’总会在‘countdown starting’之后出现from threading import Thread, Eventimport timedef countdown(n, started_evt): print('countdown starting') st原创 2021-04-01 13:42:49 · 282 阅读 · 0 评论 -
[PythonCookBook][并发] 开启和终止线程
123原创 2021-03-26 11:48:59 · 124 阅读 · 0 评论 -
[PythonCookBook][迭代器和生成器] 如何跳过迭代器的前几个元素
目的在下列文件的内容中,我们希望将以#号开头的几个元素略过,然后继续打印被测试对象#aaa#bbb#ccc#dddpython apython beeefffgggpython x解决方案1使用dropwhile方法,可以将符合条件的条目略过。其中dropwhile方法需要输入一个判断函数和一个可迭代对象。from itertools import dropwhilewith open('test') as f: for line in dropwhile(la原创 2021-03-18 13:39:02 · 369 阅读 · 1 评论 -
[PythonCookBook][迭代器和生成器] 迭代器的切片
常规思维下对迭代器的切片实际上迭代器是不能像列表一样进行切片的def count(n): while True: yield n n += 1counter = count(0)print(counter[10:20])#执行结果如下列打印,生成器是不可以被切片的。'''Traceback (most recent call last): File "C:/Users/Administrator/PycharmProjects/Training/原创 2021-03-18 13:15:37 · 138 阅读 · 1 评论 -
[Python][迭代器和生成器] 带有额外状态的生成器函数
目的用一个类来包装一个生成器,并添加新的状态在类中,则该类在拥有生成器特性的同时,又持有一些定制的状态信息。被实验对象aaabbbcccdddpython apython beeefffgggpython x代码示例该示例中未打印出定制化生成器的内容本身,而是打印出了特定时刻的生成器属性内的信息。lines.history才是这个故事的主角。from collections import deque#deque是一种双向的列表,可以在左右两端增加和删除元素class li原创 2021-03-16 13:44:52 · 111 阅读 · 1 评论 -
[Python][迭代器和生成器]反向迭代
反向迭代常规方法将可迭代对象列表化,用列表的reversed方法反向输出。这种方法的弊端就是在建立列表的过程中占用大量的内存空间。# Print a file backwards f = open('somefile') for line in reversed(list(f)): print(line, end='')高阶方法:反向迭代器在类中定义__reversed__()方法,使其具有反向迭代的能力class Countdown: def __init__(self,原创 2021-03-15 13:34:42 · 219 阅读 · 0 评论 -
[Python][迭代器和生成器] 迭代协议
深度优先的生成器实现Node Class的创建class Node: def __init__(self, value): self._value = value self._children = [] def __repr__(self): return 'Node({!r}) '.format(self._value) def add_child(self, node): self._children.app原创 2021-03-11 13:41:49 · 116 阅读 · 0 评论 -
[Python][迭代器和生成器]自定义迭代模式
课题代码实现示例创建一个生成器def float_range(init, end, step): x = init while x < end: yield x x += step测试过程for f in float_range(0, 4, 0.5): print(f)flist=list(float_range(0,1,0.125))print(flist)偏深度解析解析示例def countdown(n):原创 2021-03-10 13:38:10 · 88 阅读 · 0 评论 -
[Python][迭代器和生成器]委托迭代
class Node: def __init__(self,value): self._value = value self._children = [] def __repr__(self): return 'Node({!r}) '.format(self._value) def add_child(self, node): self._children.append(node) def __iter_原创 2021-02-27 13:43:15 · 165 阅读 · 0 评论 -
[PythonCookBook][迭代器和生成器]迭代器元素的手动访问
迭代器和生成器的手动访问一般在访问迭代器时,通常用到for循环,不过有些情况下你不想或者不能使用for循环,则我们使用next()函数来逐一获取迭代器元素访问迭代器元素的方法1for循环结束于StopIteration异常的抓取,这个例子中我们不使用类似for循环中的自动异常抓取,而是将其显示地在代码中执行。当next()函数掏空了迭代器抛出StopIteration异常时,我们手动抓取该异常,并打印出定制化的信息。文本文件‘test’中的内容(最后一行是空格):abcdefgg原创 2021-02-25 13:40:39 · 178 阅读 · 1 评论