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. linux命令--网络命令

    一.网络命令 1.配置ip 1.1 配置 IP 地址 IP 地址是计算机在互联网中唯一的地址编码.每台计算机如果需要接入网络和其他计算机进行数 据通信,就必须配置唯一的公网 IP 地址. 配置 IP ...

  2. ETCD:运行时重新配置设计

    原文地址:the runtime configuration design 运行时重新配置是分布式系统中最难,最容易出错的部分,尤其是在基于共识(像etcd)的系统中. 阅读并学习关于etcd的运行时 ...

  3. Flask 教程 第七章:错误处理

    本文翻译自The Flask Mega-Tutorial Part VII: Error Handling 这是Flask Mega-Tutorial系列的第七部分,我将告诉你如何在Flask应用中进 ...

  4. ios11下适配UItableView

    参考链接: https://www.cnblogs.com/spider-pei/p/7592906.html

  5. 43-安装 Docker Machine

    前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和销毁,相关容器会通过网络 ...

  6. Lniux系统-Ubantu安装搜狗输入法

    1.在官网下载搜狗输入法的安装包-https://pinyin.sogou.com/linux/?r=pinyin 2.终端打开,进行解压安装--sudo dpkg -i sogoupinyin_2. ...

  7. 读书笔记_python网络编程3_(1)

    0.前言 代码目录: https://github.com/brandon-rhodes/fopnp/tree/m/py3 0.1.网络实验环境:理解客户端与服务器是如何通过网络进行通信的 每台机器通 ...

  8. beego和bee安装问题解决

    如果使用go mod模式,直接安装bee时会报错: go: github.com/beego/bee imports github.com/beego/bee/cmd imports github.c ...

  9. acwing 116. 飞行员兄弟

    地址  https://www.acwing.com/problem/content/118/ “飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有16个把手的冰箱. 已知每个把手可以处于以下两种状态之 ...

  10. 移位寄存器及verilog代码

    通用移位寄存器 作用:后续补全 )( :] Data_out, output MSB_out, LSB_out, :] Data_in, input MSB_in, LSB_in, input s0, ...