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

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

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

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

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

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

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

*args示例:


输出:

**kwargs示例:


输出:

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

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

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

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


输出:


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

输出:


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

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

  1. 表达式

  2. for循环

  3. 过滤器

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

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

字符串连接

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


输出:

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

字符串替换

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

输出:

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

字符串格式

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


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

F-strings

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


4. Lambda函数是匿名的

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

输出:


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

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

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

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


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

补充建议

由于我主要和一群专注于特定问题的人讨论Python编程,这里,我希望得到适用于新手程序员的其他建议,以帮助他们更好地在开发者社区进行交流。

致Python初学者的六点建议的更多相关文章

  1. 致 Python 初学者们!

    ​ 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长.在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫.我非常理解你们所面临的处 ...

  2. 致Python初学者:Anaconda入门使用指南

    http://python.jobbole.com/87522/ Anaconda使用总结 pasting

  3. 致Python初学者,Python常用的基础函数你知道有哪些吗?

    Python基础函数: print()函数:打印字符串 raw_input()函数:从用户键盘捕获字符 len()函数:计算字符长度 format(12.3654,'6.2f'/'0.3%')函数:实 ...

  4. 写给已有编程经验的 Python 初学者的总结【转】

    当我开始学习Python的时候,有些事我希望我一早就知道.我花费了很多时间才学会这些东西.我想要把这些重点都编纂到一篇文章当中.这篇文章的目标读者,是刚刚开始学习Python语言的有经验的程序员,想要 ...

  5. 写给已有编程经验的 Python 初学者的总结

    当我开始学习Python的时候,有些事我希望我一早就知道.我花费了很多时间才学会这些东西.我想要把这些重点都编纂到一篇文章当中.这篇文章的目标读者,是刚刚开始学习Python语言的有经验的程序员,想要 ...

  6. 致Java初学者

    致Java初学者 精心整理资料点击获取 前言 ​ 能看到这篇文章的朋友,应该都或多或少的了解Java,也许你现在是个菜鸟还在成长的路上.再此期间你一定遇到了很多困惑疑虑,对未来的学习方向感到很迷惑.作 ...

  7. 给Python初学者的一些编程技巧

    展开这篇文章主要介绍了给Python初学者的一些编程技巧,皆是基于基础的一些编程习惯建议,需要的朋友可以参考下交换变量 x = 6y = 5 x, y = y, x print x>>&g ...

  8. python 初学者

    明确学习目标,不急于求成 当下是一个喧嚣.浮躁的时代.我们总是被生活中大量涌现的热点所吸引,几乎没有深度阅读和思考的时间和机会.我始终认为,学习是需要沉下心来慢慢钻研的,是长 期的:同时,学习不应该被 ...

  9. Python初学者之网络爬虫(二)

    声明:本文内容和涉及到的代码仅限于个人学习,任何人不得作为商业用途.转载请附上此文章地址 本篇文章Python初学者之网络爬虫的继续,最新代码已提交到https://github.com/octans ...

随机推荐

  1. C#关于MySQL中文乱码问题

      本人在写一个测试demo的时候,遇到一个问题就是添加的中文数据在数据库定义的明明是varchar类型,但是显示出来还是乱码,不过还是自己粗心导致的问题. 以下三种方式可以自查一下: 1. 首先检查 ...

  2. 用了 Lambda 之后,发现可以忘记设计模式了

    设计模式是过去的一些好的经验和套路的总结,但是好的语言特性可以让开发者不去考虑这些设计模式.面向对象常见的设计模式有策略模式.模板方法.观察者模式.责任链模式以及工厂模式,使用Lambda表达式(函数 ...

  3. jQuery-跨域问题的处理

    调用登录接口时,后端一般会在调用登录接口成功后,在response中设置cookie,之后前端的每次请求都会自动地在请求头上加上后端设置好的cookie,这对前端来说是透明的. 当登录接口与登录后调用 ...

  4. 软件文档写作-plantuml画用例图和时序图

    背景 当下的软件开发人员,不可避免的需要输出一些软件设计文档,作为一个软件工程专业毕业的工程师,最常用的设计工具就是UML,使用UML工具绘制一些软件相关的图,是必备技能,也是输出的技术文档中的重要组 ...

  5. 四面快手、终拿Offer,想告诉你的一些事情

    本篇面经来自于群里粉丝朋友的分享,希望对你有所帮助! 快手高开及以上职级面试 是没有笔试或者机试的,所以从第一轮开始就是直接面对面试官. 一轮 主要考察对Java基础的理解和深入程度. Spring ...

  6. 通过修改VAD属性破除锁页机制

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 技术学习来源:火哥(QQ:471194425) 注释:因为自己的知 ...

  7. Spring Boot 2 快速教程:WebFlux 集成 Thymeleaf(五)

    号外:为读者持续整理了几份最新教程,覆盖了 Spring Boot.Spring Cloud.微服务架构等PDF.获取方式:关注右侧公众号"泥瓦匠BYSocket",来领取吧! 摘 ...

  8. mysql 安装(Linux、Ubuntu)

    1.检查系统是否已经安装过mysql rpm -qa | grep mysql 若出现类似于以上的结果则表明系统已经安装过mysql,执行以下命令卸载 rpm -e --nodeps mysql-co ...

  9. go语言设计模式之Concurrency future

    future.go package future type SuccessFunc func(string) type FailFunc func(error) type ExecuteStringF ...

  10. 浅谈JS函数节流及应用场景

    说完防抖,下面我们讲讲节流,规矩就不说了,先上代码: <!DOCTYPE html> <html lang="en"> <head> <m ...