python3 发生器 迭代器 内置函数 协程 哈哈我又回来啦
唉 犯傻了,干了一件虽有一点点道理的事情,但是却完全没有效果,我是不是傻,浪费了这么多时间在一件不可能的事情上,果然效果比道理更重要。。。
被一些琐事耽搁几天,python的学习都给我停了,擦!不过一切都结束了,我又回来学习python喽 先来个小知识点:
导入模块是字符串名字咋办? 用__import__("name")
今天的内容如下草稿,NLP今天就不抄了,碎觉碎觉。
生成器 generator
#!usr/bin/env/ python
# -*- coding:utf-8 -*-
# Author: XiaoFeng def func(i):
i = (i + 2)*3
return i # 列表生成式
list_test = [func(i) for i in range(5)] # 这还不是生成器 只是列表 数据式全部计算完了再打印
print(list_test) # 生成器 generator 把列表生成式的中括号改成小括号就是一种生成器的表达方式了
list_test2 = (func(i) for i in range(5)) # 生成就是要用就用现有的数据生成下一个
print(list_test2)
# print(list_test2.__next__()) # generator 有且只有一个用法:list,__next__()返回下一个值
# print(list_test2.__next__()) # 一般用for循环来输出
# print(list_test2.__next__()) # 生成器的用处就在于 想用的时候就生成数据 类似于中断一样
# print(list_test2.__next__())
# print(list_test2.__next__())
# print(list_test2.__next__()) # 这里再多来一个next就抛出异常了 因为超过了5个
for i in list_test2: # 这里通过循环的方式输出就没事儿。。。不用担心超出5个
print(i) # 来个斐波拉契数列
def fib(max_f):
n, a, b = 0, 0, 1
while n < max_f:
# print(b)
yield b # 用关键字yield就能让函数变为生成器 类似中断 从这里出去
a, b = b, a+b # 相当于元组(a, b) 然后b,a+b分别赋值 或者说先执行右边,再赋给左边
n += 1 # 即先算b 还有a+b 算好了以后再把结果 赋给a,b 与a=b b=a+b不一样
return "done" fib(6)
print(fib(6)) # 看看生成器长啥样
for i in fib(6): # 调用生成器输出
print(i) # 然而没得返回值。。。 假的吧 # 试试一个一个的输出
# f = fib(6)
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__()) # 超了6个 抛出异常 返回 StopIteration: done 那就捕获异常来得到返回值 t = fib(6) # 生成器t
while True:
try: # 第一次next会进入生成器t执行 然后碰到yield就出来 后面的next会直接进入yield 接着执行然后碰到yield再出来
x = next(t) # next() 会返回迭代器的下一项。。。 和__next__()一样 利用next() 回到yield
print(x)
except StopIteration as e: # 之前抛出的异常 StopIteration: done 可以理解为字典。。。
print(e.value)
break
单线程并发效果 也叫 协程
#!usr/bin/env/ python
# -*- coding:utf-8 -*-
# Author: XiaoFeng
import time def consumer(name):
print("%s准备吃包子啦!" % name)
while True:
baozi = yield # 这是出入口
print("包子\033[31;1m[%s]\033[0m来了,被[%s]吃了一半!" % (baozi, name)) def producer(name):
c_1 = consumer("A")
c_2 = consumer("B")
c_1.__next__() # 执行到yield
c_2.__next__() # 执行到yield
print("\033[41;1m我开始做包子啦!\033[0m")
for i in range(10):
time.sleep(2)
print("两个热包子出炉喽!")
c_1.send(i) # 直接找到yield并赋值给他
c_2.send(i) # 直接找到yield并赋值给他 producer("xiaofeng")
迭代器
#!usr/bin/env/ python
# -*- coding:utf-8 -*-
# Author: XiaoFeng
from collections.abc import Iterable
from collections.abc import Iterator print(isinstance((i+2 for i in range(10)), Iterable)) # 判断是否可迭代
print(isinstance((i+2 for i in range(10)), Iterator)) # 判断是否是迭代器
# 事实证明list tuple dict set str可迭代 但不是迭代器
print(isinstance("str", Iterable))
print(isinstance("str", Iterator))
# 将他们转为迭代器 使用iter()函数
print(isinstance(iter("str"), Iterator))
print(iter("str").__next__())
print("--" * 10)
print(next(iter("str")))
内置函数
#!usr/bin/env/ python
# -*- coding:utf-8 -*-
# Author: XiaoFeng print(dir([])) # 查看能用什么方法
print(all({0, 1, 2})) # 列表元组字典(键)集合 内的所有元素做 与运算
print(any({0: "", "a": ""})) # 做或运算
print(bin(0x13)) # 转二进制 0b二进制
print(oct(0b1111)) # 转八进制 0o八进制
print(hex(0o17)) # 转十六进制 0x十六进制
print(bool([])) # 布尔运算 非零即真 空即False
# 以二进制形式改字符串。。。不知道有啥用
d = bytearray("qwer",encoding="utf-8")
print(d)
print(d[2])
d[1] = 101
print(d) print(ascii([1, 2, 3])[0]) # 把括号内所有内容都变成字符串
print(callable(d)) # 判断能否调用
print(chr(90), ord("Z")) # ascii码转换
print(divmod(10, 4)) # 10/4 商2 余2
print(eval("1 + 2")) # 执行简单字符串转为代码
print("---" * 5)
act = """
for i in range(4):
print(i)
"""
exec(act) # 将复杂字符串转换为代码
print("---" * 5)
res = filter(lambda n: n > 5, range(10)) # filter用作筛选过滤一组数据
for i in res:
print(i) frozenset({1, 2, 3, 4}) # 变为不可变集合
print(globals(), locals()) # 打印当前文件全部全局变量 , 局部变量 以字典的方式
a = ""
print(id(a)) # 查看地址
print(hash(a)) # 查看a的哈希映射
print(max(1, 2, 4), min(1, 2, 4))
print(repr(["w", "e", "e"])[0]) # 将括号里内容变为字符串
print(round(3.1415926, 2)) # 保留几位小数
a = {0: "", 1: "", 3: ""}
print(sorted(a))
print(sorted(a.items())) # 按键排序
print(sorted(a.items(), key=lambda x: x[1])) # 按值排序
x = [1, 2, 3]
y = ["a", "s", "d"]
for i in zip(x, y): # 拉链
print(i)
python3 发生器 迭代器 内置函数 协程 哈哈我又回来啦的更多相关文章
- python3.7.1 内置函数
python3.7.1 内置函数列表 内置函数 abs() delattr() hash() memoryview() set() all() dict() help() min() setattr( ...
- Python--函数对象@命名空间与作用域@包函数@装饰器@迭代器@内置函数
一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(Firs ...
- Python3中的内置函数
内置函数 我们一起来看看python里的内置函数.什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为 ...
- 【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】
一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(Firs ...
- python3常用的内置函数
数学相关 abs(a) : 求取绝对值.abs(-1) max(list) : 求取list最大值.max([1,2,3]) min(list) : 求取list最小值.min([1,2,3]) su ...
- Python3 如何查看内置函数都有哪些?
数据科学交流群,群号:189158789,欢迎各位对数据科学感兴趣的小伙伴的加入! 上代码: 1 import builtins 2 num = len(dir(builtins)) 3 print( ...
- python3内置函数大全
由于面试的时候有时候会问到python的几个基本内置函数,由于记不太清,就比较难受,于是呕心沥血总结了一下python3的基本内置函数 Github源码: https://github. ...
- day20 匿名函数,内置函数,面向过程编程
目录 有名函数 匿名函数 max() min() sorted map filter 内置函数 面向过程编程 有名函数 def f1(): print('my name is f1') f1() my ...
- Python语法速查: 1. 数据类型与内置函数
返回目录 (1)常用内置数据类型 分类 类型名称 描述 数字 int 整数 float 浮点数 complex 复数 bool 布尔值 序列 str 字符串(不可变序列) list 列表 tuple ...
随机推荐
- java里的堆内存于栈内存的区别
这个区别对于我们来说并不大,这是内存分配的两种方法.一般代码逻辑,简单变量,结构体都是放入栈中,而对象,以及被装箱的数据是放入堆中的.简单来说,栈就是一个很长的栈(数据结构中的栈,如果不理解可以当做是 ...
- 免密登录-python
要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX. 在进行接口开发之前,还有一个重要的事情要处理,那就 ...
- 使用libpcap获取http报文
在上一篇博客中简单对libpcap库基本函数及基本工作流程做了些简单说明, 今天我们先了解一下pcap_loop()及pcap_dispatch()函数的功能及作用: (1)pcap_loop()循环 ...
- Java 面试知识点解析(四)——版本特性篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Zepto源码(2016)——Zepto模块(核心模块)
// Zepto.js // (c) 2010-2016 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...
- 《javascript语言精粹》读书笔记 Item1 精华与语法
第一章 精华 任何语言都有其精华的部分和鸡肋的部分,javascript也不例外,而且鸡肋的部分还很多.但javascript的流行却不受他的质量影响. javascript为何如此流行?因为他是we ...
- 你不知道的JavaScript--Item2 浮点数精度
理解JavaScript的浮点数 大多数编程语言都有几种数值型数据类型,但是JavaScript却只有一种.你可以使用typeof 运算符查看数字的类型.不管是整数还是浮点数,JavaScript都将 ...
- 利用 ssh 的用户配置文件 config 管理 ssh 会话
http://dhq.me/use-ssh-config-manage-ssh-session 利用 ssh 连接远程服务器,一般都要输入以下类似命令: 1 ssh user@hostname -p ...
- HTTP引流神器Goreplay详解【官译】
0.背景 校验系统的正确性和可靠性时,仅靠用例场景无法覆盖全生产环境下的所有场景,需要一套引流工具,在系统正式上线前,用线上的请求测试待上线系统,在正常请求下,是否有报错:在数倍请求下,系统的性能瓶颈 ...
- 用java代码将从数据库中取出的具有父子关系的数据转成json格式
思路:①.取出数据中的所有父节点放入一个集合中②.取出数据中所有为该父节点的子节点放入另一个集合中③.用到迭代的方法将子节点一层一层的遍历工具类:package com.assasion.test;i ...