Python的优点
- 很少的代码就能做很多事情
Python提供内置电池(即标准库及其模块),从而“自给自足”,无需依赖其他的软件包 - Python代码易读、易于维护
Python与其他编程语言的不同之处
声明函数和变量
- 声明变量时,无需(对标识符)指定类型;(它会自动取相应数据的类型)
查询数据类型:type(变量)
检查标识符的数据类型:如if isinstance(变量名,数据类型): ...
注意:这不一定是好事:如果声明变量num
后,使用拼写错误的nmu
,解释器不会报错 - 声明函数时,使用
def
Python中一个可重用的代码组称为“函数”;若函数作为一个Python类的一部分,它就称为“方法” - Python的默认变量名为
_
,将函数返回值赋给_
,让解释器忽略这个信息
例如for k,_ in dict.items()
一行代码就是一条语句
- Python中一行结束,一般就代表一条语句结束(无需用
;
表示)
当然,也有一些特例:如创建列表或使用列表推导式时,可以使用多行 - 代码出现在一对括号
[]
里, Python的“行末即语句结束”规则会临时关闭,可以写为多行 - 那么,如何表示空语句(什么也不做)?
pass
表示空语向,它是合法语句(也就是说,语法正确),但它什么也不做
有时没有准备好填入具体代码,但解释器在某些地方希望找到具体代码,就可以使用pass
避免语法错误(例如,创建一个类的代码组中没有任何代码,就存在语法错误) - 在行末使用
\
可以续行,从而写多行语句
多变量赋值
左边为一个变量元组,右边为一个列表
>>> a,b = [1,2]
字符串与注释
- Python中注释的两种方式:
文档字符串docstring"""注释"""
(尽管也可以用'''
包围注释,但大多程序员使用"""注释"""
)
或者#注释
(在一行之内)
文档字符串docstring
"""注释"""
可以跨多行,相当于其他语言的heredoc
它主要用作文档,用来描述一个函数的用途
- Python中不区分字符与字符串,单个“字符”视为长度为1的“字符串”;
- 对字符串,使用
'
包围和使用"
包围都可以 - 大多数Python程序员使用单引号
'
分隔字符串
唯一的特殊情况是:一个字符串只包含一个引号,使用双引号来包围,因为"'"
比'\''
更易读(避免用反斜线\
对字符转义)
>>> string="I'm sad"
>>> list(string)
['I', "'", 'm', ' ', 's', 'a', 'd']
- Python字符串支持
*
操作符,这里*
“乘以”字符串出现的次数
操作符
- Python中没有
++
操作符,要实现自增需要用i+=1
同理,也没有--
,需要用-=
- Python中没有三元操作符
?:
,而应该写为:
x=10 if y>3 else 20
然而,大多数Python程序员不太喜欢这种用法,因为等价的if...else
语句更易读。 - Python所有操作符列表:https://docs.python.org/3/reference/lexical_analysis.html#operators
操作符对于 Python内置类型的用法:https://docs.python.org/3/library/stdtypes.html
真值与假值
- Python中布尔值为
True
和False
,而true
和false
被解释为变量名 bool()
函数可以处理任何Python对象,返回True
或False
对于数0、值None
、空字符串、空的内置数据结构,返回False
对任何非零数、非空的数据结构,都返回True
- Python中的null值为
None
>>> bool(0.0)
False
>>> bool(None)
False
>>> bool([])
False
>>> bool('')
False
>>> bool({})
False
>>> bool([0,1,2])
True
>>> bool(-1)
True
内置函数
- Python提供帮助高效快速完成工作的功能,包括内置函数BIF(Built-in Functions)
键入dir(__builtins__)
可查看内置方法列表,键入help(len)
可获得这个BIF的功能描述
更多Python独有的特色
Python不同于很多其他语言的特性
- Python有上下文管理协议
- Python有函数修饰符
- Python有推导式、生成器
Python的代码分组机制:缩进
- 代码块不用
{...}
来界定,而是直接用缩进来指示代码块
这样做是因为读比写更多,代码易读很重要 - python文档中,一般称其为“代码组”,而不是“代码块”,虽然两者含义相同
- python的这种缩进帮助我们在读代码时很快找出代码组。
另外,代码组可以嵌套代码组,它们也必须缩进
谈到嵌入代码组时,通常会谈到缩进层次:最初的一层缩进通常称为第一层缩进(或0层),后面的层次分别称为第二层、第三层等(或1层、2层等)
可见,缩进层次相同的代码,也可能属于不同的代码组
注意:不要在 Python代码中混用制表符和空格
将编辑器配置为把Tab键替换为4个空格(顺便还可以自动删除所有末尾空白符)。对很多 Python程序员来说,这是约定俗成的做法。
用冒号引入一个“代码组”
另一个线索是冒号:
,该字符用来引入与某个 Python控制语句(如if,else,for等)关联的代码组。
冒号:
引入一个(必须向右缩进的)新的代码组。如果忘记在冒号后缩进代码,解释器会报错。
- 遍历使用
for 目标标识符 in 列表:
,且这样迭代处理时能保证无遗漏
或等价于while 条件: ...
- 条件判断用
if 条件: ... elif: ...else: ...
- 判断一个对象是否在另一个对象中,用
if 1 in [0,1,2]: ...