首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 编程 | 连载 13 - Python 流程控制

一、Python 逻辑语句 逻辑与 if 语句 逻辑判断与逻辑语句: 对于一件事情正确与否判断 根据判断结果不同事情 对于条件满足判断语句,就是条件语句 一个逻辑语句是由条件语句和业务语句组合而成...else 关键字 else 就是对于不满足 if 条件时候执行另一个代码块入口 if bool_result: do else: else do # else 代码块,当满足if条件时执行...'num值小于等于5') 条件语句总结 条件语句中满足一个条件后,将推出当前条件语句 每条语句中有且只有一个if语句,可以有0个或者多个elif语句,可以有0个或者1个else语句 每个条件语句中一个条件语句必须是...for循环中变量,可以 for 循环外使用 for 循环中两个变量。...,直接进入下一次循环,continue 关键字环中使用 while bool_result: if bool_result: contineu break 关键字可以使循环停止

81940

C语言初阶——循环语句(while,for,do while

生活中有些事情需要我们重复、反复去做,这时我们就可以说我们循环去做这件事。...不少实际问题中有许多具有规律性重复操作,因此程序中就需要重复执行某些语句。一组被重复执行语句称之为循环体,能否继续重复,取决于循环终止条件。...由于我们发现生活中很多实际例子是:同一件事情我们需要完成很多次。 那我们怎么呢? C语言中给我们引入了: while 语句,可以实现循环。...现在我们就可以很好解释上一个代码结果了: 总结: continuewhile环中作用就是: continue是用于终止本次循环,也就是本次循环中continue后边代码不会再执行...3. break和continuefor循环中作用 for循环中可以出现break和continue,他们意义和在while环中是一样

12610
您找到你想要的搜索结果了吗?
是的
没有找到

本命2016年,2017年继续前行

还记得? 还记得小巫2015年结束时候写过一篇文章么,猴年马月,猴年来了,马月呢?...你还记得你这一年做了些什么说了两件,一件事跳槽去了鹅厂,第二件事是拿到了驾照,还有什么事?...谈谈一些感悟 坚持一件事一件事情如果失败了可能有很多原因,但如果成功原因可能就是因为你坚持下去了,其实技术也一样,你学习一门语言需要经历一段时间周期,你掌握一门技术也需时间周期,如果你浅尝辄止不坚持学习下去...,努力去打磨技术,比如研究过更加深入源码,能够自己去分析问题,然后从这些问题延伸到其他领域上面,他们坚持做好一件事,就能够把这样一件事思路复制到其他技术上,所以他们也能够某些领域也能够更快更好上手...所以笔者在这一年一个感悟就是,既然选择一件事,就坚持干下去,练就那些能够助你更好成长内功,不只学那些表面的知识,相信你以后会在技术这一条路越走越顺。

25720

《代码整洁之道》笔记(1-3章节)

另外,面对复杂业务场景时,需要将需求给低代码平台讲清楚,讲透彻,这件事可能不太容易。而且, 将需求明确到机器可以执行细节程度,就是编程要做事。...多个局部变量一起创建,一起使用,或者属于一个抽象层面,就可以抽取。 多个条件分支时,分支可抽取为方法。如果干一件事可以考虑用多态+工厂类。 不要添加没用语境 只要能表达清楚,越短越好。...书中给限制是不超过20行,P3C要求不超过80行。 函数缩进层级不应超过两层,超过时可选择封装。 只一件事 单一职责原则,使之改变只有一个原因。...编写函数是为了把较大概念拆分为另一抽象层上一系列步骤。 判断函数是否只做了一件事,就是看还能再拆不。 每个函数一个抽象层级 确保函数只一件事,函数中语句就要在同意抽象层级上。...自顶向下读代码:向下规则 下一步骤函数,这样就一层一层往里深入,往下执行。 switch语句 写出只一件事switch语句难,因为switch语句天生就是件事

37900

深入 Node.js 事件循环架构

处理器可以一次处理一件事,也可以一次并行地处理多个任务(multitasking)。...这意味着一个进程中无法直接获取另一个进程内存中数据,为了使两个进程进行通信,我们必须要另外一些工作,称之为 inter-process communication( IPC ,进程间通信),它依赖于...如果我们一个线程中托管一个全局变量,那么我们可以直接在另一个线程中访问它,因为它们都保持对同一个内存引用,这种方式非常高效。...但是我们假设在一个线程中有一个函数,它写入一个 foo 变量,另一个线程则从中读取,这将会发生什么? 答案无从得知,因为我们无法确定读和写先后顺序。这也正是多线程编程难点所在。...但是如果你执行一些异步任务,它不会总是主线程中执行:根据你使用方法,事件循环可以将它路由到 APIs 中一个,并且它可以另一个线程中执行。

1.7K20

读《代码整洁之道》

不要使用单个字母来变量名,时间一长,自己都不清楚自己当初命名是什么意思。小方法体,如循环中计数器除外。...通常来说如果函数只一件事,自然就不会很长。对函数长度极限是横竖都不要超过一屏。 函数应该只一件事,判断函数时候只一件事,看函数中是否很能够拆分,如果可以,就果断进行重构。...当函数中有Swicth语句时候,就不可避免要做多件事情了,而且函数会随着Switch条件增加会越来越长。...当函数只一件事时候,取名就容易多了。还有比较重要一点,风格要保持一致。 一个函数中不要去调用职责之外另外函数,尤其是底层函数,否则给高层调用带来风险。...这类注释一些项目中很普遍,而且有时会被严格要求写,但书中强调现在源代码都会有源代码工具来进行管理,修改记录在源代码工具中有保存,这种日志注释应该全部删除。

85820

ES6中调用优化

粗略来说,如果当一个函数所做最后一件事是调用了另一个函数,而后者不需要向调用者返回任何东西时;以及由此可知,在这种情况下没有调用者额外信息需要被储存在调用栈(call stack)上,函数间调用更像一种...栈现在看起来是这样:共有两个调用帧,一个是位于底部全局作用域,另一个是其上方 f()。 Step 3. id() B行中被调用。...id()返回了数值3,或者可以说它为f()返回了这个值;因为通过行C,该值被传递给了f调用者。 不难发现,行B函数调用就是一个调用。这样调用可以栈0增长情况下完成。...检查函数调用是否尾部发生 我们已经了解到尾调用可以被更有效率执行,那么如何认定一个调用呢? 首先,调用函数方式是无所谓。...3.1 递归循环 调用优化使得递归循环中不增长调用栈成为可能。下面举两个例子。

89820

MIT 6.S081 教材第七章内容 -- 调度 -- 中

另一个原因是两个函数都需要访问UART硬件,通常来说让两个线程并发访问memory mapped register是错误行为。...但是因为pipe中只有一个字节并且总是有一个进程能够先被唤醒,哦,这正好提醒了有关sleep忘记了一些非常关键事情。sleep函数中最后一件事情就是重新获取condition lock。...我们不能让这里任何一件事情发生。 另一个问题是,即使一个线程调用了exit系统调用,并且是自己决定要退出。它仍然持有了运行代码所需要一些资源,例如它栈,以及它在进程表单中位置。...Unix中一个进程可以另一个进程ID传递给kill系统调用,并让另一个进程停止运行。...我们希望完成所有的文件系统操作,完成整个系统调用,之后再检查p->killed并退出。 为什么一个进程允许kill另一个进程?这样一个进程不是能杀掉所有其他进程

17310

让你写出更加优秀代码!

贾言 代码评审歪诗 窗外风雪再大 也有陪伴着你 全文字数:2000字 阅读时间:5分钟 贾言 代码评审歪诗 验幻空越重 命频异长 依轮线日简 接偶正分壮 架构师说, 用20个字描述代码评审内容...-勋 不要在循环中调用服务,不要在循环中数据库等跨网络操作; 频-品 写每一个方法时都要知道这个方法调用频率,一天多少,一分多少,一秒多少,峰值可能达到多少,调用频率高一定要考虑性能指标,考虑是否会打垮数据库...,是否会击穿缓存; 异-宜 异常处理是程序员最基本素质,不要处处捕获异常,对于捕获了只写日志,没有任何处理catch要问一问自己,这样吃掉异常,是否合理; 下面是一个反例, 导出文件controller...日-日 打印日志和设定合理日志级别,如有必要要添加if条件限定是否打印日志日志中使用JSON序列化,生成长字符串toString()都要做if限定打印,否则配置日志级别没达到,也会做大量字符串拼接...而不要实现一个类,然后各个方法中都根据业务类型if else或更复杂各种判断。 典型示例做法1: ? 典型示例做法2: ?

5.4K20

【数据结构】链表相关OJ题 (万字详解)

时间复杂度:O(N) 空间复杂度:O(1) 思路2 将原链表中val小于x节点插到一个新链表中,将val大于x节点插到另一个新链表中,最后将两个新链表链接起来。...时间复杂度:O(N) 空间复杂度:O(1) 易错点 1、我们可以两个新链表设计为带头链表,这样可以免去插入第一个元素时判断步骤,避免犯错; 2、我们需要将用于链接val大于x链表结点next...思路分析 思路 找到链表中间节点,将链表中间及以后节点反转,然后用两个指针,一个指向链表开头,另一个指向反转部分开头,遍历观察二者val是否相等。...(最大情况是链表结点刚好链接到链表头节点,此情况二者头结点处相遇);当链表环比较小时,快指针可能在环中走了很多圈(最小情况是链表结点连接到尾结点,此情况二者结点处相遇);...思路分析 思路1 结论法:定义两个指针 – fast 和 slow,快指针一次走两步,慢指针一次走一步,首先求出二者环中相遇点;然后一个指针从链表头开始走,另一个指针从相遇点开始走,最终二者会在入环点相遇

27000

Java并发编程,Conditionawait和signal等待通知机制

我们知道锁机制实现上,AQS内部维护了一个同步队列,如果是独占式锁的话, 所有获取锁失败线程插入到同步队列, 同样,Condition内部也是使用同样方式,内部维护了一个等待队列, 所有调用...另外注意到ConditionObject中有两个成员变量: /** First node of condition queue....= node; return node; } 这里通过插法将当前线程封装Node插入到等待队列中, 同时可以看出等待队列是一个不带头结点链式队列,之前我们学习AQS时知道同步队列是一个带头结点链式队列..., 那么要想退出这个await方法就要先退出这个while循环,退出while循环出口有2个: break退出while循环 while环中逻辑判断为false 第1种情况条件是当前等待线程被中断后会走到...线程awaitThread先通过lock.lock()方法获取锁成功后调用了condition.await方法进入等待队列, 而另一个线程signalThread通过lock.lock()方法获取锁成功后调用了

1.1K30

【初阶数据结构】——链表常见面试题剖析

还是利用双指针,分别从两个链表一个元素开始,两两比较大小,取小一个插到新链表(相等取任何一个可以),因为最终要返回还是升序链表。...我们来画一下图: 那大家再来思考一下,这些操作我们肯定要放在循环中进行,那循环结束条件应该是什么? ,是不是只要有其中一个链表遍历结束,整个循环就应该结束了。 循环结束就完了吗?...并不是,因为还有另一个链表没有处理完,循环结束之后我们只需要把另一个链表剩余元素链接到尾插新链表后面就行了。 另外,还需要⚠注意什么呢?...这道题给出测试用例有这样情况,就是给两个链表中可能会有空链表 有空链表怎么处理? 是不是好办啊? 直接返回另一个链表就行了。...好,光说大家可能不太好理解,还是老规矩哈,把图给大家好好画一下: 就用题目给例子: 我们现在要完成这样一个翻转。 怎么呢?

12410

Java中谈递归--递归和垃圾回收比较(转载)

不是故意在JAVA中谈递归,因为JAVA中谈递归真的是要绕好几个弯,只是确实只有JAVA学得比较好,虽然确实C是在学校学过还考了90+,真学得没自学JAVA好 不过也是因为要绕几个弯,所以才会有有意思东西可写...,另外还有发现把递归如果跟JAVA中GC比对一下,也颇有一些妙处(发现还没有人特地比较过) (不过后来边写边整理思路,写出来又是另一个样子了) 一、首先我们讲讲递归 递归本质是,某个方法中调用了自身...,写成这样不会有任何优化效果,该爆栈和帧都还会爆 具体不一样在哪里 前面说了,递归本质是某个方法调用了自身,递归这种形式就要求:某个方法调用自身这件事,一定是该方法最后一件事(所以当有需要返回值时候会是...,不仅不用释放上一个,连下一个都不用开,效率非常高(有人实验,这个比递推比迭代都要效率高) 为什么写成递归形式,编译器就能优化了?...那为什么呢,看到有的说法是:JAVA编写组不实现递归优化是觉得麻烦又没有太大必要,就懒得实现了(原话是:日程表上,但是非常靠后),官方建议是不使用递归,而是使用while循环,迭代,递推 转载

1.3K50

精进第3章——即刻行动 最有效,是即刻行动

写文字时候就一路往下写,对于需要插图地方,只是记下位置标记和特征要点,待到一整章写完后,才返回去加上插图 集中处理同质性工作 比如你现在有两个任务要做,一个是写一个word文档,另一个是做一个PPT...,常规做法是先把其中一个做完再做另一个,或者其中一个一部分再换到另一个。...描述和评价这件事结果时用了哪些指标?这些指标是否需要改进? 结果需要哪些改进?如何改进? 事件进度合适?是太快了还是太慢了?是什么因素导致了这样结果?...可以从这几个方面进行 及时反思,梳理反应链与意外现象三个关键点 小结 精彩提炼 当一件事,你不知道怎么时候,就直接开始吧。...这件事情是如何开始、如何发展,其中有没有什么黑白性事件,最后怎样结束? 梳理中,你可以得到一些什么样启示? 在行动过程中,是否有什么意外发生?这个意外对你有什么启发?

64410

机器人如何拒绝人类命令(视频)

语言学理论中有一个这样问题:如果有人让你去做一件事,你是否能超出单纯语义范围、理解到他们想要到底是什么?这取决于所谓“适切条件”。...知识:是否知道怎么去做任务X? 2. 能力:物理层面上是否有能力去做任务X?一般情况下有这个能力? 3. 目标优先级和计时:是否可以马上去做任务X? 4....“规范性”是一个复杂表述方法,指的是机器人不应该做它知道是危险事情,或者更准确地说,如果机器人不知道这是危险,那么这件事可以。...这是另一个场景,其中机器人被下令向一堵人类知道不坚固墙壁那里走。 人类:你有名字? 机器人:是的,名字是Shafer。 人类:需要你向右转。 机器人:好。...机器人:抱歉,不能这么,因为前面有障碍物。(不动) 人类:你可以关闭障碍物侦测? 机器人:可以。但你没有权限这么

92170

Python 进阶指南(编程轻松进阶):五、发现代码异味

例如,一个函数内部但是一个return语句之后代码,一个具有总是False条件if语句块中代码,或者一个从来没有被调用函数中代码都是僵尸代码。...使用 debug 可能看起来比简单地插入一个print()调用要慢,但是从长远来看,它可以节省您时间。 日志文件可以记录你程序大量信息,这样你就可以比较它一次运行和以前运行。...这个代码片段支持者认为,因为函数应该总是只一件事,而错误处理是一件事,所以我们应该把这个函数分成两个函数。...这个新函数名字很别扭,因为我们称它为意图删除文件,而不是处理删除文件错误。 你函数应该小而简单,但这并不意味着它们应该总是局限于一件事”(无论你如何定义)。...你函数中使用一个全局变量实际上都变成了函数另一个输入,就像参数一样。更多参数意味着更多复杂性,这反过来意味着更高错误可能性。

93930

如何避免自己写代码成为别人眼中一坨屎

一、注释 不要给不好名字加注释,一个名字比好注释更重要; 不要“拐杖注释”,好代码 > 坏代码 + 好注释; 文件/类级别使用全局注释来解释所有部分如何工作; 一定要给常量加注释; 团队统一定义标记...: 不恰当信息; 废弃注释; 冗余注释; 糟糕注释; 注释掉代码; 唯一真正好注释是你想办法不去写注释: 不要有规式注释,比如setter/getter注释; 不要添加日志式注释,比如修改时间等信息...100行那么长,20行封顶最好: if else while等控制语句其中代码块应该只有一行,也就是一个函数调用语句; 函数锁进层次不应该多于两层; 一个函数只一件事一个函数不应该能抽象出另外一个函数...TDD; 七、代码结构 代码行长度控制100-120个字符; 可能用大多数为200行,最长500行单个文件构造出色系统; 关系密切代码应该相互靠近: 变量声明应该靠近其使用位置; 若某个函数调用了另外一个...; 尽可能减少类和方法数量; 以上规则按重要程度排列; 无论是设计系统或者单独模块,别忘了使用大概可工作最简单方案; 整洁代码只提供一种而非多种一件事途径,他只有尽量少依赖。

7202118

最全java多线程总结2--如何进行线程同步

为什么要有同步   我们来看一个简单例子,有两个数 num1,num2,现在用 10 个线程来这样一件事--每次从 num1 中减去一个随机数 a,加到 num2 上。...{ public static void main(String[] args) { Bank bank = new Bank(); //创建10个线程,不停一个账号资金转移到另一个账号上...条件对象   通常我们会遇到这样问题,当一个线程获取锁后,发现需要满足某个条件才能继续往后执行,这就需要一个条件对象来管理已经获取锁但是却不能做有用工作线程。   ...while环中判断是否满足,如果不满足条件,调用await方法进入阻塞状态,同时放弃锁。...注意:调用signalAll不会立即激活一个等待线程,仅仅只是接触阻塞状态,以便这些线程可以通过竞争获取锁,继续进行 while 判断。   还有一个方法signal随机解除一个线程阻塞状态。

29120

兄dei,你被代码死循环坑了吗?

1.3 flag线程间不可见 有时候我们代码需要一直件事情,直到某个条件达到时,有个状态告诉它,要终止任务了,它就会自动退出。...假如,你需要在一个方法中调用另一个打了@Transactional注解方法,这时如果直接方法调用,另外一个方法由于无法走代理事务会失效。...其他解决方案,可以看看我另一篇文章《让人头痛大事务问题到底要如何解决?》。 那么问题来了,如果成员变量不是通过@Autowired注入,而是直接new出来可以?...for循环中会出现两个TreeNode节点Parent引用都是对方,从而构成死循环情况。...最常规做法是接口中同步把日志写入表中,保存逻辑跟业务逻辑可能在同一个事务中,但为了性能考虑,避免大事务产生,一般建议不放在同一个事务。

2K20
领券