Python

前情:Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,读取中文时会报错。

解决方法:只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 # coding=utf-8 就行了

(# coding=utf-8 = 号两边不要空格。)

脚本式编程

通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效。

让我们写一个简单的 Python 脚本程序。所有 Python 文件将以 .py 为扩展名。将以下的源代码拷贝至 test.py 文件中。

1
print ("Hello, Python!")

这里,假设你已经设置了 Python 解释器 PATH 变量。使用以下命令运行程序:

1
$ python test.py

输出结果:

1
Hello, Python!

Python 标识符

在 Python 里,标识符由字母、数字、下划线组成。

在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。

Python 中的标识符是区分大小写的。

以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。

以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。

Python 可以同一行显示多条语句,方法是用分号分开

行和缩进

Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。

缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。

多行语句

Python语句中一般以新行作为语句的结束符。

但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:

1
2
3
total = item_one + \
item_two + \
item_three

语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下:

1
2
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']

Python 引号

Python 可以使用引号( )、双引号( )、三引号( ‘’’“”” ) 来表示字符串,引号的开始与结束必须是相同类型的。

其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释

Python注释

单行注释采用 # 开头。多行注释使用三个单引号 ‘’’ 或三个双引号 **”””**。

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号

变量赋值

等号 = 用来给变量赋值。

Python允许你同时为多个变量赋值。例如:

1
a = b = c = 1

标准数据类型

Python有五个标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

Python 数字

指定一个值时,Number 对象就会被创建:

1
2
var1 = 1
var2 = 10

也可以使用del语句删除一些对象的引用。

del语句的语法是:

1
del var1[,var2[,var3[....,varN]]]

可以通过使用del语句删除单个或多个对象的引用。例如:

1
2
del var
del var_a, var_b

Python支持四种不同的数字类型:

  • int(有符号整型)
  • long(长整型,也可以代表八进制和十六进制)
  • float(浮点型)
  • complex(复数)

注:long 类型只存在于 Python2.X 版本中,在 Python3.X 版本中 long 类型被移除,使用 int 替代。

复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。

类型转换:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int(x [,base ])         将x转换为一个整数  
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为Unicode字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串

Python math 模块提供了许多对浮点数的数学运算函数。

Python cmath 模块包含了一些用于复数运算的函数。

要使用 math 或 cmath 函数必须先导入:

1
import math

//相关函数Python Number(数字) | 菜鸟教程 (runoob.com)

Python字符串

python的字串列表有2种取值顺序:

  • 从左到右索引默认0开始的,最大范围是字符串长度少1
  • 从右到左索引默认-1开始的,最大范围是字符串开头

[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符

比如:

1
2
3
>>> s = 'abcdef'
>>> s[1:5]
'bcde'

加号(+)是字符串连接运算符,星号(*)是重复操作…

Python列表

列表用 [ ] 标识,是 python 最通用的复合数据类型。

列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。Python 列表截取可以接收第三个参数,参数作用是截取的步长。//感觉与数组有点相似

可以对列表的数据项进行修改或更新,使用 del 语句来删除列表的元素

1
2
list.append('Google')   ## 使用 append() 添加元素
del list1[2]

Python 元组

元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。//只能读不能改

创建空元组

1
tup1 = ()

元组中只包含一个元素时,需要在元素后面添加逗号

1
tup1 = (50,)

可以对元组进行连接组合

1
tup3 = tup1 + tup2				# 创建一个新的元组

任意无符号的对象,以逗号隔开,默认为元组

Python 字典

列表是有序的对象集合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中:

1
d = {key1 : value1, key2 : value2 }

注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

字典的内容可以修改

1
2
3
4
5
tinydict['Age'] = 8 # 更新
tinydict['School'] = "RUNOOB" # 添加
del tinydict['Name'] # 删除键是'Name'的条目
tinydict.clear() # 清空字典所有条目
del tinydict # 删除字典

Python 运算符

Python 运算符 | 菜鸟教程 (runoob.com)

Python 条件语句

python 并不支持 switch 语句,只能用 if 来实现

1
2
3
4
5
6
7
8
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……

Python 循环语句

Python 提供了 for 循环和 while 循环(在 Python 中没有 do..while 循环)

循环控制语句:

break 语句 在语句块执行过程中终止循环,并且跳出整个循环
continue 语句 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。
pass 语句 pass是空语句,是为了保持程序结构的完整性。

while 语句

1
2
while 判断条件(condition):
执行语句(statements)……

for循环

1
2
for iterating_var in sequence:
statements(s)

Python 日期和时间

Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。

时间间隔是以秒为单位的浮点小数。

每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。//time.time()用于获取当前时间戳

函数time.time()用于获取当前时间戳

1
2
3
import time  # 引入time模块  
ticks = time.time()
print "当前时间戳为:", ticks

最简单的获取可读的时间模式的函数是asctime()

Python 函数

定义函数的规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号**()**。
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

函数调用(!!!我上次就忘记调用了!!!)

定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。

这个函数的基本结构完成以后,可以通过另一个函数调用执行,也可以直接从Python提示符执行。

Python 模块

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

import 语句

模块定义好后,我们可以使用 import 语句来引入模块,语法如下:

1
import module1[, module2[,... moduleN]]

比如要引用模块 math,就可以在文件最开始的地方用 import math 来引入。在调用 math 模块中的函数时,必须这样引用:

1
模块名.函数名
from…import 语句

Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:

1
from modname import name1[, name2[, ... nameN]]
from…import* 语句

把一个模块的所有内容全都导入到当前的命名空间

1
from modname import *

dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。

返回的列表容纳了在一个模块里定义的所有模块,变量和函数。

如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。

如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。

两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。

//下面是不知道在哪里记的东西

1.is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。

2.Python 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

3.不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:

1
2
3
4
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]

加了星号(*)的变量名会存放所有未命名的变量参数。

4.python 使用 lambda 来创建匿名函数。lambda只是一个表达式

lambda函数的语法只包含一个语句,如下:

1
lambda [arg1 [,arg2,.....argn]]:expression