python语言基础概述
上面的例子使用一个lambda表达式来返回一个函数。另一个用法是传递一个小函数作为参数:
Python流程控制工具
函数定义的更多形式 文档字符串:以下是有关文档字符串的内容和格式的一些约定:
第一行应该是对象目的的简要概述。为简洁起见,它不应显式声明对象的名称或类型,因为这些可通过其他方式获得(除非名称 恰好是描述函数操作的动词)。这一行应以大写字母开头,以句点结尾。
2019年7月
Python语言基础
目录
01 流程控制工具 02 数据结构 03 模块与类
04 输入输出
01 流程控制工具: if, for, while等语法
流程控制工具
If语句
If语句中,可以有零个或多个 elif 部分,以及一个可选的 else 部分。 关键字 'elif' 是 'else if' 的缩写, 适合用于避免过多的缩进。 一个 if ... elif ... elif ... 序列可以看作是其他语言中的 switch 或 case 语 句的替代。
的参数调用,比如:
in:测试一个序列是 否包含某个值
这个函数可以通过几种方式调用: • 只给出必需的参数:ask_ok('Do you really want to quit?') • 给出一个可选的参数:ask_ok('OK to overwrite the file?', 2) • 给出所有的参数:ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')
Python流程控制工具
函数定义的更多形式 解包参数列表:当参数已经在列表或元组中但需要为需要单独位置参数的函数调用解包时,会发生相反的情况。 例如,内置的 range() 函数需要单独的 start 和 stop 参数。如果它们不能单独使用,请使用 * 运算符编写函 数调用以从列表或元组中解包参数:
Python流程控制工具
序列和其他类型的比较 序列对象可以与相同类型的其他对象比较。它们使用字典顺序进行比较:首先比较两个序列的第一个元素,如果
不同,那么这就决定了比较操作的结果。如果它们相同,就再比较每个序列的第二个元素,以此类推,直到穷尽 其中一个序列。如果要比较的两个元素本身就是相同类型的序列,那么就递归进行字典顺序比较。如果两个序列 中所有的元素都相等,那么我们认为这两个序列相等。如果一个序列是另一个序列的初始子序列,那么短序列就 小于另一个。字典顺序对字符串来说,是使用单字符的Unicode码的顺序。下面是同类型序列之间比较的例子
循环的技巧 当逆向循环一个序列时,先正向定位序列,然后调用 reversed() 函数
如果要按某个指定顺序循环一个序列,可以用 sorted() 函数,它可以在不改动原序列的基础上返回一个新的排 好序的序列
有时可能会想在循环时修改列表内容,一般来说改为创建一个新列表是比较简单且安全的。
注意对不同类型对象来说,只要提供了合适的比较方法,就可以使用 < 和 > 来比较。例如,混合数值类型是通 过他们的数值进行比较的,所以 0 等于 0.0,以此类推。否则,解释器将显示TypeError 异常,而不是随便给 出一个结果。
02 Python的数据结构
Python的数据结构
数字 将Python作为计算器使用,python数字的整数为int型,浮点型为float。包含多种混合类型运算数的运算会把整
流程控制工具
range()函数 这是一个内置函数,可以用来遍历一个数字序列,也可以用来生成序列。比如range(10)会生成10 个值,组成一个长度为10的序列。Range也可以以另一个数字开头,或者以指定的幅度(可正可负) 增加。
Python流程控制工具
break和continue break 语句用于跳出最近的 for 或 while 循环。对于循环语句中的else子句,它会在循环遍历完列表 (使用 for) 或是在条件变为假 (使用 while) 的时候被执行,但是不会在循环被 break 语句终止时被执行。 Continue表示中止此次循环,下次循环继续。
有效调用: 无效调用:
Python流程控制工具
函数定义的更多形式 任意的参数列表:最后、最不常用的选项是可以使用任意数量的参数调用函数。这些参数会被包含在一个元组里。 在可变数量的参数之前,可能会出现零个或多个普通参数。一般来说,这些可变参数将在形式参数列表的末尾, 因为它们收集传递给函数的所有剩余输入参数。出现在 *args 参数之后的任何形式参数都是 ‘仅关键字参数’, 也就是说它们只能作为关键字参数而不能是位置参数。
下面是一个多行文档字符串的例子:
Python流程控制工具
函数定义的更多形式 函数标注:函数标注是关于用户自定义函数中使用的类型的完全可选元数据信息。它以字典的形式存放在函数的 __annotations__ 属性中,并且不会影响函数的任何其他部分。 形参标注的定义方式是在形参名称后加上冒号, 后面跟一个表达式,该表达式会被求值为标注的值。 返回值标注的定义方式是加上一个组合符号 ->,后面跟一 个表达式,该标注位于形参列表和表示 def 语句结束的冒号之间。 下面的示例有一个位置参数,一个关键字参 数以及返回值带有相应标注:
进。下面的例子就是创建一个输出任意范围内 Fibonacci 数列(斐波那契数列):
在列表的最后添加一 个新的元素,相当于: result = result+[a]
无返回值
有返回值
Python流程控制工具
函数定义的更多形式
参数默认值:最有用的形式是对一个或多个参数指定一个默认值。这样创建的函数,可以用比定义时允许的更少
入不一样(外面所加的引号可能会改变),但两个字符串是相同的。 如果字符串中有单引号而没有双引号,该 字符串外将加双引号来表示,否则就加单引号。 print() 函数会生成可读性更强的输出,即略去两边的引号,并 且打印出经过转义的特殊字符:
பைடு நூலகம்ython的数据结构
字符串 如果不希望前置了 \ 的字符转义成特殊字符,可以使用 原始字符串 方式,在引号前添加 r 即可:
字符串字面值可以跨行连续输入。一种方式是用三重引号:"""...""" 或 '''...'''。字符串中的回车换行会自动 包含到字符串中,如果不想包含,在行尾添加一个 \ 即可。如下例:
输出结果如下:
Python的数据结构
字符串 字符串可以用 + 进行连接(粘到一起),也可以用 * 进行重复:
解包参数列表:以同样的方式,字典可以使用 ** 运算符来提供关键字参数:
Python流程控制工具
函数定义的更多形式 Lamda表达式:可以用 lambda 关键字来创建一个小的匿名函数。这个函数返回两个参数的和: lambda a, b: a+b 。Lambda函数可以在需要函数对象的任何地方使用。它们在语法上限于单个表达式。从语义上来说,它们 只是正常函数定义的语法糖。与嵌套函数定义一样,lambda函数可以引用包含范围的变量::
Python流程控制工具
循环的技巧 当在字典中循环时,用 items() 方法可将关键字和对应的值同时取出
当在序列中循环时,用 enumerate() 函数可以将索引位置和其对应的值同时取出
当同时在两个或更多序列中循环时,可以用 zip() 函数将其内元素一一匹配。
Python流程控制工具
数转换成浮点数。 加减乘除、乘方(**)
在交互模式下,上一次打印出来 的表达式被赋值给变量 _
Python的数据结构
字符串 字符串有多种形式,使用单引号(’……’)和双引号(”……”)都可以获得同样的结果。 在交互式解释器中,输出的字符串外面会加上引号,特殊字符会使用反斜杠来转义。 虽然有时这看起来会与输
的字符串:
索引也可以用负数,这种会从右边开始数。注意-0和0是一样的,所以负数索引从-1开始。
内置函数 len() 返回一个字符串的长度:
Python的数据结构
列表 Python 中可以通过组合一些值得到多种 复合 数据类型。其中最常用的列表 ,可以通过方括号括起、逗号分隔
相邻的两个或多个 字符串字面值 (引号引起来的字符)将会自动连接到一起,这样就可以把很长的字符串拆开 分别输入。
注意:只能对两个字面值这样操作,变量或者表达式不行。如果想连接变量,或者连接变量和字面值,可以用+ 号:
Python的数据结构
字符串的索引 字符串是可以被 索引 (下标访问)的,第一个字符索引是 0。单个字符并没有特殊的类型,只是一个长度为一
Python流程控制工具
函数定义的更多形式
关键字参数
关键字参数:可以使用形如kwarg=value的关键字参数来调用函数。在函数调用中,关键字参数必须跟随在位置 参数的后面。传递的所有关键字参数必须与函数接受的其中一个参数匹配(比如 actor 不是函数 parrot 的有效 参数),它们的顺序并不重要。这也包括非可选参数(该例中为voltage)。
Python流程控制工具
条件控制 while 和 if 条件句中可以使用任意操作,而不仅仅是比较操作。 比较操作符 in 和 not in 校验一个值是否在(或不在)一个序列里。操作符 is 和 is not 比较两个对象是不是 同一个对象,这只跟像列表这样的可变对象有关。所有的比较操作符都有相同的优先级,且这个优先级比数值运 算符低。 比较操作可以传递。例如 a < b == c 会校验是否 a 小于 b 并且 b 等于 c。 比较操作可以通过布尔运算符 and 和 or 来组合,并且比较操作(或其他任何布尔运算)的结果都可以用 not 来取反。这些操作符的优先级低于比较操作符;在它们之中,not 优先级最高, or 优先级最低,因此 A and not B or C 等价于 (A and (not B)) or C。和之前一样,你也可以在这种式子里使用圆括号。 布尔运算符 and 和 or 也被称为 短路 运算符:它们的参数从左至右解析,一旦可以确定结果解析就会停止。例 如,如果 A 和 C 为真而 B 为假,那么 A and B and C 不会解析 C。当作用于普通值而非布尔值时,短路操 作符的返回值通常是最后一个变量。 也可以把比较操作或者逻辑表达式的结果赋值给一个变量,例如