一、Python综述
(一)Python是什么
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
(二)Python的特点
易于学习、易于阅读、易于维护、一个广泛的标准库、互动模式、可移植、可扩展、数据库接口、GUI 编程、可嵌入。
二、Python 3安装
python 3 环境的安装(以 windows 为例,Anaconda 安装)
下载地址:https://www.anaconda.com/distribution/
下载需要的对应版本,安装非常简单,只要跟着引导一步步做就可以了。
三、Python基本语法
(一)编码
默认情况下,python3源文件以UTF-8编码,所有字符串都是unicode字符串。同时可以指定源文件的不同编码,文件开头加上
# -*- coding: UTF-8 -*-
# coding=utf-8(等号两边不能有空格)
允许在源文件中使用utf-8字符集中的字符编码,对应的适合语言为中文等。
(二)标识符
1、第一个字符必须是字母表中的字母或下划线_
2、标识符中的其他部分由字母、数字和下划线组成
3、标识符对大小写敏感
4、在 python3 中,非 ASCII 标识符 (如中文字符) 也是允许的
(三)注释
1、单行注释:井号 #
2、多行注释:三个单引号''',或者三个双引号 """
(四)关键字和保留字
import keyword
print(len(keyword.kwlist)) #33
print(keyword.kwlist) #打印关键字
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del','elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda','nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
简介:
1.and:表示逻辑‘与’。
2.del:用于 list 列表操作,删除一个或者连续几个元素。
3.from:导入相应的模块,用 import 或者 from...import。
4.not:表示逻辑‘非’。
5.while:while 循环,允许重复执行一块语句,一般无限循环的情况下用它。
6.as:as 单独没有意思,是这样使用:with....as 用来代替传统的 try...finally语法的。
7.elif:和 if 配合使用的,if 语句中的一个分支用 elif 表示。
8.global :定义全局变量。
9.or:表示逻辑“或”。
10.with:和 as 一起用,使用的方法请看 as,见 with。
11.assert:表示断言(断言一个条件就是真的,如果断言出错则抛出异常)用于声明某个条件为真,如果该条件不是真的,则抛出异常:AssertionError。
12.else:参考下面 if 的解释。
13.if:if 语句用于选择分支,依据条件选择执行那个语句块。(if 语句中最好不要嵌套 if 语句,建议把嵌套的 if 语句写在另一个函数中)。
14.pass:pass 的意思就是什么都不做。
15.yield:用起来和 return 很像,但它返回的是一个生成器。
16.break:作用是终止循环,程序走到 break 的地方就是循环结束的时候。
17.except:和 try 一起使用,用来捕获异常。
18.import:用来导入模块,有时这样用 from....import。
19.class:定义类。
20.in:查找列表中是否包含某个元素,或者字符串 a 是否包含字符串 b。
21.raise:raise 可以显示地引发异常。一旦执行 raise 语句,后面的代码就不执行了。
22.continue:跳过 continue 后面循环块中的语句,继续进行下一轮循环。
23.finally:看到 finally 语句,必然执行 finally 语句的代码块。
24.is:Python 中的对象包含三要素:id、type、value,用来判断对象是否相等。
25.return:用于跳出函数,也可以在跳出的同时返回一个值。
26.def:用于定义方法。
27.for:for....in 一起使用:它在一序列的对象上递归,就是遍历队列中的每个项目。
28.lambda:即匿名函数。
29.try:出现在异常处理中,使用格式为:try...except,try 中放想要执行的语句,except 捕获异常。
30.nonlocal:nonlocal 关键字用来在函数或其他作用域中使用外层(非全局)变量。
(五)行和缩进
1、Python 的代码块不使用大括号{}来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
2、 缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
(六)多行语句
1、Python 语句中一般以新行作为语句的结束符。但是我们可以使用斜杠( \)将一行的语句分为多行显示。
2、语句中包含 [], {} 或 () 括号就不需要使用多行连接符。
(七)Python的引号
1、Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ )表示字符串,引号的开始与结束必须的相同类型的。
2、其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
(八)Python的空行
1、函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
2、空行与代码缩进不同,空行并不是 Python 语法的一部分。书写时不插入空行,Python 解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
3、记住:空行也是程序代码的一部分。
(九)等待用户输入
执行下面的程序在按回车键后就会等待用户输入:
input("\n\n 按下 enter 键后退出。")
(十)同一行显示多条语句
Python 可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:
x = 'runoob';print(x + '\n')
(十一)多个语句构成代码组
1、缩进相同的一组语句构成一个代码块,我们称之代码组。像 if、while、def和 class 这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
2、我们将首行及后面的代码组称为一个子句(clause)。
(十二)print输出
1、同类型才可以相加
2、print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":
# 不换行输出
print( x, end=" " )
(十三)import与from...import
在 python 用 import 或者 from...import 来导入相应的模块。
a、将整个模块(somemodule)导入,格式为: import somemodule
b、从某个模块中导入某个函数,格式为: from somemodule import somefunction
c、从某个模块中导入多个函数,格式为: from somemodule import firstfunc,secondfunc, thirdfunc
d、将某个模块中的全部函数导入,格式为: from somemodule import *
(1) 导入 sys 模块
import sys
print('================Python import mode==================');
print ('命令行参数为:')
for i in sys.argv:
print (i)
print ('\n python 路径为',sys.path)
(2) 导入 sys 模块的 argv,path 成员
from sys import argv,path # 导入特定的成员
print('================python from import=====================')
print('path:',path) # 因为已经导入 path 成员,所以引用不需要加 sys.path
(十四)命令行参数
很多程序可以执行一些操作来查看一些基本信息,Python 可以使用-h 参数查看各参数帮助信息:
$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit
四、基本数据类型
(一)变量赋值
counter = 100 # 整型变量
miles = 1000.0 # 浮点型变量
name = "runoob" # 字符串
(二)多变量赋值
1、Python 允许你同时为多个变量赋值。例如:a = b = c = 1。以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。
2、可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "runoob"
a,b = b,a # 变量的交换
以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象"runoob" 分配给变量 c。
(三)标准数据类型
Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)
a、不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
b、可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
(四)Number
1、int、float、bool、complex(复数)
例如:a,b,c,d = 20,5.5,True,5+4j
print(type(a),type(b),type(c),type(d))
2、type(a) # 判断数据类型
isinstance(a,int) # 判断数据是否属于某类型
del var1,var2 # 手动 GC
区别:
(1) type()不会认为子类是一种父类类型
(2) isinstance()会认为子类是一种父类类型
3、二进制:使用 0b 开头 例如:0b1010
八进制:使用 0o 开头 例如:0o555
十六进制:0x 开头 例如:0x52A74(大小写都 OK)
python 中没有数字的大小限制,可以使用任意大的数字;python 可以保证整数运算的精确,但是浮点数运算时可能会得到一个不精确的结果。
4、数学函数 import math
(1) 基本数学函数
(2)随机数函数
随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。
(3)三角函数
(4)数学常量
(五)String
Python 中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。下标从 0 开始。
加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,紧跟的数字为复制的次数。
(1) 字符串截取
变量[头下标:尾下标:步长)
(2)字符串打印
Python 使用反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:
print('Ru\noob')
(3) 字符串获取
print(str[0])
注意:
1、反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。
2、字符串可以用+运算符连接在一起,用*运算符重复。
3、Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以-1 开始。
4、Python 中的字符串不能改变。
str = 'abcdef'
str[0] = 's' # 报错
5、Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
(六)List
List(列表)是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。列表是写在方括号[]之间、用逗号分隔开的元素列表。和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
定义:
list = [0,1,2,3,'c']
list[0] # 0
len(list) # 长度 5
list[0:3] # [0,1,2]
注意:
1、List 写在方括号之间,元素用逗号隔开。
2、和字符串一样,list 可以被索引和切片。
3、List 可以使用+操作符进行拼接。
4、List 中的元素是可以改变的。
5、不支持与或非运算
(七)Tuple
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
定义:
t = (0,1,2,3,'c')
t[0] # 0
len(list) # 长度 5
t[0:3] # (0,1,2)
t[0] = 2 # 报错
注意:
1、与字符串一样,元组的元素不能修改。虽然 tuple 的元素不可改变,但它可以包含可变的对象,比如 list 列表。
list = [0,2,1,3]
t = (0,1,2,3,list)
t[0] = 1 # 报错
t[4][0] = 1
print(t[4]) # ok
2、元组也可以被索引和切片,方法一样。
3、注意构造包含 0 或 1 个元素的元组的特殊语法规则。
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
4、元组也可以使用 + 或 * 操作符进行拼接。
(八)Set
集合(set)是由一个。合的事物或对象称作元素或是成员。基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...} 或者 set(value)
s = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
print(s) # {'Mary', 'Jack', 'Rose', 'Tom', 'Jim'}
s = set('1b1b2b3b2b') # {'2', '3', '1', 'b'}
set 操作: # set 可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
>>> {'b', 'a', 'c', 'r', 'd'}
print(a - b) # a 和 b 的差集
>>> {'b', 'd', 'r'}
print(a | b) # a 和 b 的并集
>>> {'l', 'r', 'a', 'c', 'z', 'm', 'b', 'd'}
print(a & b) # a 和 b 的交集
>>> {'a', 'c'}
print(a ^ b) # a 和 b 中不同时存在的元素
>>> {'l', 'r', 'z', 'm', 'b', 'd'}
(九)Dictionary(字典)
字典(dictionary)是 Python 中另一个非常有用的内置数据类型。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
字典创建:
(1) d = {"a":1,"b":2,"c":3}
(2) d = dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
(3) d = {x:x**2 for x in (2, 4, 6)}
(4) d = dict(Runoob=1, Google=2, Taobao=3)
字典操作:
tinydict = {'name': 'guigu','code':1, 'site': 'www.atguigu.com'}
print (dict['name']) # 输出键为 'name' 的值
print (dict['code']) # 输出键为 'code' 的值
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键 dict_keys(['name', 'code','site'])
print (tinydict.values()) # 输出所有值 dict_values(['guigu', 1,'www.atguigu.com'])