本文主要梳理相对于其他编程语言(如:c/c++、java、go、c#)而言,Python基础语法中,独具特色的知识点。方便其他语言程序员快速了解Python语法。
本文旨在对知识点做一个系统性的梳理,提供一个类似目录的功能。每个知识点的展开均提供网上参考文章。
切片是Python序列的重要操作之一,适用于列表、元组、字符串、range对象等类型。切片使用2个冒号分隔的3个数字来完成:第一个数字表示切片的开始位置,默认为0,第二个数字表是切片的截止(但不包含)位置(默认为列表长度),第三个数字表示切片的步长(默认为1),当步长省略时,顺便可以省略最后一个冒号。
可以使用切片来截取列表中的任何部分,得到一个新列表,也可以通过切片来修改和删除列表中部分元素,甚至可以通过切片操作为列表对象增加元素。与使用下标访问列表元素不同,切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表,代码具有更强的健壮性。
具体语法参考文章:[Python]切片完全指南(语法篇) - 知乎
Number、Boolean、String、List、Set、Dictionary 和其他编程语言类似。
Tuple(元组) 略有特殊,tuple和list非常类似,但是tuple一旦初始化就不能修改。
列表中,具有python特色的概念就是:range。range 在list构造函数中提供了多种构造形式,目的是简化初始化list的复杂度。
python 的列表可以通过【推导式】
参考文章:Python进阶:列表推导式(List Comprehension)
元组和列表一样,也是一种序列。不同的是元素是不能修改,也就是说,元组是只读的,不能对元组进行增、删、改。定义元组非常简单,只需要用逗号(, )分割值即可。
tuple 详细介绍可参考文章:Python的基本数据类型——Tuple
dictionary 详细介绍可参考:Python 字典(Dictionary)
序列解包可以用于元组、列表、字典。序列解包可以让我们方便的对多个变量赋值。
序列解包详细介绍可参考:Python基础知识(序列解包、序列封包)
python的文档注释用: “”" 表示。
参考文章:Python中的注释和文档
关于作用域的概念,python和其他任何语言都类似。
其中,global 关键字可以再函数内部改变全局变量的值。
global关键字:
函数式编程并非python独有。我们知道python的底层是c,而函数式编程是c语言的一个特性。
函数式编程就是一种抽象程度很高的编程范式。
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
参考文章:函数式编程
高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数。
参考文章:Python高阶函数
python 中常用的高阶函数有: map()函数、reduce()函数、filter函数()、sorted() 函数、匿名函数(lambda表达式)。
lambda表达式在很多语言中都广泛使用,并不是python独有的概念。
参考文章1:python中5个常用的内置高阶函数
参考文章2:一文搞懂Python匿名函数
参考文章: Python闭包(Closure)详解
在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性。
① 可以读取函数内部的变量,②让这些变量的值始终保持在内存中。
闭包的调用其实是挺繁琐的。在python程序中,装饰器就是一种闭包,它可以使闭包的访问方式更简单。
本质上,装饰器(decorator)就是一个返回函数的高阶函数。
在Python中使用装饰器,需要使用一个特殊的符号“@” 来实现。在定义装饰器函数或类时, 使用“@装饰器名称” 的形式将符号“@” 放在函数或类的定义行之前。
装饰器(decorator)通常用来做打印日志。
参考文章:python 装饰器详解
Python中的类提供了很多双下划线开头和结尾__xxx__的方法,这些方法是Python运行的基础,很多功能背后都是通过调用这些内置方法来实现的。
参考文章:全面了解Python类的内置方法
Python 参数没有类型约束,无法根据参数类型区分不同的函数,因此python没有重载一说。
具体参考:为什么 Python 不支持函数重载?而其他语言大都支持?
python中获取对象信息的函数只要有:type()、isinstance()函数、dir()函数。
通过类的方法 mro() 或者类的属性 __mro__可以输出这个类的继承层次结构。
参考:python中的MRO
以上就是我对python语法特色知识点的一个梳理和总结。