首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

让你的 Python 代码优雅又地道

学Python最简单的方法是什么?推荐阅读:Python开发工程师成长魔法 译序 如果说优雅也有缺点的话,那就是你需要艰巨的工作才能得到它,需要良好的教育才能欣赏它。...in xrange(6): print i ** 2 xrange会返回一个迭代器,用来一次一个值地遍历一个范围。...第一个是你反复调用的函数,第二个是标记值。 译注:这个例子里不太能看出来方法二的优势,甚至觉得partial让代码可读性更差了。...有两种方法去理解else。传统的方法是把for看作if,当for后面的条件为False时执行else。其实条件为False时,就是for循环没被break出去,把所有循环都跑完的时候。...用namedtuple提高多个返回值的可读性 # 老的testmod返回值 doctest.testmod() # (0, 4) # 测试结果是好是坏?你看不出来,因为返回值不清晰。

1K100

Python 进阶指南(编程轻松进阶):六、编写 Python 风格的代码

当函数返回错误代码或None而不是引发异常时,可能会发生无声错误。这两句格言告诉我们,对于一个程序来说,让它快速失败和崩溃比选择漠视它要好。...使用enumerate()而不是range() 当循环遍历一个列表或其他序列时,一些程序员使用range()和len()函数来生成从0到序列长度的索引整数,但不包括序列长度。...使用with语句代替open()和close()函数 函数将返回一个包含读写文件方法的文件对象。完成后,file对象的close()方法会关闭该文件,使该文件可供其他程序读写。您可以单独使用这些函数。...这种模式经常发生,以至于字典中有一个get()方法,当字典中不存在某个键时,该方法允许您指定一个要返回的默认值。...如果是,方法调用返回'cats'键的值。如果没有,它将返回第二个参数0。使用get()方法为不存在的键指定默认值比使用if-else语句更短,可读性更好。

94860
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    编写高质量Python程序(一)引论

    使用 str.format() 格式化字符串,是最Pythonic的字符串格式化方法。...深入理解Pythonic的几个途径: 学习语言特性和库特性时,从官方文档入手, 仿照他们的书写规范。 Python的版本更新快,跟进前言,掌握新特性。...x = x + 1 # 这样的注释略近 x = x + 1 # 更好的注释位置 给外部可访问的函数或方法添加文档注释。描述其功能、参数、返回值及可能的异常等信息。...当一个函数调用另一个函数时,尽量将它们放在一起,一般调用者在上,被调用者在下。...函数名和左括号之间、序列索引操作时序列名和[]之间不需要空格,函数的参数=两侧不需要空格。 编写函数的4个原则 函数设计尽量短小,嵌套层次不宜过深。 函数声明需合理、简单、易于使用。

    59300

    如何写出优雅又地道的Python代码?

    in xrange(6): print i ** 2 xrange会返回一个迭代器,用来一次一个值地遍历一个范围。...第一个是你反复调用的函数,第二个是标记值。 译注:这个例子里不太能看出来方法二的优势,甚至觉得partial让代码可读性更差了。...方法二的优势在于iter的返回值是个迭代器,迭代器能用在各种地方,set,sorted,min,max,heapq,sum…… 在循环内识别多个退出点 def find(seq, target): found...有两种方法去理解else。传统的方法是把for看作if,当for后面的条件为False时执行else。其实条件为False时,就是for循环没被break出去,把所有循环都跑完的时候。...用namedtuple提高多个返回值的可读性 # 老的testmod返回值 doctest.testmod() # (0, 4) # 测试结果是好是坏?你看不出来,因为返回值不清晰。

    1.1K100

    探究 Web3.py 内部 JSON-RPC 请求处理全过程

    在这篇文章中,我们将看看从命令行到以太坊节点再返回这个过程,在经过 web3.py 时是什么样子的。我们将以查询一个账户余额为例,在代码中追踪其路径。...每个 Web3.py 模块都继承自一个Module类,这个类有一个retrieve_caller_fn方法,提供了有限却非常重要的一些功能,例如当调用get_balance方法时,输入会被格式化,构造成...而使用 web3.py 请求格式化程序就可以让用户很方便地传递一个整数值,如w3.eth.get_balance('0x123......接受的区块高度标识符的值包括"earliest"、"latest"、"pending"或特定的块编号。 在get_balance方法定义中,包含了一个block_id_munger....如果没有定义,那么这个特定的 munger 只是简单地设置一个默认的区块高度标识符。默认情况下,值为"latest",表示我们对帐户的当前余额感兴趣。

    81220

    让你的 Python 代码优雅又地道

    i in xrange(6):     print i ** 2 xrange会返回一个迭代器,用来一次一个值地遍历一个范围。...第一个是你反复调用的函数,第二个是标记值。 译注:这个例子里不太能看出来方法二的优势,甚至觉得partial让代码可读性更差了。...方法二的优势在于iter的返回值是个迭代器,迭代器能用在各种地方,set,sorted,min,max,heapq,sum…… 在循环内识别多个退出点 def find(seq, target):     ...有两种方法去理解else。传统的方法是把for看作if,当for后面的条件为False时执行else。其实条件为False时,就是for循环没被break出去,把所有循环都跑完的时候。...用namedtuple提高多个返回值的可读性 # 老的testmod返回值 doctest.testmod() # (0, 4) # 测试结果是好是坏?你看不出来,因为返回值不清晰。

    79620

    让你的 Python 代码优雅又地道

    xrange(6): print i ** 2 xrange会返回一个迭代器,用来一次一个值地遍历一个范围。...第一个是你反复调用的函数,第二个是标记值。 译注:这个例子里不太能看出来方法二的优势,甚至觉得partial让代码可读性更差了。...方法二的优势在于iter的返回值是个迭代器,迭代器能用在各种地方,set,sorted,min,max,heapq,sum…… 在循环内识别多个退出点 def find(seq, target): found...有两种方法去理解else。传统的方法是把for看作if,当for后面的条件为False时执行else。其实条件为False时,就是for循环没被break出去,把所有循环都跑完的时候。...用namedtuple提高多个返回值的可读性 # 老的testmod返回值 doctest.testmod() # (0, 4) # 测试结果是好是坏?你看不出来,因为返回值不清晰。

    64500

    让你的 Python 代码优雅又地道

    在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic。...会返回一个迭代器,用来一次一个值地遍历一个范围。...第一个是你反复调用的函数,第二个是标记值。 译注:这个例子里不太能看出来方法二的优势,甚至觉得partial让代码可读性更差了。...有两种方法去理解else。传统的方法是把for看作if,当for后面的条件为False时执行else。其实条件为False时,就是for循环没被break出去,把所有循环都跑完的时候。...用namedtuple提高多个返回值的可读性 # 老的testmod返回值doctest.testmod()# (0, 4)# 测试结果是好是坏?你看不出来,因为返回值不清晰。

    2.1K50

    手把手教你学会Python函数式编程

    在执行这些指令时,可以改变某些状态。例如,假设你最初将A设置为5,然后更改A的值。这时在变量内部值的意义上,你改变了A的状态。 在函数式范式中,你不用告诉计算机做什么而是告诉他这个东西是什么。...魔术方法就像是一个API,可以帮助你的对象变得更加Pythonic。...您需要实现2个魔术方法才能使对象成为可迭代的: 第一个魔术方法“\_\_iter\_\_”(注:这里是双下划线)返回迭代对象,这通常在循环开始时使用。”\_\_next\_\_“返回下一个对象。...高阶函数 高阶函数可以将函数作为参数并返回函数。一个非常简单的例子如下: 第二个返回函数的例子: 开头我说过纯函数式编程语言没有变量。更高阶的函数使这变得更容易。...一等公民被定义为具有以下一个或多个特征: 在运行时创建 在数据结构中分配变量或元素 作为函数的参数传递 作为函数的结果返回 Python中的所有函数都可以用作高阶函数。

    1.1K21

    python中的map和filter避坑指南

    我简化了一点,但是map和filter在调用list或tuple时返回一个迭代器。list (res)穷举迭代器,res变为空。...◆ 在用 map and filter的时候如何避免入坑 要解决这些问题,我们必须 返回一个值,而不是迭代器 消除惰性或确保可变性不会影响返回值。 修复第一个问题就像返回一个列表或元组一样简单。...如果我们想要确保返回值不受可变性的影响,并试图有惰性,我们需要对输入可迭代对象做一个深度复制。 这是方法之一。...filter实现中的deepcopy意味着我的实现不是完全懒惰的。这种实现的唯一优点是当过滤函数很昂贵时。 ◆ 使用即时计算 我认为最实用的解决方案是即时地计算map和filter。...在这种情况下,我们可以定义一个lazymap和lazyfilter。在我看来,让默认情况变得迫切,并强迫用户在需要时显式地使用惰性版本更好。这将减少新手使用map和filter时的意外。

    54910

    pythonic风格代码有什么好处?附12个代码实例

    因为是习惯,不是江湖规则,所以你大可不必遵守pythonic,但如果你想成为python高手,最好是养成这个习惯。 对比其他语言我们能直观看出pythonic风格的特点,比如写一个简单循环。...「4、使用with方法处理文件」 with语句提供一个有效的机制,让代码更简练,同时在异常产生时,清理工作更简单。...「5、使用map函数」 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的可迭代对象。...当使用挂行缩进时,应该考虑到第一行不应该有参数,以及使用缩进以区分自己是续行。...具有单一功能 包含文档注释 返回一个值 函数和类应该用两个空行隔开 尽量使用内置函数 「补充」 最后说下PEP8规范,PEP8是Python的编码规范,其目的在于提高代码的可读性。

    59010

    如何优雅的写好Pythonic代码?

    lambda可以返回一个可以调用的函数对象,会使得代码更为简洁。...13、函数返回多个值 在Java语言中,当函数需要返回多个值时,通常的做法是生成一个Response对象,然后将要返回的值写入对象内部。...而Python不需要这样做,可以直接返回多个值: def f(): error_code = 0 error_desc = "成功" return error_code, error_desc...使用的时候也会非常简单: code, desc = f() print code, desc 14、使用*运算符 *运算符和** 运算符完美的解决了将元组参数、字典参数进行 unpack,从而简化了函数定义的形式...解决这个问题的其中一个思路是按照标题11提供的词频统计的方法,先统计词频,然后遍历字典,找出具有最大词频的数字。有没有更简洁的方式?

    1.1K20

    编写高效简洁代码的那些招式1

    Pythonic 风格,既不是非常严密的规范,也不是编译器强加给开发者的规则。而是大家在使用python 语言协同工作的工程中逐渐形成的习惯。Python 崇尚的就是直观,简洁而又易读的代码。...其实规则很简单,说穿不值一文钱: 1)当stride参数为正值(positive)时,表明切片操作从左至右(即正向)访问源序列s的元素,此时,若begin和end参数有缺省,则Python解释器默认将其设置为...,利用它可以同时获得索引和值 enumerate多用于在for循环中得到计数 例如对于一个seq,得到: (, seq[0]), (1, seq[1]), (2, seq[2]) 3 第3招:使用zip...扩展贴士 zip()函数是Python的内建函数,(与序列有关的内建函数有:sorted() reversed()、enumerate()、zip()),其中sorted()和zip()返回一个序列 (...列表)对象,reversed()、enumerate()返回一个迭代器(类似序列) zip()参数可以接受任何类型的序列,同时也可以有两个以上的参数;当传入 参数的长度不同时,zip能自动以最短序列长度为准进行截取

    67160

    如何激怒一位Python爱好者?

    Python社区发展几十年,已经沉淀出一套更加科学规范的代码书写法则,该踩的坑都帮你踩过了,按这个来基本不会出什么错。 下面举几个不那么pythonic的代码案例,虽然不会出错,但十分不建议这样写。...1、函数、变量命名无意义、不规范 很多人图省事,使用a、aa、bbb这样无意义的变量名、函数名,这样在编程中会大大降低代码的可读性,也影响代码质量。...在Python中大家可以把一个复杂的功能,用多个函数去分解,一个函数代码行数最好不要超过十行,如果确实需要很多代码,那就进行分解,多写几个函数来实现。...比如以下的函数,用来实现csv文件的读取、行去重、空值剔除、保存等功能。...风格的规范,需要大家注意,建议按照约定俗成的方法去写,第一原则是可读性强,可读性强,可读性强。

    13910

    学习 Python 来做一些神奇好玩的事情吧

    但还遗留了以下几个问题: 在计算协方差和特征向量的方法上,书上使用的是一种被作者称为compact trick的技巧,以及奇异值分解(SVD),这些都是什么东西呢? 如何把PCA运用在多张图片上?...起初是基于二值图像提出的,后来扩展到灰度图像。二值图像就是:每个像素的值只能是0或1,1代表描绘图像的点,0代表背景。...,一般为方形,以小矩阵的形式表示,但它的元素的值只能是0或1,它代表的是一个集合,这个集合罩在原图像上,可以跟原图像的形状进行集合运算。...数据分析 [翻译]使用Python一步一步地来进行数据分析 你学习Python时能犯的最简单的错误之一就是同时去尝试学习过多的库。...欧拉函数(Euler' totient function ) gamma函数的求导会出现所谓的欧拉函数(phi),在一篇论文中我需要对好几个欧拉函数求值,结果不能理解,立即去google,发现了一个开源的

    1.9K00

    几段代码,测测你是 Python 菜鸟还是老鸟

    所谓 pythonic,我觉得包含两方面:一是代码的风格符合 Python 的特点,能合理使用 Python 的“语法糖”;二是代码简洁优美,稳定性高,可读性好,便于维护和修改。...比如来实现对一个列表中元素的遍历访问,我见过很多次有人这么写: for i in range(len(lst)): print(lst[i]) 这样的同学很可能是之前有过 C/C++ 或 Java...Python 中类似的例子还有不少,来举几个: 1、交换两个变量的值,普通写法: temp = aa = bb = temp pythonic 写法: a, b = b, a 2、类似的解包(unpacking...)用法还可以实现多个返回值的函数。...于是你不得不增加更多的判断。 pythonic 写法: value = dct.get(key, 0) 改用 get 方法,不存在时会得到 None,或者指定的默认值(这里是 0)。

    73080

    对比几段代码,看看你是 Python 菜鸟还是老鸟(另有福利)

    所谓 pythonic,我觉得包含两方面:一是代码的风格符合 Python 的特点,能合理使用 Python 的“语法糖”;二是代码简洁优美,稳定性高,可读性好,便于维护和修改。...比如来实现对一个列表中元素的遍历访问,我见过很多次有人这么写: for i in range(len(lst)): print(lst[i]) 这样的同学很可能是之前有过 C/C++ 或 Java...Python 中类似的例子还有不少,来举几个: 1、交换两个变量的值,普通写法: temp = a a = b b = temp pythonic 写法: a, b = b, a 2、类似的解包(unpacking...)用法还可以实现多个返回值的函数。...于是你不得不增加更多的判断。 pythonic 写法: value = dct.get(key, 0) 改用 get 方法,不存在时会得到 None,或者指定的默认值(这里是 0)。

    71640

    来看几段代码,测测你是 Python 菜鸟还是老鸟

    所谓 pythonic,我觉得包含两方面:一是代码的风格符合 Python 的特点,能合理使用 Python 的“语法糖”;二是代码简洁优美,稳定性高,可读性好,便于维护和修改。...比如来实现对一个列表中元素的遍历访问,我见过很多次有人这么写: for i in range(len(lst)): print(lst[i]) 这样的同学很可能是之前有过 C/C++ 或 Java...Python 中类似的例子还有不少,来举几个: 1、交换两个变量的值,普通写法: temp = a a = b b = temp pythonic 写法: a, b = b, a 2、类似的解包(unpacking...)用法还可以实现多个返回值的函数。...于是你不得不增加更多的判断。 pythonic 写法: value = dct.get(key, 0) 改用 get 方法,不存在时会得到 None,或者指定的默认值(这里是 0)。

    55450

    一文让你彻底搞懂`__str__`和`__repr__`?

    根据Python官方文档定义: __str__:通过str(object)以及内置函数format()和print()调用以生成一个对象的“非正式”或格式良好的字符串表示。返回值必须是字符串对象。...__repr__:是由repr()内置函数调用,用来输出一个对象的“官方”字符串表示。返回值必须是字符串对象,此方法通常被用于调试。内置类型 object 所定义的默认实现会调用 object....=4,当x为整数类型时,调用str()和repr()的返回结果是一样, 而当y为字符串类型时,repr(y)的结果就是“正式”的字符串表示,而str(y)的结果则是“非正式”的。...在 str() 函数被使用,或是在用 print 函数打印一个对象的时候才被调用的,并且它返回的字符串对终端用户更友好。 3....区别: __str__ 的目标是可读的,__str__()并不预期返回一个有效的 Python 表达式,但可以使用更方便或更准确的描述信息。

    1.5K30
    领券