Pythonic】的更多相关文章

Pythonic其实是个模糊的含义,没有确定的解释.网上也没有过多关于Pythonic的说明,我个人的理解是更加Python,更符合Python的行为习惯.本文主要是说明一些Python的惯用法和小技巧,其实与上一篇<编码规范>有异曲同工之妙,都是为了增加代码可读性,但Pythonic可能还会从性能的角度进行考虑. 首先是两个不得不说的Python的特性List Comprehension和Generator Expression,非常精简的语法,很大程度上取代了冗长for循环. 1. 列表解…
ui的设计,控件id的记录是一件比较繁琐的事情. 此外,赋值和读取数据也比较繁琐,非常不pythonic. 有没有神马办法优雅一点呢?life is short. 鉴于控件有name属性,通过dir(Entry_obj)得知,存放在一个_name的属性里面.于是就有了以下代码: Entry(frame,name='your_id1').grid(row=x1,column=y1) Entry(frame,name='your_id2').grid(row=x2,column=y2) ... En…
注意:dct代表字典,key代表键值 1.判断字典中某个键是否存在 实现 dct.has_key(key) #False 更Pythonic方法 key in dct #False 2.获取字典中的值 你想对key的value加1,首先你要判断key是否存在,不存在给一个默认值 实现 if key not in dct: dct[key] = 0 dct[key] += 1 更Pythonic方法 dct[key] = dct.get(key, 0) + 1 如果key存在则返回对应的value…
以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻; 以模块复用为荣 , 以复制粘贴为耻; 以多态应用为荣 , 以分支判断为耻; 以Pythonic为荣 , 以冗余拖沓为耻; 以总结分享为荣 , 以跪求其解为耻;…
pythonic如果翻译成中文的话就是很python.很+名词结构的用法在中国不少. 以下为了简略,我们用P表示pythonic的写法,NP表示non-pythonic的写法,当然此P-NP非彼P-NP. 为什么要追求pythonic? 相比于NP,P的写法简练,明确,优雅,绝大部分时候执行效率高,代码越少也就越不容易出错.我认为好的程序员在写代码时,应该追求代码的正确性,简洁性和可读性,这恰恰就是pythonic的精神所在. 对于具有其他编程语言经验而初涉Python的程序员(比如我自己)来说…
为了更规范的写代码,变得更专业 分号 1 不在句末添加分号,不用分号在一行写两句代码 行长度 2 每行不超过80字符,python会隐式行连接圆括号,中括号,花括号中的字符,如多参数方法调用可以写为多行. foo_bar(self, width, height, color='black', design=None, x='foo', emphasis=None, highlight=0) if (width == 0 and height == 0 and color == 'red' and…
python可以写的非常简洁,通过使用内置的map,reduce,filter,lambda方法,非常具有文艺范. 举个例子,例如 def fromIpToNum(ipAddr):    return reduce(lambda x,y:(x<<8)+y,map(int,ipAddr.split('.'))) 从一个IP地址,转化成为一个数字.(12.23.23.45=> 202839853). 这个方法使用了四个方法,从最里边开始int,map,lambda(匿名),reduce.非常…
原题: https://segmentfault.com/q/1010000005904259 问题: 倘若存在 L=[ [1,2,3],[4,5,6],[7,8,9]] 这样的列表,如何把合并成[1,2,3,4,5,6,7,8,9]呢? 最直接的方法(By:松林) ret = [] for x in L: ret += x print(x) 使用标准库中的itertools模块(By:dokelung) from itertools import chain lst = list(chain(…
http://blog.csdn.net/gzlaiyonghao/article/details/2762251 作者:Martijn Faassen 译者:赖勇浩(http://blog.csdn.net/lanphaday) 原文地址:http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0 注:Martijn 是 Zope 领域的专家,他为 Zope 系列产品做了许多开发工作,也开发了 lxml 等多个开源产品.你可以在这里了解一下…
原文地址:http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0 注:Martijn 是 Zope 领域的专家,他为 Zope 系列产品做了许多开发工作,也开发了 lxml 等多个开源产品.你可以在这里了解一下他的信息http://www.zope.org/Members/faassen.这篇文章写于 2005 年,虽然有少部分内容(主要是例子)看起来已经有些过时,但即便是在今天,它的中心思想依然有极高的指导意义. 这是几个月前在 Eur…
上篇博文<为Pythonic论坛添加一个“专题”功能>,在模板的层次上对发帖进行了限制.也就是根据用户是否拥有权限来决定是否显示发帖框. 但是自从这么“投机取巧”的写完模板后,整夜辗转反侧,不知道用户能否通过其它节点在不能够发帖的节点本地添加发帖框实现发帖. 最终,我还是觉得不靠谱…需要在服务端也进行下验证.简单的处理,终于填了坑 翻看\apps\topic\views.py文件找到def topic_create(request, node_slug):函数定义. if node.categ…
之前使用Pythonic搭建的论坛people界面显示有点问题 第一个用户不显示,问了下作者,作者回复说这个Link只有~/people/而没有用户名 就点到为止了. 按说我使用syncdb同步时注册的管理员应该显示在最前面的.但是却不是这样.前段时间也挺忙的,就先放一放了. ------ 今天继续顺着url读源码.people的view还有people_list模板还是挺易读的,似乎没有什么问题. 于是想看看数据库中的用户是什么样子的. 这CMD的显示我也是醉了…上网找了一圈,发现个Navic…
一道测试工程师面试题(来自搜狗): 自己写了解法: # -*- coding: utf-8 -*- import re #从整体log中过滤出有用的部分,缩小搜索范围 def filter_log(the_log): r = r'[CRIUS]' return re.findall(r, the_log) #统计每个目标字符出现过的最少次数,即最少出现过几次完整log def check_count(target,target_log): target_dic = {} for one in t…
何为pythonic? pythonic如果翻译成中文的话就是很python.很+名词结构的用法在中国不少,比如:很娘,很国足,很CCTV等等. 我的理解为,很+名词表达了一种特殊和强调的意味.所以很python可以理解为:只有python能做到的,区别于其他语言的写法,其实就是python的惯用和特有写法. 举个例子: 很python的写法: a,b = b,a 不python的写法: temp = a a = b b = temp 上面的例子通过了元组的pack和unpack完成了对a,b的…
本文是Raymond Hettinger在2013年美国PyCon演讲的笔记(视频, 幻灯片). 示例代码和引用的语录都来自Raymond的演讲.这是我按我的理解整理出来的,希望你们理解起来跟我一样顺畅! 译序 如果说优雅也有缺点的话,那就是你需要艰巨的工作才能得到它,需要良好的教育才能欣赏它. -- Edsger Wybe Dijkstra 在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic.一般说地道(idiomatic…
记录平时学习中接触到的和网上看到的一些pythonic的方法,只为日后查询时候方便. 1.列表推导式: seq_list=[1,2,3,4,5] new_list=[i *2 for i in seq_list if i %2==0 ] 2.生成器表达式(减少内存占用) seq_list=(i*2 for i in range(0,1000) ) 3.强大的内置函数zip,可遍历两个可迭代对象.在将行转换为列时特别有用.(但似乎zip函数在处理大的数据时速度会比较慢) list_1 = [1,2…
Python作为一种多范式语言,它的很多语言特性都能从其他语言上找到参照,但是Python依然形成了一套自己的“Python 风格”(Pythonic).这种Pythonic风格完全体现在 Python 的数据模型上,而数据模型中的元接口(指那些名字以两个下划线开头,以两个下划线结尾的特殊方法,例如 __getitem__),就是编写地道的Python代码的秘密所在.这种基于元接口实现的设计模式,也叫鸭子类型(duck typing). 鸭子类型指的是对象的类型无关紧要,只要实现了特定的接口即可…
Python开发者用Pythonic这个形容词来描述具有特定风格的代码.这种风格是大家在使用Python语言进行编程并相互协作的过程中逐渐形成的习惯.那么,如何以改风格完成常见的Python编程工作呢?本节将会回答这个问题. 第一条:确认自己所用的Python版本 第二条:遵循PEP8风格指南 第三条:了解bytes.str与unicode的区别 第四条:用辅助函数来取代复杂的表达式 第五条:了解切割序列的方法 第六条:在单次切片操作内,不要同时指定start.end和stride 第七条:用列…
Python 之禅之中有这样几句话: 优美胜于丑陋(Python 以编写优美的代码为目标) 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似) 简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现) 复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁) 扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套) 间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题) 可读性很重要(优美的代码是可读的) 我想这应该可以大致解释一下 Pythonic 了…
(1)要避免劣化代码 1)避免只用大小写来区分不同的对象.如a是一个数值类型变量,A是String类型,虽在编码过程容易区分二者的含义,但这样做毫无益处,它不会给其他阅读代码的人带来多少便利. 2)避免使用容易引起混淆的名称.如重复使用已经存在于上下文的变量来表示不同的类型:误用了内建名称来表示其他含义的名称而使之在当前命名空间被屏蔽:没有使用新建的数据类型的情况下使用类似于element.list.dict等作为变量名:使用字母小写o容易与1 混淆,1与字母L的小写.因此推荐变量名与要解决的问…
对于Pythonic的概念,众人都有自己的看法,但大家心中都认同一个更具体的指南,即Tim Peters的<The Zen of Python>.在这一篇充满禅意的诗篇中,有几点非常深入人心: 美胜丑,显胜隐,简胜杂,杂胜乱,平胜陡,疏胜密. 找打一个简单问题的一个方法,最好是唯一的方法. 难以解释的实现,源自不好的主意:如有好的主意,它的实现肯定易于解释. Beautiful is better than ugly. Explicit is better than implicit. Sim…
所谓Pythonic,就是极具Python特色的Python代码(明显区别于其它语言的写法的代码) 总结如下: 两变量的内容交换 Python:a,b = b,a 非Python:t=a;a=b;b=t; 判断数值是否在两个数值之间 Python:1 < a <100 非Python:1 < a && a < 100 文件的处理 Python: with open(path, mode) as fp: pass 非Python: try{ $fp = open(pa…
变量交换 >>> a, b = b, a 循环遍历区间元素 >>>for i in range(10): ... print (i) 返回的是生成器对象,生成器比列表更加节省内存 带索引位置的循环遍历 >>>colors = ['red', 'green', 'blue', 'yellow'] >>>for i, color in enumerate(colors): ... print (i, 'mapping', color) 字…
前言 在学习Python的过程中,肯定听说过这么一个词:Pythonic,它的意思是让你的代码很Python! 一.列表生成式 前面有一节专门讲解了Python的列表,其灵活的使用方法一定让你陶醉其中.当然,也也知道怎么初始化一个列表,比如现在要生成 [0,1,2,3,4] 这样一个列表: In [1]: list(range(5)) Out[1]: [0, 1, 2, 3, 4] 现在要将此列表的每个元素平方,要怎么办呢? 方法一: In [9]: a Out[9]: [0, 1, 2, 3,…
Potential Pythonic Pitfalls Monday, 11 May 2015 Table of Contents Not Knowing the Python Version Obsessing Over One-Liners Initializing a set the Wrong Way Misunderstanding the GIL Using Old Style Classes Iterating the Wrong Way Using Mutable Default…
http://wuzhiwei.net/be_pythonic/ 何为pythonic? pythonic如果翻译成中文的话就是很python.很+名词结构的用法在中国不少,比如:很娘,很国足,很CCTV等等. 我的理解为,很+名词表达了一种特殊和强调的意味.所以很python可以理解为:只有python能做到的,区别于其他语言的写法,其实就是python的惯用和特有写法. 置换两个变量的值. 很python的写法:   1 a,b = b,a 不python的写法:   1 2 3 temp…
[本文出自天外归云的博客园] 冒泡排序:就是每次排序选最大元素到数组a的最后,排 len(a)-1 次.也就是两个for循环: 1. 外层是待排数组长度的循环,从待排数组长度(初始待排数组长度等于数组长度)到0的循环: 2. 内层是相邻元素比较的循环,从0到待排数组长度的循环. 快速排序:就是一个递归函数A,把数组中头元素做key,比key小的(包括相等的)放key左边,比key大的放key右边.再对左边和右边的子数组分别调用递归函数A.这是快排. 代码如下: import random def…
[本文出自天外归云的博客园] 链表是由节点构成的,一个指针代表一个方向,如果一个构成链表的节点都只包含一个指针,那么这个链表就是单向链表. 单向链表中的节点不光有代表方向的指针变量,也有值变量.所以我们定义链表,就是要定义链表中的节点,对链表的操作最后也就是对节点的操作. 这些包含数据的节点们在一种指定的结构下连接起来,成为了一种数据结构——单向链表.以上是我对单向链表的理解. 以下是我用python3对单向链表这种数据结构的一种实现,其中我用到了生成器来完成逆转单向链表这一操作,非常pytho…
字典对象在Python中作为最常用的数据结构之一,和数字.字符串.列表.元组并列为5大基本数据结构,字典中的元素通过键来存取,而非像列表一样通过偏移存取.笔者总结了字典的一些常用Pyhonic用法,这是字典的Pythonic用法的上篇 0. 使用 in/not in 检查 key 是否存在于字典 判断某个 key 是否存在于字典中时,一般初学者想到的方法是,先以列表的形式把字典所有键返回,再判断该key是否存在于键列表中: dictionary = {} keys = dictionary.ke…
Pythonic就是以Python的方式写出简洁优美的代码. 用Python独有的语法写Python语言. 知乎:https://www.zhihu.com/question/20244565 某博客:https://www.cnblogs.com/dadadechengzi/p/7063687.html 语法糖意指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法. 其往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读.不过并没有给语言添加什么新东西. 语法糖就是为…