Pyhton 3.6学习--基础4:Lambda表达式,文档字符串,功能注释,Intermezzo:编码风格
Lambda表达式
可以使用lambda
关键字创建小的匿名函数。此函数返回其两个参数的总和:。Lambda函数可以在需要函数对象的任何地方使用。它们在语法上限于单个表达式。从语义上讲,它们只是正常函数定义的语法糖。与嵌套函数定义一样,lambda函数可以引用包含范围的变量:
lambda a, b: a+b
[code]>>> def make_incrementor(n): ... return lambda x: x + n ... >>> f = make_incrementor(42) >>> f(0) 42 >>> f(1) 43
上面的示例使用lambda表达式返回一个函数。另一个用途是传递一个小函数作为参数:
[code]>>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')] >>> pairs.sort(key=lambda pair: pair[1]) >>> pairs [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
文档字符串
以下是有关文档字符串的内容和格式的一些约定。
第一行应始终是对象目的的简短概述。为简洁起见,它不应显式声明对象的名称或类型,因为这些可通过其他方式获得(除非名称恰好是描述函数操作的动词)。该行应以大写字母开头,以句点结尾。
如果文档字符串中有更多行,则第二行应为空白,从而在视觉上将摘要与其余描述分开。以下行应该是一个或多个段落,描述对象的调用约定,其副作用等。
Python解析器不会从Python中删除多行字符串文字的缩进,因此处理文档的工具必须在需要时删除缩进。这是使用以下约定完成的。字符串第一行之后的第一个非空行 确定整个文档字符串的缩进量。(我们不能使用第一行,因为它通常与字符串的开头引号相邻,因此它的缩进在字符串文字中不明显。)然后从字符串的所有行的开头剥离与该缩进“等效”的空格。 。缩进的行不应该出现,但是如果它们出现,则应该剥离它们的所有前导空格。应在扩展标签后测试空白的等效性(通常为8个空格)。
以下是多行文档字符串的示例:
[code]>>> def my_function(): ... """Do nothing, but document it. ... ... No, really, it doesn't do anything. ... """ ... pass ... >>> print(my_function.__doc__) Do nothing, but document it. No, really, it doesn't do anything.
功能注释
注释
__annotations__作为字典存储在函数的属性中,对函数的任何其他部分没有影响。参数注释由参数名称后面的冒号定义,后跟一个表达式,用于评估注释的值。返回注释由
->参数列表和表示
def语句结尾的冒号之间的文字,后跟表达式定义。以下示例具有位置参数,关键字参数和注释的返回值:
[code]>>> def f(ham: str, eggs: str = 'eggs') -> str: ... print("Annotations:", f.__annotations__) ... print("Arguments:", ham, eggs) ... return ham + ' and ' + eggs ... >>> f('spam') Annotations: {'ham': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>} Arguments: spam eggs 'spam and eggs'
Intermezzo:编码风格
现在您要编写更长,更复杂的Python,现在是讨论编码风格的好时机。大多数语言都可以用不同的风格编写(或更简洁,格式化); 有些比其他人更具可读性。让其他人轻松阅读您的代码总是一个好主意,采用一种好的编码风格对此有很大帮助。
对于Python, PEP 8已成为大多数项目坚持的风格指南; 它促进了一种非常易读且令人赏心悦目的编码风格。每个Python开发人员都应该在某个时候阅读它; 以下是为您提取的最重要的要点:
-
使用4空格缩进,没有标签。
4个空格是小压痕(允许更大的嵌套深度)和大压痕(更容易阅读)之间的良好折衷。标签引入混淆,最好省略。
-
换行,使其不超过79个字符。
这有助于用户使用小型显示器,并且可以在较大的显示器上并排放置多个代码文件。
-
使用空行分隔函数和类,以及函数内的较大代码块。
-
如果可能,将评论放在他们自己的一行上。
-
使用docstrings。
-
在操作符周围和逗号后面使用空格,但不能直接在包围结构中使用:。
a = f(1, 2) + g(3, 4)
-
一致地命名您的类和函数; 约定
CamelCase
用于类和lower_case_with_underscores
函数和方法。始终使用self
第一个方法参数的名称(有关类和方法的更多信息,请参阅类的初步查看)。 -
如果您的代码旨在用于国际环境,请不要使用花哨的编码。Python的默认值,UTF-8甚至纯ASCII在任何情况下都能最好地工作。
-
同样,如果只有最轻微的机会,说不同语言的人会阅读或维护代码,请不要在标识符中使用非ASCII字符。
阅读更多
- Java基础学习总结(92)——Java编码规范之排版、注释及命名
- python学习(2)python基础、字符串和编码
- JAVA基础学习之IP简述使用、反射、正则表达式操作、网络爬虫、可变参数、了解和入门注解的应用、使用Eclipse的Debug功能(7)
- Python3学习(一)-基础、数据类型、变量、字符串和编码、list&tuple、if、for、while、dict、set、函数与参数
- Log4j2官方文档翻译、学习笔记之一——log4j2基础配置及功能概述
- 单词小助手,要求完成以下任务: 1.改写程序为良好程序风格(文档注释,函数注释,语句注释)。 2.将单词测试中的功能完善,可针对做错的单词重复记忆。 3.查询单词的功能添加英文词查询,中文查询的功能完
- 函数:lambda表达式 - 零基础入门学习Python021
- Java基础学习总结(92)——Java编码规范之排版、注释及命名
- Java 从基础到进阶学习之路---类编写以及文档注释.
- 零基础入门学习Python(21)--函数:lambda表达式
- 零基础入门学习Python(21)--函数:lambda表达式
- Python学习笔记:02 基础:变量、整数、字符串、赋值、基本输出、注释、代码块
- java基础第一讲——JDK、注释、帮助文档、编码规范
- Java基础知识强化75:正则表达式之分割功能(字符串中的数字排序案例)
- 零基础入门学习Python(12):lambda表达式、filter()和map()
- 学习帖-廖雪峰Python教程3.0-Python基础-字符串和编码
- [学习笔记] Java核心技术 卷一:基础知识 接口、lambda表达式与内部类(三)
- 廖雪峰python3.6教程笔记3-Python基础之字符串与编码
- 【幻化万千戏红尘】qianfengDay30-正则表达式、注解注释基础学习:
- C#学习笔记二:并行编程基础:在 PLINQ 和 TPL 中的 Lambda 表达式