电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python不支持 i ++ 語法的原因解析

瀏覽:47日期:2022-07-16 15:53:22

簡要討論為什么它不提供++作為運算符

Python不支持 i ++ 語法的原因解析

正常情況下,當有人問起++原因而不是Python中的運算符時,這一行引起了我的注意。

如果您想知道最初的原因,則必須翻閱舊的Python郵件列表,或詢問那里的某個人(例如Guido)〜通過stackoverflow

這迫使我像上圖一樣思考。 真的我必須問Guido原因嗎? 好的,也許但是在那之前,我應該嘗試一下,這促使我寫這篇文章

在C / C ++ / Java之類的語言中,對整數變量進行自增或自減運算是標準的,可以分為前綴運算(++ i和?i)和后綴運算(i ++和i?), 每個都有細微的差異和不同的目的。

當這些語言的用戶進入Python時,他們可能會想知道為什么它不提供++或-操作。

盡管前綴++ i可能出現在Python中,但它不是' ++'自增運算符。

在這種情況下,它只是兩個' +'(正號)的疊加,而根本不支持' ++'后綴! (SyntaxError:語法無效)。

那么,為什么Python不支持i ++增量語法?

首先,Python當然可以實現自我增強的效果,即以i + = 1或i = i + 1的形式編寫,這在其他語言中也很常見。

盡管Python在底部使用了不同的魔術方法(add ()和__iadd __())來完成計算,但是表面上的效果卻完全相同。

因此,我們的問題可以轉換為:為什么以上兩種書寫風格會比i ++更好,并成為Python的最終選擇?

1. Python整數是不可變的類型

當我們定義i = 1000時,不同的語言會區別對待它們。

諸如C(寫入int = 1000)的語言將適用于內存空間,并將其``綁定’’到固定名稱i上,同時寫入變量值1000。

這里,i的地址和類型是固定的,而值是可變的。

Python(寫i = 1000)也將申請內存空間,但是它將'綁定'到數字1000,即該1000的地址和類型是不可變的

因此,當我們使我'自我增加'(i = i + 1)時,兩者都被區別對待。

諸如C之類的語言首先找到存儲在i地址中的值,然后將其加1。 操作后,新值將替換舊值 Python的操作過程是將i指向的數字加1,然后,將結果綁定到新應用的存儲空間,然后將名稱標簽'粘貼'到新數字。

打個比方:C中的i就像是一個寄生了1000的主機,而Python中的1000就像了一個寄生了i的主機。 所以我在C語言中與Python中的1000相同

綜上所述,讓我們看一下i ++,不難發現:

在C之類的語言中,i ++可以表示i的數值屬性的增加,既不會打開新的內存空間,也不會創建新的一等公民 在像Python這樣的語言中,如果i ++是對其name屬性的操作,則這沒有任何意義。 如果將其理解為對數字本體的一種操作,那么情況將會很復雜。

它將生成一個新的一等公民1001,因此需要為其分配一個內存地址。 如果此時占用的地址為1000,則將涉及舊對象的回收,并且與1000的原始引用關系也將受到影響。 因此只能為1001打開新的內存空間

如果Python支持i ++,則其操作過程將比C ++復雜,并且其含義不再是'將數字增加1'(遞增),而應是'創建新數字'。

Python理論上可以實現i ++操作,但是它必須重新定義'增量運算符',這將導致具有其他語言經驗的人誤解。

最好讓每個人都直接寫i + = 1或i = i + 1。

2. Python具有可迭代的對象

諸如C / C ++之類的語言已將i ++設計為主要是為了方便使用三部分的for循環結構。

Python不支持 i ++ 語法的原因解析

這種程序與數字本身的自增過程有關。 數字的增加與程序主體的執行有關。

Python中沒有這種結構,它提供了一種更優雅的方法:

Python不支持 i ++ 語法的原因解析

這里反映了不同的思維方式。

它關心值范圍內的迭代遍歷。 它不在乎或不需要人為添加數字。

Python中的可迭代對象/迭代器/生成器提供了很好的迭代/遍歷用法,并且可以完全替代i ++。

例如,Python可以使用enumerate()與上述示例中的值同時遍歷下標和特定值。

Python不支持 i ++ 語法的原因解析

再舉一個例子,對于字典遍歷,Python提供了keys(),values(),item()和其他遍歷方法,這些方法非常易于使用:

Python不支持 i ++ 語法的原因解析

不僅在Python中很少使用i + = 1或i = i + 1,而且迭代對象的可用性使操作值范圍變得容易,并且很少有人要求對其進行累加。

因此,回到我們最初的問題,這兩種'自增'方法并不比i ++好多少,僅僅是因為它們是通用操作

這就是為什么無需引入新的運算符,Python會繼續提供基礎支持的原因。 真正的贏家是各種各樣的可迭代對象!

摘要

Python不支持遞增運算符,原因如下:

因為它的整數是一類不變的一等公民,所以如果要支持增量運算(++),將會帶來歧義

含糊不清的原因:在本故事中

主要是因為它具有更合適的實現,即迭代對象,它對遍歷操作具有良好的支持。

到此這篇關于Python不支持 i ++ 語法的原因解析的文章就介紹到這了,更多相關Python不支持 i ++ 語法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 北京百度网站优化|北京网站建设公司-百谷网络科技 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 圆窗水平仪|伊莉莎冈特elesa+ganter | 宁夏档案密集柜,智能密集柜,电动手摇密集柜-盛隆柜业宁夏档案密集柜厂家 | 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 超声波乳化机-超声波分散机|仪-超声波萃取仪-超声波均质机-精浩机械|首页 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 菲希尔X射线测厚仪-菲希尔库伦法测厚仪-无锡骏展仪器有限责任公司 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 在线PH计-氧化锆分析仪-在线浊度仪-在线溶氧仪- 无锡朝达 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | 杭州顺源过滤机械有限公司官网-压滤机_板框压滤机_厢式隔膜压滤机厂家 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 线粒体膜电位荧光探针-细胞膜-标记二抗-上海复申生物科技有限公司 | 垃圾压缩设备_垃圾处理设备_智能移动式垃圾压缩设备--山东明莱环保设备有限公司 | 蜗轮丝杆升降机-螺旋升降机-丝杠升降机厂家-润驰传动 | 酒瓶_酒杯_玻璃瓶生产厂家_徐州明政玻璃制品有限公司 | 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 高中学习网-高考生信息学习必备平台 | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 首页_中夏易经起名网| 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 耐火浇注料-喷涂料-浇注料生产厂家_郑州市元领耐火材料有限公司 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 水成膜泡沫灭火剂_氟蛋白泡沫液_河南新乡骏华消防科技厂家 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 深圳天际源广告-形象堆头,企业文化墙,喷绘,门头招牌设计制作专家 | 体检车_移动CT车_CT检查车_CT车_深圳市艾克瑞电气有限公司移动CT体检车厂家-深圳市艾克瑞电气有限公司 |