致Python初学者的六点建议

25 篇文章 0 订阅
6 篇文章 0 订阅

Python是最容易学习的编程语言之一,其语法近似英语。通常,初学者只会遇到一些小麻烦,如强制缩进、在函数中使用self等。

然而,当开始阅读、复制和编辑他人代码时,麻烦就接踵而至了。

这里,我将解释五个关于Python的概念,这些概念将有助于初学者修改他人代码。这些建议通过总结Python开发新手在研讨会上遇到的问题以及分析开发者社区的在线讨论编写而成的。这些开发者社区主要关注API的使用,图像处理以及RICOH THETA相机的元数据(文本)处理等。其中,较为典型的开发者具有Java、C、JavaScript或bash的中级编程经验,但在Python方面仍是新手。

他们可以自己编写Python代码来解决问题,然而在阅读他人代码时往往会遇到问题。

以下是帮助大家更好地理解Python的五点建议。

1. *args和**kwargs是函数参数

如果您查看Python模块或者这些模块的相关文档,您可能会看到*args和**kwargs。它们看起来像C语言里的指针,实际上并非如此。*args只是函数的参数列表。**kwargs是关键字参数的字典。

*args示例:

致Python初学者的六点建议

 

输出:

致Python初学者的六点建议

 

**kwargs示例:

致Python初学者的六点建议

 

输出:

致Python初学者的六点建议

 

**args和**kwargs示例的代码位于文件args_example.py,可在此处获取。

2.列表解析是使用循环时的一种快捷方式

列表解析是返回列表的一种简便方法。在代码中,for循环写作for number in args。

当循环中的表达式为num **2时,返回的列表值将为参数的平方。

致Python初学者的六点建议

 

输出:

致Python初学者的六点建议

 

您可以在列表解析的末尾添加过滤器以过滤输出结果。例如,仅对偶数进行平方,可以采用如下过滤方式:

致Python初学者的六点建议

 

输出:

致Python初学者的六点建议

 

列表解析并未对for循环添加任何特殊的功能,采用这种方式是因为它更为简短,并且在习惯语法后会使代码更易于阅读。不过有些开发者会过度使用列表解析,反而使代码更难理解。这一点需要注意,复杂的列表解析和多个循环嵌套并非最佳实践。

如果您刚开始学习Python,并遇到一个复杂的for循环,可以在网上搜索列表解析并查看如下三个组件的语法:

1. 表达式

2. for循环

3. 过滤器

3. F-strings可以替代.format()

Python非常适合处理字符串,至少提供了3到4种将变量插入字符串的方法。这些方法大多数都较为笨重,但是有一种非常酷。

字符串连接

之前您也许写过如下代码:

致Python初学者的六点建议

 

输出:

致Python初学者的六点建议

 

这种写法难以阅读,并且容易出现错误。即使存在语法高亮,仍会出现缺少空格的情况。

字符串替换

字符串替换可以帮助减少错误。

致Python初学者的六点建议

 

输出:

致Python初学者的六点建议

 

使用字符串替换的示例位于文件format_example.py,可在此处获取。

字符串格式

一个更好的方式是使用.format()方法,如下所示:

致Python初学者的六点建议

 

致Python初学者的六点建议

 

尽管.format在字符串连接方面有很大地提升,但处理上仍然很笨重。

F-strings

要使用f-strings,首先需要将Python升级至3.6或3.7版本。

致Python初学者的六点建议

 

致Python初学者的六点建议

 

4. Lambda函数是匿名的

Python lambda函数是一种快捷方式。尽管可以将其指定为某变量,类似于普通函数,但通常情况下使用如下语法写作匿名函数。

致Python初学者的六点建议

 

输出:

致Python初学者的六点建议

 

如同Python中的多数快捷方式,lambda函数并不会带来新的功能。尽管如此,使用此语法可以减少代码的复杂程度。

5. 使用装饰器来扩展Python函数

使用装饰器时,通常会在一个函数上方标注@decorator_name。

致Python初学者的六点建议

 

装饰器可以任意命名,例如@panda。在使用装饰器时,您无需了解如何创建自己的装饰器以便使用,可以参考Django的http装饰器的相关文档。

致Python初学者的六点建议

 

import这行代码允许您使用预先构建好的装饰器。在这种情况下,您只需了解@require_http_methods为您创建的函数my_view()添加的额外功能即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 8 引入了一种新的抽象概念 Stream),它使得对数据的处理变得更加简便和高效。Stream 是一种来自数据源的元素队列并支持聚合操作。 Stream API 借助于lambda表达式,极大的提高了Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用fork/join并行方式来拆分任务和加速处理过程。 Stream 的特性可以归纳为: - 不是数据结构 - 没有存储元素 - 支持延迟计算 - 支持并行处理 Stream 的操作分为中间操作和终止操作。中间操作会返回一个新的 Stream,我们可以对这个新的 Stream 进行下一步的操作。终止操作则会返回一个最终的结果。 Stream 操作可以分为以下几种: - Intermediate(中间)操作:一个可以后面跟随零个或多个Intermediate操作。其目的主要是打开,做出某种程度的数据映射/过滤,然后返回一个新的,交给下一个操作使用。这类操作都是惰性化的(lazy),就是说,仅仅调用到这类方法,并没有真正开始的遍历。 - Terminal(终止)操作:一个只能有一个 Terminal 操作,当这个操作执行后,就被使用“光”了,无法再被操作。所以这必定是的最后一个操作。Terminal 操作的执行,才会真正开始的遍历,并且会生成一个结果,或者一个 side effect。 Stream API 提供了大量的方法,可以用来完成各种不同的操作,如过滤、映射、筛选、查找、归约等等。这些方法可以分为以下几类: - 转换操作:map、flatMap、filter、distinct、sorted、peek、limit、skip - 聚合操作:forEach、reduce、collect - 匹配操作:allMatch、anyMatch、noneMatch - 查找操作:findFirst、findAny - 统计操作:count、min、max、average、sum Stream API 的使用可以大大简化代码,增加可读性和可维护性。同时,由于它的并行特性,可以有效地提升程序的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值