python第一周语言基础

控制语句

if语句,当条件成立时运行语句块。常常与else, elif(至关于else if) 配合使用。程序员

for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每一个元素。正则表达式

while语句,当条件为真时,循环运行语句块。算法

try语句,与except,finally配合使用处理在程序运行中出现的异常状况。编程

class语句,用于定义类型。dom

def语句,用于定义函数和类型的方法。编程语言

pass语句,表示此行为空,不运行任何操做。ide

assert语句,用于程序调试阶段时测试运行条件是否知足。函数

with语句,Python2.6之后定义的语法,在一个场景中运行语句块。好比,运行语句块前加密,而后在语句块运行退出后解密。测试

yield语句,在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本之后。这个语句变成一个运算符。this

raise语句,制造一个错误。

import语句,导入一个模块或包。

from import语句,从包导入模块或从模块导入某个对象。

import as语句,将导入的对象赋值给一个变量。

in语句,判断一个对象是否在一个字符串/列表/元组里。

表达式

Python的表达式写法与C/C++相似。只是在某些写法有所差异。

主要的算术运算符与C/C++相似。+, -, *, /, //, **, ~, %分别表示加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取余。>>, <<表示右移和左移。&, |, ^表示二进制的AND, OR, XOR运算。>, <, ==, !=, <=, >=用于比较两个表达式的值,分别表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面,~, |, ^, &, <<, >>必须应用于整数。

Python使用and, or, not表示逻辑运算。

is, is not用于比较两个变量是不是同一个对象。in, not in用于判断一个对象是否属于另一个对象。

Python支持“列表推导式”(list comprehension),好比计算0-9的平方和:

>>> sum(x * x for x in range(10))

285

Python使用lambda表示匿名函数。匿名函数体只能是表达式。好比:

>>> add=lambda x, y : x + y

>>> add(3,2)

5

Python使用y if cond else x表示条件表达式。意思是当cond为真时,表达式的值为y,不然表达式的值为x。至关于C++和Java里的cond?y:x。

Python区分列表(list)和元组(tuple)两种类型。list的写法是[1,2,3],而tuple的写法是(1,2,3)。能够改变list中的元素,而不能改变tuple。在某些状况下,tuple的括号能够省略。tuple对于赋值语句有特殊的处理。所以,能够同时赋值给多个变量,好比:

>>> x, y=1,2#同时给x,y赋值,最终结果:x=1, y=2

特别地,可使用如下这种形式来交换两个变量的值:

>>> x, y=y, x #最终结果:y=1, x=2

Python使用'(单引号)和"(双引号)来表示字符串。与Perl、Unix Shell语言或者Ruby、Groovy等语言不同,两种符号做用相同。通常地,若是字符串中出现了双引号,就使用单引号来表示字符串;反之则使用双引号。若是都没有出现,就依我的喜爱选择。出如今字符串中的\(反斜杠)被解释为特殊字符,好比\n表示换行符。表达式前加r指示Python不解释字符串中出现的\。这种写法一般用于编写正则表达式或者Windows文件路径。

Python支持列表切割(list slices),能够取得完整列表的一部分。支持切割操做的类型有str, bytes, list, tuple等。它的语法是...[left:right]或者...[left:right:stride]。假定nums变量的值是[1, 3, 5, 7, 8, 13, 20],那么下面几个语句为真:

nums[2:5] == [5, 7, 8] 从下标为2的元素切割到下标为5的元素,但不包含下标为5的元素。

nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最后一个元素。

nums[:-3] == [1, 3, 5, 7] 从最开始的元素一直切割到倒数第3个元素。

nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回全部元素。改变新的列表不会影响到nums。

nums[1:5:2] == [3, 7] 从下标为1的元素切割到下标为5的元素但不包含下标为5的元素,且步长为2。

函数

Python的函数支持递归、默认参数值、可变参数,但不支持函数重载。为了加强代码的可读性,能够在函数后书写“文档字符串”(Documentation Strings,或者简称docstrings),用于解释函数的做用、参数的类型与意义、返回值类型与取值范围等。可使用内置函数help()打印出函数的使用帮助。好比:

>>> def randint(a, b):

... "Return random integer in range [a, b], including both end points."...

>>> help(randint)

Help on function randint in module __main__:

randint(a, b)

Return random integer inrange[a, b], including both end points.

对象的方法

对象的方法是指绑定到对象的函数。调用对象方法的语法是instance.method(arguments)。它等价于调用Class.method(instance, arguments)。当定义对象方法时,必须显式地定义第一个参数,通常该参数名都使用self,用于访问对象的内部数据。这里的self至关于C++, Java里面的this变量,可是咱们还可使用任何其它合法的参数名,好比this 和 mine 等,self与C++,Java里面的this不彻底同样,它能够被看做是一个习惯性的用法,咱们传入任何其它的合法名称都行,好比:

Python认识一些以“__”开始并以“__”结束的特殊方法名,它们用于实现运算符重载和实现多种特殊功能。

类型

Python采用动态类型系统。在编译的时候,Python不会检查对象是否拥有被调用的方法或者属性,而是直至运行时,才作出检查。因此操做对象时可能会抛出异常。不过,虽然Python采用动态类型系统,它同时也是强类型的。Python禁止没有明肯定义的操做,好比数字加字符串。

与其它面向对象语言同样,Python容许程序员定义类型。构造一个对象只须要像函数同样调用类型便可,好比,对于前面定义的Fish类型,使用Fish()。类型自己也是特殊类型type的对象(type类型自己也是type对象),这种特殊的设计容许对类型进行反射编程。

Python内置丰富的数据类型。与Java、C++相比,这些数据类型有效地减小代码的长度。下面这个列表简要地描述了Python内置数据类型(适用于Python 3.x):

类型 描述 例子 备注
str 一个由字符组成的不可更改的有序串行。 'Wikipedia'"Wikipedia""""Spanningmultiplelines""" 在Python 3.x里,字符串由Unicode字符组成
bytes 一个由字节组成的不可更改的有序串行。 b&apos;Some ASCII&apos;b"Some ASCII"  
list 能够包含多种类型的可改变的有序串行 [4.0, &apos;string&apos;, True]  
tuple 能够包含多种类型的不可改变的有序串行 (4.0, &apos;string&apos;, True)  
set, frozenset 与数学中集合的概念相似。无序的、每一个元素惟一。 {4.0, &apos;string&apos;, True}frozenset([4.0, &apos;string&apos;, True])  
dict 一个可改变的由键值对组成的无序串行。 {&apos;key1&apos;: 1.0, 3: False}  
int 精度不限的整数 42  
float 浮点数。精度与系统相关。 3.1415927  
complex 复数 3+2.7j  
bool 逻辑值。只有两个值:真、假 TrueFalse  

除了各类数据类型,Python语言还用类型来表示函数、模块、类型自己、对象的方法、编译后的Python代码、运行时信息等等。所以,Python具有很强的动态性。

数学运算

Python使用与C、Java相似的运算符,支持整数与浮点数的数学运算。同时还支持复数运算与无穷位数(实际受限于计算机的能力)的整数运算。除了求绝对值函数abs()外,大多数数学函数处于math和cmath模块内。前者用于实数运算,然后者用于复数运算。使用时须要先导入它们,好比:

>>> import math

>>> print(math.sin(math.pi/2))

1.0

fractions模块用于支持分数运算;decimal模块用于支持高精度的浮点数运算。

Python定义求余运行a % b的值处于开区间[0, b)内,若是b是负数,开区间变为(b, 0]。这是一个很常见的定义方式。不过其实它依赖于整除的定义。为了让方程式:b * (a // b) + a % b = a恒真,整除运行须要向负无穷小方向取值。好比7 // 3的结果是2,而(-7) // 3的结果倒是-3。这个算法与其它不少编程语言不同,须要注意,它们的整除运算会向0的方向取值。

Python容许像数学的经常使用写法那样连着写两个比较运行符。好比a < b < c与a < b and b < c等价。C++的结果与Python不同,首先它会先计算a < b,根据二者的大小得到0或者1两个值之一,而后再与c进行比较。

相关文章
相关标签/搜索