Videos成熟少妇老熟妇一般就意味着范例体会被反复实施屡次
发布日期:2022-09-23 05:16    点击次数:171
久久精品无码专区免费Videos成熟少妇老熟妇

在某些编程谈话中,举例 C/C++、C#、PHP、Java、JavaScript 等等,do-while 是一种基本的轮回结构。

它的中枢语义是:先实施一遍轮回体代码,然后实施一遍要求语句,若要求语句判断为真,则不时实施轮回体代码,并再次实施要求语句;直到要求语句判断为假,则跳出轮回结构。

经由图如下(Java 示例):

// 打印小于 20 的数字 public class Test {    public static void main(String[] args){       int x = 10;       do {          System.out.print("value of x : " + x );          x++;          System.out.print("\n");       } while(x < 20);    } } 

Python 并不支撑 do-while 结构,“do”并不是一个灵验的重要字。

那么,为什么 Python 不提供这种语法结构呢,这种近况的背后有何种联想考量成分呢?

在回答这个问题之前,让咱们再仔细思考一下 do-while 语法不错贬责什么问题,望望使用这种结构能带来什么公正?

最不问可知的公正是:do-while 语法保证了会先实施一遍轮回体代码。

它的使用场景也许未几,然而,跟粗俗的 while 轮回或者 for 轮回语法的“要求前置”思惟不同,它体现的是一种“要求后置”的编程逻辑,亦然一种适度轮回的常见方式。

它们的关系似乎有点像 C/C++ 这些谈话中的i++与++i操作的区别,在某些极度形势中,也许会更为高效。

除了这一特质,这种结构最大的控制场景其实是在 C/C++ 中极度的do {...} while (0) 用法。这在好多开源项蓄意源码中都能找到痕迹,举例 Linux、Redis 以及 CPython 看法器,等等。

这内部的数字 0 默示布尔值 False,意味着轮回只会实施一遍,然后就跳出。

这么的写法是不是很诡异?所谓“轮回”,一般就意味着范例体会被反复实施屡次,然而,do {...} while (0) 却偏巧只需要它实施一遍,这初看起来是有点弥漫啊。

这种写法主要用在宏函数的界说中,不错贬责宏代码块的编译问题,使代码按照咱们的意图而合理分块。

另外,do {...} while (0) 勾通 break 使用, 字幕还不错完了很优雅的跳转适度成果。

鄙人面的示例中,轨范 1、4 和 5 要求必须实施,而轨范 2 取决于轨范 1 的实施收尾,轨范 3 则取决于轨范 2 的实施收尾。

do {   // 实施轨范 1    if (要求1失败) {     break;   }   // 实施轨范 2    if (要求2失败) {     break;   }   // 实施轨范 3    if (要求3失败) {     break;   } } while(0); // 实施轨范 4 // 实施轨范 5 

在这种场景中,咱们如实只需要按照规则实施一遍。do-while 结构很明显,幸免形成多层要求嵌套或者开荒诸多非凡标志的局面。

终末还有少许,在汇编层面,do-while 比 while 更接近汇编谈话的逻辑,不错从简使用提醒,在当年的低内存期间,算得上是一种优化写法。

分析完 do-while 的公正后,让咱们回到主题:Python 为什么不需要联想 do-while 轮回语法呢?

领先,Python 离底层控制编程太远了,就无谓探究汇编提醒的优化了,同期,欧美俄精品免费视频它也不触及宏的使用。

至于“要求前置”和“要求后置”的区别,其实并莫得太大影响,何况,由于 Python 使用简易优雅的缩进加冒号语法来诀别代码块,导致直译过来的 do-while 语法看起来会很歪邪(选藏,直译的 while 的要求后莫得其它本色):

do:     pass while False 

想要引入新的语法秉性,势必要谨守既定的立场习尚。其它谈话的 do-while 结构直译成 Python 的话,确定分歧适。

事实上,在 2003 年时,有一个 PEP 建议给 Python 加上 do-while 语法支撑:

PEP-315 Enhanced While Loop

该 PEP 建议增多一个可选的 do 子句,支撑将 while 轮回膨胀成这样式:

do:     <setup code> while <condition>:     <loop body> 

这不是苟简地从其它谈话翻译成 Python,它的 while 语句后保留了 Python 的缩进用法,并不会形成直译容貌的突兀收尾。

加上 while 轮回本人已支撑的可选的 else 子句,因此,while 美满的语法结构是这么的:

while_stmt : ["do" ":" suite]             "while" expression ":" suite             ["else" ":" suite] 

(PS.在本系列的下一篇著作,咱们将看法为什么 Python 要支撑 while-else 语法)

也即是说,在保持原 while 轮回语法不变的情况下,PEP-315 建议支撑在 while 前边使用一个可选的 do 子句。

do 子句只会实施一遍,当它内部出现 break 时,则跳出所有这个词这个词 do-while 轮回;当 do 子句中出现 continue 时,则跳出 do 子句,进到 while 的要求判断中。

有了 do 子句后,很容易就能完了 do {...} while (0) 的跳转适度成果。

然而,这个 PEP 遭到了一些中枢开发者的反对。

反对的根由是,不需要引入新的重要字和语法,仅使用现存语法就能很好地完了相同的功能:

while True:     <setup code>     if not <condition>:         break     <loop body> 

Python 之父 Guido van Rossum 也持反对意见,他的原话是:

Guido的回话

Please reject the PEP. More variations along these lines won't make the language more elegant or easier to learn. They'd just save a few hasty folks some typing while making others who have to read/maintain their code wonder what it means.

苟简翻译一下,这种 do-while 语法并不会使 Python 更优雅好用,反而会产生阅读/贵重代码的看法就业。

就个人的嗅觉而言,我也不称赞引入 PEP-315 那种可选的 do-while 语法,天然它比固定容貌的 do-while 结构更为天真和优雅少许。

终末略略回首一下,do-while 看成一种常见的轮回结构,在其它谈话中有所发达,它以致还发展出了do {...} while (0) 的典型用法,然而,do-while 好像贬责的几个问题要么在 Python 中并不存在(宏界说、汇编提醒),要么即是依然有更为合乎而低资本的完了(跳转适度)。

看完这篇著作,你是否还有其它补充的本色呢?

作家简介 ▽

豌豆花下猫,生于广东毕业于武大,现为苏漂范例员,有一些极客思维,也有一些人文情愫,有一些温度,还有一些立场。

本文转载自微信公众号「Python猫」,不错通过以下二维码柔顺。转载本文请策划Python猫公众号。