
波多野结衣在线视频
性欧美丰满熟妇xxxx性
在某些編程語言中,举例 C/C++、C#、PHP、Java、JavaScript 等等,do-while 是一種基本的循環結構。
它的中枢語義是:先執行一遍循環體代碼,然后執行一遍條件語句,若條件語句判斷為真,則繼續執行循環體代碼,并再次執行條件語句;直到條件語句判斷為假,則跳出循環結構。
经由圖如下(Java 示例):
// 性欧美丰满熟妇xxxx性打印小于 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 不提供這種語法結構呢,這種現狀的背后有何種設計考量成分呢?
在讲演這個問題之前性欧美丰满熟妇xxxx性,讓我們再仔細思考一下 do-while 語法不错解決什么問題,望望使用這種結構能帶來什么好處?
最顯而易見的好處是:do-while 語法保證了會先執行一遍循環體代碼。
它的使用場景也許未几,然则,跟平时的 while 循環大致 for 循環語法的“條件前置”思惟不同,它體現的是一種“條件后置”的編程邏輯,亦然一種戒指循環的常見样式。
二级缓存:读写缓存 readOnlyCacheMap,Guava Cache。相当于 Redis 主从架构中主节点,既可以进行读也可以进行写。
因此,对于 Linux 管理员来说,在日常工作中能够熟练在 Linux 系统下检查内存的运行状况就变得尤为重要!
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.6.0</version> </dependency> 第一种方式
首先配置一个Cache,通过构造者模式构建一个Cache对象,然后后续关于缓存的增删查都是基于这个cache对象。
一般来说性欧美丰满熟妇xxxx性,企业的云存储架构有三种:私有云、公有云和混合云,但不管企业选择了哪种,都可以享受到云存储带来的好处。它们包括以下内容:
今天,冰河给大家分享一篇大部分人都不会的技能,那就是我们自己动手写一款属于自己的Maven插件。好了,直接进入今天的主题吧。
但遗憾的是,我前两天逛牛客网,有个阿里面试官问:来,讲讲Redis的链表。
它們的關系似乎有點像 C/C++ 這些語言中的i++與++i操作的區別,在某些至极場合中,也許會更為高效。
除了這一特點,這種結構最大的應用場景其實是在 C/C++ 中至极的do {...} while (0) 用法。這在好多開源項认识源碼中都能找到蹤跡,举例 Linux、Redis 以及 CPython 解釋器,男男暴菊gay无套网站等等。
這内部的數字 0 示意布爾值 False,意味著循環只會執行一遍,然后就跳出。
這樣的寫法是不是很詭異?所謂“循環”,一般就意味著才智體會被反復執行屡次,然则,do {...} while (0) 卻偏巧只需要它執行一遍,這初看起來是有點过剩啊。
這種寫法主要用在宏函數的定義中性欧美丰满熟妇xxxx性,不错解決宏代碼塊的編譯問題,使代碼按照我們的意圖而合理分塊。
另外,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 離底層應用編程太遠了,就无须考慮匯編提醒的優化了,同時,它也不触及宏的使用。
至于“條件前置”和“條件后置”的區別性欧美丰满熟妇xxxx性,其實并沒有太大影響,况且,由于 Python 使用簡潔優雅的縮進加冒號語法來劃分代碼塊,導致直譯過來的 do-while 語法看起來會很怪異(正式,直譯的 while 的條件后沒有其它內容):
do: pass while False
想要引入新的語法特质,势必要恪守既定的風格習慣。其它語言的 do-while 結構直譯成 Python 的話,详情不对適。
事實上,在 2003 年時,有一個 PEP 提議給 Python 加上 do-while 語法支撑:
該 PEP 提議加多一個可選的 do 子句,支撑將 while 循環擴展成這樣子:
do: <setup code> while <condition>: <loop body>
這不是簡單地從其它語言翻譯成 Python,它的 while 語句后保留了 Python 的縮進用法,并不會变成直譯体式的突兀結果。
加上 while 循環自身已支撑的可選的 else 子句性欧美丰满熟妇xxxx性,因此,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 也持反對意見,他的原話是:
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貓公眾號。
Powered by 人妻出轨合集500篇最新 @2013-2022 RSS地图 HTML地图