当前位置: 首页 > news >正文

提供网站建设出售免费站长统计工具

提供网站建设出售,免费站长统计工具,seo搜索引擎优化公司,千图主站与普通网站的区别内置函数是 Python 的一大特色#xff0c;用极简的语法实现很多常用的操作。 它们预先定义在内置命名空间中#xff0c;开箱即用#xff0c;所见即所得。Python 被公认是一种新手友好型的语言#xff0c;这种说法能够成立#xff0c;内置函数在其中起到了极关键的作用。 …内置函数是 Python 的一大特色用极简的语法实现很多常用的操作。 它们预先定义在内置命名空间中开箱即用所见即所得。Python 被公认是一种新手友好型的语言这种说法能够成立内置函数在其中起到了极关键的作用。 举个例子求字符串 x 的长度Python 的写法是 len(x) 而且这种写法对列表、元组和字典等对象也同样适用只需要传入对应的参数即可。len() 函数是共用的。 这是一种极简哲学的体现Simple is better than complex。 但是有些语言并不是这样例如在 Java 中字符串类有一个求长度的方法其它类也有自己的求长度的方法它们无法共用。每次使用时通过类或实例来调用。 同样是求字符串长度Python 的写法 saying Hello world! print(len(saying))# 结果12而在 Java 中写法可能如下简化起见 String saying Hello world!; System.out.println(saying.length());// 结果12Python 采用的是一种前缀表达式 而 Java 采用的则是后缀表达式 。 除了求长度Python 的某些内置函数也能在 Java 中找到对应的表达。例如数值型字符串 s 转化为整型数字Python 可以用 int(s) 函数而 Java 可以用 Integer.parseInt(s) 整型数字转化为字符串Python 可以用 str(i) 而 Java 也有 String.valueOf(i) 。 Python 的内置函数不与特定的类绑定它们是一级对象。而 Java 的“函数”则无法脱离类而存在它们只是附属品。 从直观角度来看Python 的表达似乎是更优的。但是它们并不具有可比性 因为这是两套语言系统各有独特的范畴背景并不能轻易地化约。 就好比是不能因为拉丁字母笔画简单就说它优于汉字因为在表意时字母表音文字是远逊于汉字表意文字的。同样的日本借用了汉字的偏旁部首而造出来的文字虽然更省笔墨但是也完全丧失了意蕴。 以此类比Python 的内置函数虽有简便之美但却丢失了某些表意功能。有些人在质疑 /抨击 Python 的时候也喜欢拿这点说事认为这是 Python 的设计缺陷。 这就引出本文最想讨论的一个问题来为什么 Python 要设计成 len(x) 这种前缀表达而不是 x.len() 这样的后缀表达呢 事实上后缀设计也是可行的以 Python 中列表的两个方法为例 mylist [2, 1, 3, 5, 4]mylist.sort() print(mylist) # [1, 2, 3, 4, 5]mylist.reverse() print(mylist) # [5, 4, 3, 2, 1]它们都是通过列表对象来调用并不是凭空从内置命名空间中拿来的。语义表达得也很清楚就是对 mylist 做排序和逆转。 恰恰那么巧它们还有两个同父异母的兄弟 sorted() 与 reversed()这俩是前缀表达型。 mylist [2, 1, 3, 5, 4]sort_list sorted(mylist) print(sort_list) # [1, 2, 3, 4, 5]reverse_list reversed(mylist) print(list(reverse_list)) # [4, 5, 3, 1, 2]不同的写法都在做同一件事不考虑它们的副作用。因此后缀语法并非不可行之所以不用那肯定是刻意的设计。 回到前面的问题为什么是 len(x) 而不是 x.len(x)这根源于 Python 的什么设计思想呢 Python 之父 Guido van Rossum 曾经解释过这个问题链接见文末有两个原因 对于某些操作前缀符比后缀更好读——前缀和中缀表示法在数学中有着悠久的历史其视觉效果有助于数学家思考问题。我们可以简单地把公式 x*(a b) 重写成 x*a x*b 但同样的事以原生的面向对象的方式实现就比较笨拙。当读到 len(x) 时我就 知道 这是在求某对象的长度。它告诉我了两点返回值是一个整数参数是某种容器。但当读到 x.len() 时我必须事先知道某种容器 x它实现了一个接口或者继承了一个拥有标准 len() 方法的类。我们经常会目睹到这种混乱一个类并没有实现映射 mapping 接口却拥有 get() 或 keys() 方法或者某些非文件对象却拥有一个 write() 方法。 解释完这两个原因之后Guido 还总结成一句话说“ I see len as a built-in operation ”。这已经不仅是在说 len() 更可读易懂了而完全是在拔高 len() 的地位。 这就好比说分数 ½ 中的横线是数学中的一个“内置”表达式并不需要再实现什么接口之类的它自身已经表明了“某数除以某数 ”的意思。不同类型的数整数、浮点数、有理数、无理数...共用同一个操作符不必为每类数据实现一种求分数的操作。 优雅易懂是 Python 奉行的设计哲学 len() 函数的前缀表达方式是最好的体现。 让我们来先看看切片的用法。可能最常见的用法就是“取前 n 位元素”或“从第 i 位索引起取后 n 位元素”(前一种用法实际上是 i 起始位的特殊用法)。如果这两种用法实现时可以不在表达式中出现难看的 1 或 -1那将会非常的优雅。 使用 0-based 的索引方式、半开区间切片和缺省匹配区间的话 Python 最终采用这样的方式上面两种情形的切片语法就变得非常漂亮a[:n] 和 a[i:in]前者是 a[0:n] 的缩略写法。 所以我们能说 len(x) 击败 x.len() 支撑它的是一种化繁为简、纯粹却深邃的设计思想。 面向对象的编程语言自发明时起就想模拟我们生活于其中的现实世界。可是什么类啊、接口啊、对象啊、以及它们的方法啊这些玩意的毒有时候蒙蔽了我们去看见世界本质的眼睛。 桌子类有桌子类的求长度方法椅子类有椅子类的求长度方法无穷无尽可现实真是如此么求长度的方法就不能是一种独立存在的对象么它之所以存在是因为有“对象”存在而不是因为有某个类才存在啊。 所以我想说len(x) 击败 x.len()这还体现了 Python 对世界本质的洞察 。 求某个对象的长度这种操作独立于对象之外而存在并不是该对象内部所有的一种属性或功能。从这个角度理解我们能够明白为什么 Python 要设计出内置函数 内置函数其实是对世界本质的一种捕捉。 这些见微知著的发现足够使我们爱上这门语言了。人生苦短我用 Python。 关联阅读 Guido 解释 len 的由来 https://mail.python.org/pipermail/python-3000/2006-November/004643.html Guido 解释 0 索引的由来 https://python-history.blogspot.com/2013/10/why-python-uses-0-based-indexing.html 本文章来源于网络如有侵权请留言
http://www.yutouwan.com/news/156582/

相关文章:

  • php完整网站开发案例网站移动端和手机端分开做
  • 扬州网站建设企业中国建设移动门户网站
  • 十大门户网站有哪些局域网网站建设软件
  • 网站建设与小程序开发熊掌号网页模板小偷
  • hexo框架做网站网络营销策划要素
  • 临沂谁会做网站湖南网页设计培训去哪里
  • 在国内的服务器上建设国外网站注册商标需要多长时间
  • 网站做的最好的网站有哪些外贸crm客户管理软件
  • 免费商用的网站模板无锡网站营销公司哪家好
  • 注册网站模板深圳自适应网站的公司
  • 苏州创元投资集团网站关于青岛的网页设计
  • 监控做斗鱼直播网站商业网站教程
  • 门户网站怎么建设电子商务网站建设与管理第四章答案
  • 北京检查站优化wordpress进管理员密码
  • 烟台微网站建设吉林省建设厅监理协会网站
  • 如何防止网站被采集免费服务器主机
  • 资源类网站怎么做应用软件开发专业
  • 官方网站开发方案推荐昆明做网站建设
  • 做worksheet的网站导航网站移动端流量占比
  • 做系统那个网站好做创新方法工作网站
  • 洛阳 网站建设北京企迪网站建设公司
  • 模版网站做支付功能西安网站建设 美科动
  • 网站建设价格明细表和网站预算施工单位招聘信息
  • 旅游网站wordpressh5框架做网站
  • 渭南哪家公司可以做网站在线花钱做网站
  • 前程无忧网广州网站建设类岗位wordpress时间表插件
  • 苏州著名网站建设wordpress视频教程 百度网盘
  • 东莞微客巴巴做网站j2ee博客网站开发
  • 东莞市住建局官网网站免费打开网站
  • 婚纱手机网站做网站的前端技术