关于python3:oeasypython0089大型机的衰落Dec小型机崛起PDPVAX网络

编码进化回顾上次内容上次 回顾了 计算机存储单位的演变 最小的读写单位 是 bit8-bit 固定下来 成为了字节(Byte)位数容量8-bit1Byte1024Byte1 KB1024 KB1 MB1024 MB1 GB1024 GB1 TB存储字符时 第1位 是 标记位后7位 是 ascii具体的值 能够用 1Byte 存储计算机之间 有了 更多的通信 编码对立 为的是 更好地通信计算机之间 是怎么 开始通信的 呢??计算机的演变计算机 所用的 元件 从继电器 进化到了电子管 电子管特点 体积大需预热容易故障IBM就是 整个信息产业 与此同时 新技术也在倒退TX-0MIT 研发了世界上 第一台晶体管计算机 无需预热故障率低名字叫做TX-0 Transistorized Experimental computer zero发音为 [tiks-u] 过后的 晶体管封装形式 学的还是 电子管 不过基于 晶体管的光刻技术 曾经 蓄势待发很多货色 都在蓄势待发 mit人工智能实验室 从此开始计算机黑客文化 从此开始Ken OlsenTX-0的工程方面的负责人是Ken Olsen 在理解了 晶体管的后劲 之后 他决定向 蓝色伟人(Big-Blue)IBM发动挑战畛域就是计算机他成立了DEC公司 Digital Equipment Corporation他公布了PDP-1 ...

February 21, 2023 · 1 min · jiezi

关于python3:oeasypython0086ASCII出现背景1963年DECPDP系列主机VT系列终端

编码进化回顾上次内容上次 回顾了 字符编码的推陈出新ibm 已经的EBCDIC 因为 字符不间断导致 后续 呈现有数问题随着 网络的倒退 数据交换的 须要原来的小隐患当初 产生了 微小问题Bemer 联结各方巨头 想要推出 字符间断的编码集这新编码集 具体长什么样 呢?新编码集7-bit的编码长度 构造和 明天的ascii 根本一样 空了 28个字符 明天小写字母的地位过后 还不敢放小写字母为什么呢?各语言各语言 都想进入 7-bit 日文假名拉丁字符西里尔字符都眼巴巴地等着地儿放 新编码 比EBCDIC 好了很多 具体 好在哪里呢?ASCII字母 连续性轻松判断字符 是否为 字母 连续性 ascii的 大写字母 是间断的ascii的 小写字母 也是间断的 还加了一些新字符进去反斜杠反斜杠 就是Bemer加到 ASCII当中的 反斜杠 起初 成了本义字符1963年的版本 光明森林 曾经 初具规模不过 如同找不到 EscEscEsc 还不在 过后的光明森林 中 而是 位于倒数第二 1963年 Bemer将Esc</kdb> 引入到ASCII中几年后 小型机开拓者DEC 通过 PDP系列小型机 开拓市场将Esc 玩成了 终端管制序列从 VT05 到 VT100 再到 VT220 ...

February 18, 2023 · 1 min · jiezi

关于python3:oeasypython0085ASCII之父BemerCOBOL数据交换网络

编码进化回顾上次内容上次 回顾了 字符编码的 进化过程 IBM 在数字化过程中 作用 十分大IBM 的 BCDIC 有 黑历史 6-bit的 BCDIC 间接进化成 8-bit的 EBCDIC补全了 小写字母 和 控制字符在ibm就是信息产业的年代 ibm的规范 怎么最终 没有成为 行业的规范 呢?ibmibm过后 的确 如日中天 主机、终端都是 本人的 软硬件一体ibm就是 整个数字世界EBCDIC编码 自身就是 ibm外部 编码 外部 通信协议里面 基本不晓得 就算 晓得了也只有去 被动兼容的份儿网络时代来了 计算机通信 大倒退ibm也想让 更多主机 退出arpa网通信通信 当中 共识 十分重要如果 几台主机编码方式 彼此不通是 无奈通信的 最先被搞疯的 是 ibm外部的人 BemerBemer发现 对立的 字符编码 在组网时 太重要了!!!无奈不同的编码 切实折磨他 够呛 也没有 适合的 转码程序更重要的是 没有编码的申明 不晓得对方 用的是什么编码就如同 你能听到声音但不晓得 去用哪国语言 来翻译 大型机市场 不止 IBM一家 ...

February 17, 2023 · 2 min · jiezi

关于python3:oeasypython0084扩展BCDEBCDICibm的发家史

编码进化回顾上次内容上次 回顾了 数字 进入二进制世界的 过程采纳的编码 是 BCD Binary Coded Decimal 也叫8421码十进制数的 二进制状态数字的 输入模式 辉光管七段数码管 7-seg 除了数字 之外 还有 字母字母 是如何编码进入 计算机世界的 呢?BCDIC在BCD的 根底上 ibm 持续着 人口统计的工作除了数字之外有了 字母编码的需要 ibm制作了一种 6-bit 的字符编码格局 BCDIC Binary Coded Decimal Interchange Code是一种 6-bit 的编码是一种 以纸带为外围的 编码在BCD的根底上 增加了字母 字母 依照十进数 编码为什么 不按 二进制数 编码呢?输出输出的设施 是 数字键盘 3个十进制数字输出1个字母 数字键盘 在固定电话中 仍然存在 有点像 九键输入法过后的 ibm 是 数字世界的 领航员ibmibm从一开始 玩的 就是数字化以人口统计 起家 到 称重计价 再到 下班打卡 数字化 基本离不开ibm ibm开始逐步自觉自卑酝酿了隐患隐患数字键盘 ...

February 15, 2023 · 2 min · jiezi

关于python3:oeasypython0078设置索引颜色indexcoloransi控制终端颜色

更多色彩回顾上次内容上次 理解了 高亮色彩 91-97 是 高亮 前景色101-107是 高亮 背景色 色彩品种 在原来根底上 减少了一些但也十分无限还想要 更精密的色彩 有可能吗??更多色彩持续深挖 对于 逃逸字符的文档能够用 索引色彩 那就 是 38;5;索引数字m 上图的196、213、160 来自于 什么 呢?索引色彩表索引数字 来自于 索引表 这色彩 好多啊 记不住 怎么办?或者 能够钻研一下 这些色彩的 法则?规定原理 0-7 是 规范色 原来的30-378-15 是 高亮色 原来的90-97 16-231 是 混合色 r、g、b 都是从 {0,1,2,3,4,5} 的阶梯范畴具体的色彩数值 来自于 16 + 36*r + 6*g+ b失去数值后 能够显示色彩 232-255 是 24级 灰阶色lolcat回忆lolcat这个命令 应该是 利用了这些色彩设置 有了这个 能够制作一个 海蓝色的海龟么 ?海蓝色的大海龟 我想让 海龟变色 怎么办?循环范畴 ...

February 9, 2023 · 1 min · jiezi

关于python3:oeasypython0074设置高亮色colorhighlightansi控制终端颜色

更多色彩回顾上次内容上次咱们搞的还是色彩 FG foreground 前景色 30-37BG background 背景色 40-47 这些 都能够和字体款式 联合起来 难道 就这几种色彩 吗??有点少啊!有些色彩 也和设想不统一 金黄色 也不够黄啊?!明确概念\是 转义字符escape character\和其余字符 能够形成转义序列\t\n\r\e 也是转义序列 \e 这个转义序列本义到 escape 这样的状态从失常的输入退出进入 control sequences 管制序列管制序列 不间接输入到屏幕而是设置一些地位、款式、色彩之类的他开始于 CSI(Control Sequence Introduce)CSI \e 对应 ascii 的值是(033)<sub>8</sub>\033[ 就是 管制序列初始化符号(Control Sequence Introduce)所以个别写作\033[管制信息如果我就想输入这个csi应该如何呢?输入csi间接对\本义就能够 各厂商终端都开始学习VT100的管制序列 对于管制信息的实现细节基本一致最终对立到了 ansi 规范下 于是终端有了色调亮色设置31-37 对应八种常见的前景色41-47 对应八种常见的背景色 91-97 对应八种高亮的常见前景色100-107对应 八种高亮的常见背景色 尝试 Bright Red和Red的确不一样 Green也有区别高亮绿真的比原来更高亮啊!! 高亮蓝色的确让蓝色高亮了起来然而这个和字体款式中的加粗加亮比拟呢?具体试验 各种控制符 31是一般红色91的高亮红色1是加粗字体31;1是一般红色加粗字体亮度排序 最亮 31;191;1中亮 91低亮 31色彩 有点粉 呢 还不是 纯红色这个 色彩 能够 更明确地量化 吗?具体色彩高亮 只是 一个名称 ...

February 8, 2023 · 1 min · jiezi

关于python3:oeasypython0074修改字体背景颜色backgroundcolor背景色

批改背景色回顾上次内容上次将asciiart和色彩一起来玩 7 种根本色变化多端不过到目前为止 改的 都是前风景 背风景能够批改吗?重温参数 具体入手试试print("\033[40moeasy\33[0mgo")print("\033[41moeasy\33[0mgo")print("\033[42moeasy\33[0mgo")print("\033[43moeasy\33[0mgo")print("\033[44moeasy\33[0mgo")print("\033[45moeasy\33[0mgo")print("\033[46moeasy\33[0mgo")print("\033[47moeasy\33[0mgo") 背景设置 开辟思路还能够 做出 什么样 好玩的成果 吗? 前景背景联合 我想要 营造出 西南过年那种 红红火火的 气氛西南大花布开始尝试\33[31;42m 31 红色前景42 绿色背景\33[41;32m 41 红色背景32 绿色前景\33[1;41;32m 1 加亮41 红色背景32 绿色前景 敲起鼓来,打起锣...当初 要换成 蓝匾金字的 感觉本人练习 怎么做?没有答案 要本人尝试背景色彩 看看这厚实的填色你还在 等什么?连忙 把神龟请进去取得神龟间接进入vim 先写一个根本框架 :r !pwd : 进入命令行模式r 读取前面的输入 放到 以后缓存pwd读取以后门路:r !ls 读取 门路下文件:r !cowsay -f turtle "oeasy" 执行外部命令 cowsay 让大海龟说 oeasy 行尾 有很多\ 应该如何 批量替换 来着?批量替换解决 行尾的 续行符问题 :%s/\\$/\\\\/g : 执行命令行模式% 对所有行执行命令s 执行的是替换命令\\$ 代表结尾处的一个反斜杠\\\\ 换成两个反斜杠 ...

February 7, 2023 · 1 min · jiezi

关于python3:python3下拷贝工具调研

后果: pickle 速度最快 python3 中 pickle 其实就是cpickle- https://docs.python.org/3.7/l...- pickle.dumps 有缓存性能,同一个对象的屡次dumps, 不会反复计算;Thepicklemodule keeps track of the objects it has already serialized, so that later references to the same object won’t be serialized again.marshaldoesn’t do this. 速度pickle: 5.236833497881889cpickle: 5.370606060326099copy: 32.38146398514509json: 57.057579030096534marsha: 6.961339645087719 扩大探讨:1、pickle的对象追踪并不稳固,目前还不分明外部的规定 性能测试脚本 import pickleimport _pickle as cPickleimport timeitimport copyimport jsonimport mathimport marshala = [{'id': 3021431, 'scheme_id': 1, 'cycle_length': 130, 'offset': 0, 'phases': '[{"ring":0,"barrier":0,"order":1,"position":1,"phase_id":4,"green_time":47,"red_time":0,"yellow_time":3},{"ring":0,"barrier":0,"order":1,"position":1,"phase_id":8,"green_time":47,"red_time":0,"yellow_time":3},{"ring":0,"barrier":1,"order":2,"position":2,"phase_id":4,"green_time":23,"red_time":0,"yellow_time":3},{"ring":0,"barrier":1,"order":2,"position":2,"phase_id":7,"green_time":23,"red_time":0,"yellow_time":3},{"ring":0,"barrier":2,"order":3,"position":3,"phase_id":7,"green_time":17,"red_time":0,"yellow_time":3},{"ring":0,"barrier":3,"order":4,"position":4,"phase_id":1,"green_time":31,"red_time":0,"yellow_time":3}]', 'ring_diagram': '[]'}, {'id': 3021432, 'scheme_id': 2, 'cycle_length': 170, 'offset': 0, 'phases': '[{"ring":0,"barrier":0,"order":1,"position":1,"phase_id":4,"green_time":38,"red_time":0,"yellow_time":3},{"ring":0,"barrier":0,"order":1,"position":1,"phase_id":8,"green_time":38,"red_time":0,"yellow_time":3},{"ring":0,"barrier":1,"order":2,"position":2,"phase_id":4,"green_time":53,"red_time":0,"yellow_time":3},{"ring":0,"barrier":1,"order":2,"position":2,"phase_id":7,"green_time":53,"red_time":0,"yellow_time":3},{"ring":0,"barrier":2,"order":3,"position":3,"phase_id":7,"green_time":40,"red_time":0,"yellow_time":3},{"ring":0,"barrier":3,"order":4,"position":4,"phase_id":1,"green_time":27,"red_time":0,"yellow_time":3}]', 'ring_diagram': '[]'}, {'id': 3021433, 'scheme_id': 3, 'cycle_length': 160, 'offset': 0, 'phases': '[{"ring":0,"barrier":0,"order":1,"position":1,"phase_id":4,"green_time":47,"red_time":0,"yellow_time":3},{"ring":0,"barrier":0,"order":1,"position":1,"phase_id":8,"green_time":47,"red_time":0,"yellow_time":3},{"ring":0,"barrier":1,"order":2,"position":2,"phase_id":4,"green_time":37,"red_time":0,"yellow_time":3},{"ring":0,"barrier":1,"order":2,"position":2,"phase_id":7,"green_time":37,"red_time":0,"yellow_time":3},{"ring":0,"barrier":2,"order":3,"position":3,"phase_id":7,"green_time":22,"red_time":0,"yellow_time":3},{"ring":0,"barrier":3,"order":4,"position":4,"phase_id":1,"green_time":42,"red_time":0,"yellow_time":3}]', 'ring_diagram': '[]'}]def p1(a): return pickle.loads(pickle.dumps(a))def p2(a): return cPickle.loads(cPickle.dumps(a))def p3(a): return copy.deepcopy(a)def p4(a): return json.loads(json.dumps(a))def p5(a): return marshal.loads(marshal.dumps(a))ret = timeit.repeat('p1(a)', setup='from __main__ import p1, p2, a', number=1000000, globals=globals(), repeat=5)print(type(ret))print('pickle:', sum(ret)/len(ret))ret = timeit.repeat('p2(a)', setup='from __main__ import p1, p2, a', number=1000000, globals=globals(), repeat=5)print('cpickle:', sum(ret)/len(ret))ret = timeit.repeat('p3(a)', setup='from __main__ import p1, p2, a', number=1000000, globals=globals(), repeat=5)print('copy:', sum(ret)/len(ret))ret = timeit.repeat('p4(a)', setup='from __main__ import p1, p2, a', number=1000000, globals=globals(), repeat=5)print('json:', sum(ret)/len(ret))ret = timeit.repeat('p5(a)', setup='from __main__ import p1, p2, a', number=1000000, globals=globals(), repeat=5)print('marsha:', sum(ret)/len(ret))

January 6, 2023 · 1 min · jiezi

关于python3:Python3入门机器学习-经典算法与应用-轻松入行人工智能内涵源码

download:Python3入门机器学习 经典算法与利用 轻松入行人工智能外延源码文章参考自学it666 https://www.zxit666.com从构造方法到实际练习优先队列一.导言咱们之前探讨过堆栈和队列。在java中,栈的类是stack,队列的接口是queue。咱们通过queue的实现类LinkedList练习了queue的办法,并利用相干常识实现了LeetCode 232题如何用栈实现queue。大家都晓得,像我这种不思进取的人,怎么会忽然有想法去学一门在工作中从未用过的课呢?不奇怪,我在做LeetCode 347的时候。Top K高频元素题明天试了几次不晓得怎么做。看了一下评论局部,发现这个问题其实应该是用优先级队列来做的,才晓得有优先级队列这种货色。然而,PriorityQueue在某些编程语言中是找不到的。侥幸的是,java有。实现优先级队列的类是优先级队列。顾名思义,优先就是优先的意思。俗话说,很多货色用了才晓得。所以明天,我将和你一起玩这个优先队列。第二,优先级队列因为我没有下载java8的源代码,PriorityQueue类里有很多英文正文,不不便截图,所以我就间接把代码放在上面了。什么是优先级队列?家喻户晓,放入一个元素是放在队列的开端,放入一个元素就是取出队列头的元素,也就是咱们常说的FIFO。那么什么是优先级队列呢?排队和排队有什么区别?能解决什么样的问题?优先级队列依然是顾名思义。优先级队列将依据元素的权重主动排列。也就是说,优先级队列实际上是有反FIFO规定的,但其对外接口依然是从队列头取元素,在队列尾加元素,没有其余拜访形式。它看起来像一个队列。队列实际上是一个笼罩着队列皮肤的堆。什么是堆?Heap通常能够看作一个残缺二叉树的数组对象,树中的每个节点不小于(或大于)其左右子节点的值。 如果父节点大于左右子节点的值,则为大顶堆。如果父节点小于左右子节点的值,则它是一个小的顶部堆。 优先级队列的特色 优先级队列中的元素必须实现外部比拟器或内部比拟器。优先级队列具备小顶堆的所有特色,默认为小顶堆。优先级队列不是线程平安的。不容许空元素。队列自身是无序的,然而提取的元素的程序是有序的。 局部性能来自百度。如有疑难,欢送评论斧正。谢谢你。 根本属性//序列化相干,能够疏忽private static final long serialVersionUID =-7720805057305804111 l;//默认状况下没有结构参数时数组的长度private static final int DEFAULT INITIAL CAPACITY = 11;//存储元素的数组队列瞬态对象[]队列;//private int size = 0;//设置排序策略公有最终比拟器//瞬态int mod count = 0;复制代码施工办法我将以下三种构造方法归为一类,第四种构造方法为主,其余三种为办法重载,DEFAULT_INITIAL_CAPACITY为值。队列长度比拟器参考优先级排序规定。默认状况下,优先级值很小。第四种构造方法是初始化队列数组的长度,设置比拟器。 公共优先级队列(){this(DEFAULT_INITIAL_CAPACITY,null);} 公共优先级队列(int initialCapacity) {this(initialCapacity,null);} 公共优先级队列(比拟器this(DEFAULT_INITIAL_CAPACITY,比拟器);} 公共优先级队列(int initialCapacity,比较仪if (initialCapacity < 1)抛出新的IllegalArgumentException();this . queue = new Object[initial capacity];this.comparator =比拟器;} 复制代码上面是PriorityQueue构造方法的一个测试。能够发现,当咱们调用PriorityQueue.size()办法时,返回的不是咱们设置的队列长度,而是元素个数。 上面的施工办法会略微简单一点。//蕴含优先级元素公共优先级队列(PriorityQueuethis .比拟器=(比拟器initfromporityqueue(c);}复制代码下图是下面的构造函数结构的,真的很有意思。大家能够看到,priorityQueue4是依照咱们设定的规定降序排列的,没有任何问题。然而priorityQueue5继承了priorityQueue4和比拟器的元素后,打印进去的并没有齐全按程序打印,最初四个元素变成了2,1,2,1,2,2,1。 用指定程序的汇合元素创立PriorityQueue。公共优先级队列(排序集this .比拟器=(比拟器initElementsFromCollection(c);}复制代码具体的测试代码如下所示。像PriorityQueue类一样,它是一个继承其类的比拟器。 上面的构造方法整合了后面两个构造方法,他们调用的最初一个办法次要是初始化数组,有各种跳转。有趣味的能够本人看看。公共优先级队列(汇合if (c已排序汇合的实例){有序集this .比拟器=(比拟器initElementsFromCollection(ss);}else if(c instance of priority queue){优先级队列this .比拟器=(比拟器initfromporityqueue(pq);}否则{this.comparator = nullinitFromCollection(c);}}复制代码惯例办法 增加/提供:增加元素Element/peek:不删除return元素。Remove/poll:弹出元素并删除。删除:删除元素,如果有多个元素,则只删除一个元素。 摘要有很多货色,你用了才晓得。如果能够的话,最好提前理解他们,防止出现我这样的状况:不晓得什么时候须要他们。 ...

September 7, 2022 · 1 min · jiezi

关于python3:众妙之门玄之又玄游戏系统中的伪随机和真随机算法实现Python3

原文转载自「刘悦的技术博客」https://v3u.cn/a_id_212 有人说,如果一个人置信运气,那么他肯定参透了人生。设想一下,如果你在某款moba游戏中,在配备平平,队友天坑的状况下,却刀刀暴击,在一小波gank中轻松拿下五杀,兴许你会感叹本人的神操作和好运气,但其实,还有另外一种神秘的力量在摆布着这所有,那就是:随机算法。 伪随机(Pseudo-Randomization)其实,竞技游戏通常是回绝随机性干涉的,因为它烦扰了玩家实际操作程度的考量。然而,应答突发状况也应该是玩家应变能力的一种体现。因而,在moba游戏中,有很多随机事件,这些随机事件升高了游戏的可预测性,减少了变数。为了限度这种随机性的影响,伪随机算法应运而生。 伪随机散布(pseudo-random distribution,简称PRD)在游戏中用来示意对于一些有肯定几率的配备和技能的统计机制。在这种实现中,事件的几率会在每一次没有产生时减少,但作为弥补,第一次的几率较低。这使得成果的触发后果更加统一。 以Dota2为例,在大量的英雄技能中,比如说斯拉达的重击、酒仙的醉拳、主宰的剑舞之类的技能,都利用了伪随机机制: 具体的实现逻辑是这样的,每次开释技能,都应用一个一直减少的概率来进行计算,如果这个事件始终触发不胜利,那么概率就一直回升,直到事件产生为止。 要实现这个伪随机算法,要解决的问题就是,对于一个产生概率为p的事件,在咱们第n次开释技能的时候,产生的几率在第N次胜利触发的几率为P(N) = C × N,对于每一个没有胜利触发的实例来说,伪随机散布PRD会通过一个常数C来减少下一次成果触发的几率。这个常数会作为初始几率,比成果阐明中的几率要低,一旦成果触发,计数器会重置,几率从新复原到初始几率。 举个例子,斯拉达的重击有25%几率对指标造成眩晕,那么第一次攻打,他实际上只有大概8.5%几率触发重击,随后每一次没有胜利的触发实例都会减少大概8.5%触发几率,于是到了第二次攻打,几率就变成大概17%,第三次大概25.5%……以此类推,直到重击的概率达到100%。在一次重击触发后,下一次攻打的触发几率又会重置到大概8.5%,那么通过一段时间之后,这些重击几率的平均值就会靠近25%。 基于伪随机的成果使得屡次触发或屡次不触发的极其状况都变得常见,这使得游戏的运气成分绝对升高了一些。然而尽管实践上可行,然而在游戏中玩家很难使用这个机制来“刻意”减少下一次触发的几率。值得一提的是,Dota2对伪随机技能算法也有限度,如果被开释技能的对象基本就不可能触发成果,那么触发几率不会减少,也就是说,一个英雄反补或攻打修建不会减少他下一次攻打触发的致命一击几率,因为致命一击对反补和修建有效。 马尔可夫链(Markov chain)那么,Dota2底层到底怎么实现的呢?这波及到一个算法公式:马尔可夫链(Markov chain) 马尔可夫链因俄国数学家Andrey Andreyevich Markov得名,为状态空间中通过从一个状态到另一个状态的转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由以后状态决定,在工夫序列中它后面的事件均与之无关。 说白了就是,如果对于一个触发概率为5%暴击的技能,那么我砍第一刀呈现暴击的概率是c,第二刀是2c,如果始终没有暴击,直到第N刀,呈现了(c*N)大于1了,那么这次暴击就必然产生了,而在两头的每一次,如果暴击产生了,那么咱们就把随机概率重置为c。 P = 1*c + 2*c(1-c) + 3*c(1-c)(1-2c)+4*c(1-c)(1-2c)(1-3c)其中 P = 1/p,N=1/c(第N刀,即累加概率的最初一刀必然暴击) 那么咱们就能够用折半查找在(0,1)之间一直估算c,直到这个公式成立就行了。 首先,模仿N次触发,计算是否会在N次触发之后必然产生: import math def p_from_c(c): po, pb = 0, 0 sumN = 0 maxTries = math.ceil(1/c) for n in range(maxTries): po = min(1, c*n) * (1-pb) pb = pb + po sumN = sumN + n * po return (1 / sumN) 随后,在遍历中,一直地取中值判断,如果触发的概率足够小,那么认为曾经找到了对应的c系数: ...

April 22, 2022 · 3 min · jiezi

关于python3:轻盈潇洒卓然不群敏捷编辑器Sublime-text-4中文配置Python3开发运行代码环境Win11M1-mac

原文转载自「刘悦的技术博客」https://v3u.cn/a_id_210 20世纪初,简直所有的飞机都是并列双翼构造,此时,美国驰名航行大亨霍华德·休斯认为本人的飞机不够快,助手婉转地揭示他,如果速度太快,飞机的上翼构造支柱很可能会撑持不住,产生断裂。霍华德愤恨地向助手大喊:“谁说咱们须要上翼构造?让上翼和支柱见鬼去吧,咱们须要的是更轻便的单翼飞机!” 于是乎,H1单翼飞机就此呈现,这款机型身上体现了霍华德作为一名航空工程师的蠢才之处:突破性的流线型机身,可收放起落架,笨重灵动,立体的铆钉和接头以缩小空气阻力,因其柔美的造型被称为“银色子弹”。 同样地,如果你入职了一家公司,当主管拍拍你的肩膀让你往电脑里装置Pycharm的时候,你也能够愤恨地向他大喊:“谁说咱们须要Pycharm?让轻便的IDE都见鬼去吧,我只有轻便的Sublime text 4 !” 是的,轻便优雅,不是所有人都喜爱披盔戴甲,重装上阵。如果你偏爱轻灵机巧,编写代码恰如春日双燕飞舞柳间,高下左右,回转如意,那么Sublime text 4会是你的最佳抉择。 Win11系统配置Sublime text 4首先来到Win11环境下,进入Sublime text 4官网的下载页面:https://www.sublimetext.com/d... 抉择Win版本的安装包: 下载胜利后,双击装置即可。 随后,须要装置Python3的安装包,这里举荐3.10最新版本,因为之前装置过,这里就不赘述了,如果是没有装置过Python3的敌人,请移玉步至:一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上装置配置Python3.10开发环境。 Sublime Text 4 是一个扩展性极高的编辑器,所有性能能够应用称为Package Control的插件进行扩大。要装置、更新和管理软件,咱们须要在 Sublime Text 4上装置 Package Control。 关上Sublime Text 4 ,抉择 菜单 -> menu Tools -> Install Package Control 进行装置: 装置过程须要期待一小会,一旦装置胜利,会有相应的提示信息: 上面咱们就能够利用Package Control装置一些扩大软件了,能够通过 菜单 -> Install Package Control option 来激活装置命令行,也能够通过快捷键 Ctrl+Shift+P 来激活装置命令行: 随后输出install后抉择install package 回车抉择。 在装置搜寻框里,键入:Chinese 抉择 ChineseLocalizations 回车装置中文扩大。 装置好当前,咱们的Sublime Text 4就能够反对中文显示了。 ...

April 1, 2022 · 2 min · jiezi

关于python3:python批量处理1000文件

平台windows10 思路: 1、先能调用并找到文件夹 2、别离对文件夹中的文件独自解决,获取数据 操作:1、glob办法能够调用文件夹中的所有文件,如果文件夹中表格信息足够,能够搁置1000+,all_list是用来防止循环操作影响到最终数据而在循环外减少的: 2、也就是在理论插入到excel表格前,先做一步操作,把每个文件的信息,放入all_list中,最终遍历all_list插入到表格中: 援用原文: https://mp.weixin.qq.com/s?__... 此处依据实际操作状况对原文做出解决。 心愿对大家有帮忙!

January 27, 2022 · 1 min · jiezi

关于python3:Python3实战Spark大数据分析及调度

Python3实战Spark大数据分析及调度这个 MySQL bug 让我大开眼界! 这周收到一个 sentry 报警,如下 SQL 查问超时了。 select * from order_info where uid = 5837661 order by id asc limit 1复制代码执行show create table order_info 发现这个表其实是有加索引的 CREATE TABLE order_info (id bigint(20) unsigned NOT NULL AUTO_INCREMENT,uid int(11) unsigned,order_status tinyint(3) DEFAULT NULL, ... 省略其它字段和索引 PRIMARY KEY (id), KEY idx_uid_stat (uid,order_status),) ENGINE=InnoDB DEFAULT CHARSET=utf8复制代码实践上执行上述 SQL 会命中 idx_uid_stat 这个索引,但实际执行 explain 查看 explain select * from order_info where uid = 5837661 order by id asc limit 1复制代码可能看到它的 possible_keys(此 SQL 可能涉及到的索引) 是 idx_uid_stat,但实际上(key)用的却是全表扫描download ...

January 6, 2022 · 2 min · jiezi

关于python3:一网成擒全端涵盖在不同架构Intelm1不同开发平台WinMacUbuntu配置Python310开发环境

原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,行将进入2022年,驰名麻利开发语言Python也放出了3.10最终版,本次咱们来展现一下在不同的零碎和平台中,高效部署Python3.10开发环境,这里咱们并不依赖其余的三方软件,只通过Python官网的安装包进行配置,编辑器咱们仍然应用微软开源的Vscode,争取在一分钟以内就能够在一台洁净的开发机上部署好环境,省去一些不必要的步骤。 首先咱们以市场占有率最高的微软Intel芯片x86架构的64位win10零碎为例子。第一步,关上python官网,python.org 抉择 python3.10.0 64位 windows零碎安装包。 下载胜利后,双击装置,这里不要抉择默认第一个立即装置,因为默认装置会把python装置到一个十分深的目录,在日常开发中咱们有可能去批改一些库的源码,这种目录十分深的状况会造成一些不便。 同时勾选增加环境变量。 随后是一些默认装置的插件,不须要独自设置,点击下一步 上面这里倡议将python装置到c盘根目录,不便咱们随时批改和调试 装置胜利后,能够按快捷键:视窗键+r 输出cmd 关上终端 输出python命令,如果能够进入python命令行阐明装置胜利 Python 3.10.0 (tags/v3.10.0:ccb0e6a, Nov 15 2021, 18:08:50) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>否则就有可能是环境没有配好,这里咱们能够检查一下 右键点击此电脑,抉择属性,高级零碎设置,环境变量,能够看到曾经配置好了,这里也能够配置不同版本的Python。 除了Python本体,咱们还能够配置一下pip的装置源,pip是咱们用来装三方库的软件,默认源是国外的网址,速度很慢。这里咱们关上用户目录,抉择以后用户目录,新建一个文件夹叫做pip,随后新建pip.ini的配置文件: [global] trusted-host = mirrors.aliyun.com index-url = http://mirrors.aliyun.com/pypi/simple文件外部指定信赖的域名,而后把具体的源地址写入就能够了。 从新关上终端 输出 命令 pip config list 如果看到原地址产生了变动,那么阐明配置胜利 liuyue:Versions liuyue$ pip config list global.index-url='http://mirrors.aliyun.com/pypi/simple/' install.trusted-host='mirrors.aliyun.com' liuyue:Versions liuyue$上面来看看编辑器vscode的配置,关上vscode官网,点击download 这里咱们抉择因特尔芯片64位的零碎安装包点击下载 ...

November 30, 2021 · 2 min · jiezi

关于python3:Python3数据分析与挖掘建模实战

download:Python3数据分析与开掘建模实战Springboot之前出现的问题Spring框架需要进行大量的配置我的项目的依赖治理冲突 为什么是SpringBootSpring Boot本身并不提供Spring框架的核心个性以及扩大功能,只是用于疾速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来代替Spring的解决打算,而是和Spring框架紧密拆散用于晋升Spring开发者体验的工具。 Spring Boot继承了Spring的长处,并新增了一些新功能和个性(0)从字面理解,Boot是疏导的意义,因此SpringBoot帮助开发者疾速搭建Spring框架,Spring 我的项目疏导页面可能在几秒构建一个我的项目(1)Spring Boot 内置了多种种弱小的测试框架,只需要在我的项目中引入spring-boot-start-test依赖包(2)Spring Boot 的主动配置让配置变简略;(3)SpringBoot的起步依赖让依赖治理更加简略;(4)Spring Boot Actuator对利用系统监控的集胜利能;(5)现在spring boot和spring cloud是现在java开发框架的支流了 Spring Boot提供了一种新的编程范式,能在最小的阻力下开发Spring应用程序。有了它,你可能更加敏捷地开发Spring应用程序,专一于应用程序的功能,不必在Spring的配置上多花功夫,以至残缺不必配置。实际上,Spring Boot的一项重要工作就是让Spring不再成为你胜利路上的绊脚石。 ——《SpringBoot实战》 springboot如何做到 构建springboot我的项目拜访http://start.spring.io/抉择构建工具Maven Project、Spring Boot版本以及一些工程基本信息 下载压缩包当前间接导入到ide中就可能了,大概就是这个样子 这个是我大抵画的一些spring的货色,先从代码结构说吧http://naotu.baidu.com/file/e... 这是一般的主程序入口,当然在咱们的我的项目中,因为并没有使用springboot内置的tomcat,所以启动形式有所不同 @SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }} 不实用内置tomcat的情况,原理没有区别 @SpringBootApplication@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, RedisAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, })@ComponentScan({ "com.fanli.*" })public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); }}

October 11, 2021 · 1 min · jiezi

关于python3:python协程

协程,又称微线程,纤程。英文名Coroutine。 线程是零碎级别的它们由操作系统调度,而协程则是程序级别的由程序依据须要本人调度。在一个线程中会有很多函数,咱们把这些函数称为子程序,在子程序执行过程中能够中断去执行别的子程序,而别的子程序也能够中断回来继续执行之前的子程序,这个过程就称为协程。也就是说在同一线程内一段代码在执行过程中会中断而后跳转执行别的代码,接着在之前中断的中央持续开始执行,相似与yield操作。 协程领有本人的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保留到其余中央,在切回来的时候,复原先前保留的寄存器上下文和栈,也就是晓得属于本人的变量,这就是为什么生成器在yield之后,能够持续应用yield 的变量的起因。因而:协程能保留上一次调用时的状态(即所有部分状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上一次来到时所处逻辑流的地位。 协程的长处: (1)无需线程上下文切换的开销,协程防止了无意义的调度,由此能够进步性能(但也因而,程序员必须本人承当调度的责任,同时,协程也失去了规范线程应用多CPU的能力) (2)无需原子操作锁定及同步的开销 (3)不便切换控制流,简化编程模型 (4)高并发+高扩展性+低成本:一个CPU反对上万的协程都不是问题。所以很适宜用于高并发解决。 协程的毛病: (1)无奈利用多核资源:协程的实质是个单线程,它不能同时将 单个CPU 的多个核用上,协程须要和过程配合能力运行在多CPU上.当然咱们日常所编写的绝大部分利用都没有这个必要,除非是cpu密集型利用。 (2)进行阻塞(Blocking)操作(如IO时)会阻塞掉整个程序 接下来是用协程实现 生产者,消费者的经典案例: def consumer(): print("[consumer]:i am hunger , i need food") while True: food = yield if food is None: break print(f"[consumer]: so delicious {food} baozi") print('i see')def producter(): g = consumer() #生成一个消费者对象 i = 0 next(g) #协程必须预激活,走到 下面yield处,而后挂着,期待调用方给它发消息 while i < 5: print(f"[producter]: make food {i} baozi") g.send(i) #应用生成器提供的api send,send中的值就是下面food的值; i += 1 print("[producter]: oh no, i am tried") g.close() #敞开协程,养成良好习惯producter()[consumer]:i am hunger , i need food[producter]: make food 0 baozi[consumer]: so delicious 0 baozi[producter]: make food 1 baozi[consumer]: so delicious 1 baozi[producter]: make food 2 baozi[consumer]: so delicious 2 baozi[producter]: make food 3 baozi[consumer]: so delicious 3 baozi[producter]: make food 4 baozi[consumer]: so delicious 4 baozi[producter]: oh no, i am tried值得注意点是:就算不必调用下面的g.close(),程序尽管会失常退出,然而这个协程并没有敞开,而且它的此时的状态是:GEN_SUSPENDED ; ...

January 5, 2021 · 2 min · jiezi

关于python3:Python-117Python手把手教程之文件的读写以及IO操作

作者 | 弗拉德起源 | 弗拉德(公众号:fulade_me) 从文件中读取数据文本文件可存储的数据量很多,每当须要剖析或批改存储在文件中的信息时,读取文件都很有用,对数据分析应用程序来说尤其 如此。例如,你能够编写一个这样的程序:读取一个文本文件的内容,从新设置这些数据的格局 并将其写入文件,让浏览器可能显示这些内容。要应用文本文件中的信息,首先须要将信息读取到内存中。为此,你能够一次性读取文件的全部内容,也能够以每次一行的形式逐渐读取。 读取整个文件要读取文件,须要一个蕴含几行文本的文件。上面首先来创立一个文件,它蕴含准确到小数点后30位的圆周率值,且在小数点后每10位处都换行: 3.1415926535 8979323846 2643383279咱们把它保留为pi_digits.txt文件 with open('pi_digits.txt') as file_object: contents = file_object.read() print(contents)咱们先来看看函数open()。要以任何形式应用文件——哪怕仅仅是打印其内容,都得先关上文件,这样能力拜访它。函数open()承受一个参数: 要关上的文件的名称。Python在以后执行的文件所在的目录中查找指定的文件。在这个示例中,如果咱们把文件保留为file_reader.py,因而Python在file_reader.py所在的目录中查找pi_digits.txt。函数open()返回一个示意文件的对象。在这里,open('pi_digits.txt')返回一个示意文件pi_digits.txt的对象,Python将这个对象存储在咱们将在前面应用的变量中。关键字with在不再须要拜访文件后将其敞开。在这个程序中,留神到咱们调用了open(),但没有调用close(),你也能够调用open()和close()来关上和敞开文件,但这样做时,如果程序存在bug,导致close()语句未执行,文件将不会敞开。这看似微不足道,但未妥善地敞开文件可能会导致数据失落或受损。如果在程序中过早地调用close(),你会发现须要应用文件时它已敞开,这会导致更多的谬误。并非在任何状况下都能轻松确定敞开文件的失当机会,但通过应用后面所示的构造,可让Python去确定:你只管关上文件,并在须要时应用它,Python自会在适合的时候主动将其敞开。通过打印contents的值,就可将这个文本文件的全部内容显示进去: 3.1415926535 8979323846 2643383279文件门路当你将相似pi_digits.txt这样的简略文件名传递给函数open()时,Python将在以后执行的文件所在的目录中查找文件。依据你组织文件的形式,有时可能要关上不在程序文件所属目录中的文件。例如,你可能将 程序文件存储在了文件夹python_work中,而在文件夹python_work中,有一个名为text_files的文件夹,用于存储程序文件操作的文本文件。尽管文件夹text_files蕴含在文件夹python_work中,但仅向open()传递位于该文件夹中的文件的名称也不可行,因为Python只在文件夹python_work中查找,而不会在其子文件夹text_files中查找。要让Python关上不与程序文件位于同一个目录中的文件,须要提供文件门路,它让Python到零碎的特定地位去查找。 因为文件夹text_files位于文件夹python_work中,因而可应用绝对文件门路来关上该文件夹中的文件。绝对文件门路让Python到指定的地位去查找,而该地位是绝对于以后运行的程序所在目录的。在Linux和OS X中,你能够这样编写代码: with open('text_files/filename.txt') as file_object:这行代码让Python到文件夹python_work下的文件夹text_files中去查找指定的.txt文件。在Windows零碎中,在文件门路中应用反斜杠\而不是斜杠/: with open('text_files\filename.txt') as file_object:你还能够将文件在计算机中的精确地位通知Python,这样就不必关怀以后运行的程序存储在什么中央了。这称为相对文件门路。在相对路径行不通时,可应用绝对路径。例如,如果text_files并不在文件夹python_work中,而在文件夹other_files中,则向open()传递门路'text_files/ filename.txt'行不通,因为Python只在文件夹python_work中查找该地位。为明确地指出你心愿Python到哪里去查找,你须要提供残缺的门路。绝对路径通常比相对路径更长,因而将其存储在一个变量中,再将该变量传递给open()会有所帮忙。在Linux和OS X中,绝对路径相似于上面这样: file_path = '/home/ehmatthes/other_files/text_files/filename.txt'with open(file_path) as file_object:而在Windows零碎中,它们相似于上面这样: file_path = 'C:\Users\ehmatthes\other_files\text_files\filename.txt'with open(file_path) as file_object:通过应用绝对路径,可读取零碎任何中央的文件。就目前而言,最简略的做法是,要么将 据文件存储在程序文件所在的目录,要么将其存储在程序文件所在目录下的一个文件夹(如text_files)中。 逐行读取读取文件时,经常须要查看其中的每一行:你可能要在文件中查找特定的信息,或者要以某种形式批改文件中的文本。例如,你可能要遍历一个蕴含天气数据的文件,并应用天气形容中蕴含字样sunny的行。在新闻报道中,你可能会查找蕴含标签<headline>的行,并按特定的格局设置它。要以每次一行的形式查看文件,可对文件对象应用for循环: filename = 'pi_digits.txt'with open(filename) as file_object: for line in file_object: print(line)咱们将要读取的文件的名称存储在变量filename中,这是应用文件时一种常见的做法。因为变量filename示意的并非理论文件——它只是一个让Python晓得到哪里去查找文件的字符串,因而可轻松地将'pi_digits.txt'替换为你要应用的另一个文件的名称。 调用open()后,将一个示意文件及其内容的对象存储到了变量file_object中。这里也应用了关键字with,让Python负责妥善地关上和敞开文件。为查看文件的内容,咱们通过对文件对象执行循环来遍历文件中的每一行,咱们打印每一行时,发现空白行更多了: 3.1415926535 89793238462643383279为何会呈现这些空白行呢?因为在这个文件中,每行的开端都有一个看不见的换行符,而print语句也会加上一个换行符,因而每行开端都有两个换行符:一个来自文件,另一个来自print语句。 创立一个蕴含文件各行内容的列表应用关键字with时,open()返回的文件对象只在with代码块内可用。如果要在with代码块外拜访文件的内容,可在with代码块内将文件的各行存储在一个列表中,并在with代码块外应用该列表:你能够立刻解决文件的各个局部,也可推延到程序前面再解决。上面的示例在with代码块中将文件pi_digits.txt的各行存储在一个列表中,再在with代码块外打印它们: ...

January 4, 2021 · 2 min · jiezi

关于python3:Python-115Python手把手教程之详解类Class以及类的使用

作者 | 弗拉德起源 | 弗拉德(公众号:fulade_me) 创立和应用类应用类简直能够模仿任何货色。上面来编写一个示意小狗的简略类Dog——它示意的不是特定的小狗,而是任何小狗。对于大多数宠物狗,咱们都晓得些什么呢?它们都有名字和年龄,咱们还晓得,大多数小狗还会蹲下和打滚。因为大多数小狗都具备上述两项信息(名字和年龄)和两种行为(蹲下和打滚),咱们的Dog类将蕴含它们。这个类让Python晓得如何创立示意小狗的对象。编写这个类后,咱们将应用它来创立示意特定小狗的实例。 创立Dog类依据Dog类创立的每个实例都将存储名字和年龄。咱们赋予了每条小狗蹲下(sit())和打滚(roll_over())的能力: class Dog(): """一次模仿小狗的简略尝试""" def __init__(self, name, age): """初始化属性name和age""" self.name = name self.age = age def sit(self): """模仿小狗被命令时蹲下""" print(self.name.title() + " is now sitting.") def roll_over(self): """模仿小狗被命令时打滚""" print(self.name.title() + " rolled over!")首先咱们定义了一个名为Dog的类。依据约定,在Python中,首字母大写的名称指的是类。 这个类定义中的括号是空的,因为咱们要从空白创立这个类。而后,咱们编写了一个文档字符串,对这个类的性能作了形容。 办法__init__()类中的函数称为办法,咱们来第一个,办法__init__()是一个非凡的办法,每当你依据Dog类创立新实例时,Python都会主动运行它。在这个办法的名称中,结尾和开端各有两个下划线,这是一种约定,旨在防止Python默认办法与一般办法产生名称抵触。 咱们将办法__init__()定义成了蕴含三个形参:self、name和age。在这个办法的定义中,形参self必不可少,还必须位于其余形参的后面。因为 Python调用这个__init__()办法来创立Dog实例时,将主动传入实参self。每个与类相关联的办法调用都主动传递实参self,它是一个指向实例自身的援用,让实例可能拜访类中的属性和办法。咱们创立Dog实例时,Python将调用Dog类的办法__init__()。咱们将通过实参向Dog()传递名字和年龄。self会主动传递,因而咱们不须要传递它。每当咱们依据Dog类创立实例时,都只需给最初两个形参(name和age)提供值。 __init__()内的两个变量都有前缀self。以self为前缀的变量都可供类中的所有办法应用,咱们还能够通过类的任何实例来拜访这些变量。self.name = name获取存储在形参name中的值,并将其存储到变量name中,而后该变量被关联到以后创立的实例。self.age = age的作用与此相似。像这样可通过实例拜访的变量称为属性。 Dog类还定义了另外两个办法:sit()和roll_over()。因为这些办法不须要额定的信息,如名字或年龄,因而它们只有一个形参self。咱们前面将创立的实例可能拜访这些办法,换句话说,它们都会蹲下和打滚。以后,sit()和roll_over()所做的无限,它们只是打印一条音讯,指出小狗正蹲下或打滚。但能够扩大这些办法以模仿理论状况:如果这个类蕴含在一个计算机游戏中,这些办法将蕴含创立小狗蹲下和打滚动画成果的代码。如果这个类是用于管制机器狗的,这些办法将疏导机器狗做出蹲下和打滚的动作。 由类生成实例可将类视为无关如何创立实例的阐明。Dog类是一系列阐明,让Python晓得如何创立示意特定小狗的实例。上面来创立一个示意特定小狗的实例: my_dog = Dog('willie', 6)print("My dog's name is " + my_dog.name.title() + ".")print("My dog is " + str(my_dog.age) + " years old.")这里应用的是前一个示例中编写的Dog类。咱们让Python创立一条名字为'willie'、 年龄为6的小狗。遇到这行代码时,Python应用实参'willie'和6调用Dog类中的办法__init__()。 办法__init__()创立一个示意特定小狗的示例,并应用咱们提供的值来设置属性name和age。办法__init__()并未显式地蕴含return语句,但Python主动返回一个示意这条小狗的实例。咱们将这个实例存储在变量my_dog中。在这里,命名约定很有用,咱们通常能够认为首字母大写的名称(如 Dog)指的是类,而小写的名称(如my_dog)指的是依据类创立的实例。 ...

December 28, 2020 · 2 min · jiezi

关于python3:Python-113Python手把手教程之详解函数和函数的使用

作者 | 弗拉德起源 | 弗拉德(公众号:fulade_me) 定义函数上面是一个打印问候语的简略函数,名为greet_user(): def greet_user(): """显示简略的问候语""" print("Hello!")greet_user()这个示例演示了最简略的函数构造。应用关键字def来通知Python你要定义一个函数。在这里,函数名为greet_user(),它不须要任何信息就能实现其工作,因而括号是空的(即便如此,括号也必不可少)。最初,定义以冒号结尾。 紧跟在def greet_user():前面的所有缩进行形成了函数体。代码行print("Hello!")是函数体内的惟一一行代码,greet_user()只做一项工作:打印Hello!。 因为这个函数不须要任何参数,因而调用它时只需输出greet_user()即可。和预期的一样,它打印Hello!。 向函数传递信息只需稍作批改,就能够让函数greet_user()不仅向用户显示Hello!,还将用户的名字用作参数。 因而,可在函数定义def greet_user()的括号内增加username。通过在这里增加username,就可让函数承受你给username指定的任何值。当初,这个函数要求你调用它时给username指定一个值。调用greet_user()时,可将一个名字传递给它,如下所示: def greet_user(username): """显示简略的问候语""" print("Hello, " + username.title() + "!")greet_user('Fulade') 代码greet_user('Fulade')调用函数greet_user(),并向它提供执行print语句所需的信息。这个函数承受你传递给它的名字,并向这个人收回问候: Hello Fulade !同样,greet_user('sarah')调用函数greet_user()并向它传递sarah,打印Hello, Sarah!。你能够依据须要调用函数greet_user()任意次,调用时无论传入什么样的名字,都会生成相应的输入。 实参和形参后面定义函数greet_user()时,要求给变量username指定一个值。调用这个函数并提供这种参数,它将打印相应的问候语。 在函数greet_user()的定义中,变量username是一个形参——函数实现其工作所需的一项信息。在代码greet_user('Fulade')中,值Fulade是一个实参。 实参是调用函数时传递给函数的信息。咱们调用函数时,将要让函数应用的信息放在括号内。在greet_user('Fulade')中,将实参Fulade传递给了函数greet_user(),这个值被存储在形参username中。 传递实参鉴于函数定义中可能蕴含多个形参,因而函数调用中也可能蕴含多个实参。向函数传递实参的形式很多,可应用地位实参,这要求实参的程序与形参的程序雷同;也可应用关键字实参,其中每个实参都由变量名和值组成;还可应用列表和字典。上面来顺次介绍这些形式。 地位实参你调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。因而,最简略的关联形式是基于实参的程序。这种关联形式被称为地位实参。为明确其中的工作原理,来看一个显示宠物信息的函数。这个函数指出一个宠物属于哪种动物以及它叫什么名字,如下所示: def describe_pet(animal_type, pet_name): """显示宠物的信息""" print("\nI have a " + animal_type + ".") print("My " + animal_type + "'s name is " + pet_name.title() + ".")describe_pet('hamster', 'harry')这个函数的定义表明,它须要一种动物类型和一个名字。调用describe_pet()时,须要按程序提供一种动物类型和一个名字。 例如,在后面的函数调用中,实参hamster存储在形参animal_type中,而实参harry存储在形参pet_name中。在函数体内,应用了这两个形参来显示宠物的信息。 调用函数屡次你能够依据须要调用函数任意次。要再形容一个宠物,只需再次调用describe_pet()即可: def describe_pet(animal_type, pet_name): """显示宠物的信息""" print("\nI have a " + animal_type + ".") print("My " + animal_type + "'s name is " + pet_name.title() + ".")describe_pet('hamster', 'harry')describe_pet('dog', 'willie') 第二次调用describe_pet()函数时,咱们向它传递了实参dog和willie。与第一次调用时一样,Python将实参dog关联到形参animal_type,并将实参willie关联到形参pet_name。 ...

December 22, 2020 · 2 min · jiezi

关于python3:Python-112Python手把手教程之用户输入input函数

作者 | 弗拉德起源 | 弗拉德(公众号:fulade_me) 函数input()函数input()让程序暂停运行,期待用户输出一些文本。获取用户输出后,Python将其存储在一个变量中,以不便你应用。例如,上面的程序让用户输出一些文本,再将这些文本出现给用户: message = input("Tell me something, and I will repeat it back to you: ")print(message) 函数input()承受一个参数:即要向用户显示的提醒或阐明,让用户晓得该如何做。在这个示例中,用户将看到提醒Tell me something, and I will repeat it back to you:。程序期待用户输出,并在用户按回车键后持续运行。输出存储在变量message中,接下来的print(message)将输出出现给用户: Tell me something, and I will repeat it back to you: This is Fulade!This is Fulade! 每当你应用函数input()时,都应指定清晰而易于明确的提醒,精确地指出你心愿用户提供什么样的信息——指出用户该输出任何信息的提醒都行,如下所示: name = input("Please enter your name: ")print("Hello, " + name + "!") 通过在提醒开端(这里是冒号前面)蕴含一个空格,可将提醒与用户输出离开,让用户分明地晓得其输出始于何处,如下所示: Please enter your name: FuladeHello, Fulade! int()函数应用函数input()时,Python将用户输出解读为字符串。请看上面让用户输出其年龄的解释器会话 ...

December 20, 2020 · 2 min · jiezi

关于python3:Python365标准库文档完整中文版-分享下载

书籍信息书名: Python3.6.5规范库文档(残缺中文版)豆瓣评分: 0分(0人评估)标签: Python3,电子书,pdf,编程下载地址https://590m.com/file/1876512...

December 10, 2020 · 1 min · jiezi

关于python3:Python365标准库文档完整中文版-分享下载

书籍信息书名: Python3.6.5规范库文档(残缺中文版)豆瓣评分: 0分(0人评估)标签: Python3,电子书,pdf,编程下载地址https://590m.com/file/1876512...

December 9, 2020 · 1 min · jiezi

关于python3:Django框架接收各类型ContentType数据的方法

application/x-www-form-urlencoded应用request.POST.get application/json应用request.body.decode('utf8') multipart/form-data应用request.POST.get

December 8, 2020 · 1 min · jiezi

关于python3:Python-18Python手把手教程之管理列表List

作者 | 弗拉德起源 | 弗拉德(公众号:fulade_me) 在上一节咱们学习了如何创立一个列表,在列表外面插入、删除数据等操作。本节咱们学习如何治理列表。 遍历列表在日常开发中,咱们常常须要遍历列表的所有元素,对每个元素执行雷同的操作。例如,在治理商场的蔬菜时候,须要给所有的蔬菜商品都打7折,并从新生成价格。当咱们须要对列表中的每个元素都执行雷同的操作时,可应用Python中的for循环。<!--more-->假如咱们有一个蔬菜名单,须要将其中每种蔬菜的名字都打印进去。为此,咱们能够采纳元素下标的形式别离获取名单中的每个名字,但这种做法会导致多个问题。例如,如果名单很长,将蕴含大量反复的代码。另外,每当名单的长度发生变化时,都必须批改代码。通过应用for循环,可让Python去解决这些问题。上面应用for循环来打印蔬菜单中的所有名字: vegetables = ['potato','tomato','onion']for name in vegetables: print(name)这行代码让Python从列表vegetables中取出一个名字,并将其存储在变量name中。最初,咱们让Python打印后面存储的变量name中的名字。这样,对于列表中的每个名字,Python都将反复执行print(name)代码。你能够这样解读这些代码:对于列表vegetables中的每种蔬菜,都将其名字打印进去。输入很简略,就是列表中所有蔬菜的姓名: potatotomatoonion详解遍历列表执行过程循环这种概念很重要,因为它是让计算机主动实现反复工作的常见形式之一。例如,在后面的代码中应用的简略循环中,Python将首先读取其中的第一行代码: for name in vegetables:这行代码让Python获取列表vegetables中的第一个值potato,并将其存储到变量name 中。接下来,Python读取下一行代码: print(name) 它让Python打印vegetables的值potato。因为该列表还蕴含其余值,Python返回到循环的第一行: for name in vegetables:Python获取列表中的下一个名字tomato,并将其存储到变量name中,再执行上面这行代码: print(name) Python再次打印变量vegetables的值tomato。接下来,Python再次执行整个循环,对列表中的最初一个值onion进行解决。至此,列表中没有其余的值了,因而Python接着执行程序的下一行代码。在这个示例中,for循环前面没有其余的代码,因而程序就此结束。 刚开始应用循环时须要牢记,对列表中的每个元素,都将执行循环指定的步骤,而不论列表蕴含多少个元素。如果列表蕴含一百万个元素,Python就反复执行指定的步骤一百万次,且通常速度十分快。另外,编写for循环时,对于用于存储列表中每个值的长期变量,可指定任何名称。比如说: for dog in dogs:for cat in cats:for item in item_list:这些写法都是能够的。 在For循环中做更多操作在for循环中,能够获取到每一个元素,可对每个元素执行任何操作。比如说咱们对每一种蔬菜都输入一句话。 vegetables = ['potato','tomato','onion']for name in vegetables: print(name + ' is good !')相比于前一个示例,惟一的不同是对于每种蔬菜,都打印了一条以其名字为低头的音讯。这个循环第一次迭代时,变量name的值为potato,因而Python打印的第一条音讯的低头为potato。第二次迭代时,音讯的低头为tomato,而第三次迭代时,低头为onion。上面的输入表明,对于列表中的每种蔬菜,都打印了一条个性化音讯: potato is good !tomato is good !onion is good !在for循环中,想蕴含多少行代码都能够。在代码行for name in vegetables前面,每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。因而,可对列表中的每个值执行任意次数的操作。上面再增加一行代码: vegetables = ['potato','tomato','onion']for name in vegetables: print(name + ' is good !') print(name + ' is a vegetable!')因为两条print语句都缩进了,因而它们都将针对列表中的每位蔬菜都执行一次。输入后果如下: ...

December 6, 2020 · 3 min · jiezi

关于python3:使用venv创建的虚拟环境失效了怎么办

问题之前将虚拟环境挪动了一下目录地位, 导致激活虚拟环境生效了。总是应用零碎默认的python3环境。 激活该虚拟环境, 而后应用echo $PATH发现打印的虚拟环境门路不是我配置的虚拟环境! 起因好奇怪!!我心愿的虚构门路应该是/root/IR_APP/app_server/env/bin为什么是/root/app_server/env/bin呢?起初一想,我之前用在/root/下建设了app_server软连贯ln -s /root/IR_APP/app_server /root/, 而后,应用了一段时间我感觉没必要应用这个软连贯,就把软连贯删掉了!原来如此, 我过后就创立虚拟环境的时候是通过进入软连贯对应的目录, 而后执行python3 -m venv env生成的, 导致对应生成的pip3文件, activate文件曾经依据我过后的门路生成的 文件内容如下:这当然不对了!!!所以咱们要依据最新的虚拟环境门路, 来从新批改一下这两个文件中对应的门路,上图中曾经用红框标出 须要批改pip3、activate文件vi /root/IR_APP/app_sever/env/pip3vi /root/IR_APP/app_sever/env/activate 批改为正确的文件门路, 而后从新激活虚拟环境, 发现虚拟环境是正确的了!

October 20, 2020 · 1 min · jiezi