Python
python相关的基础代码位于Gitee的 https://gitee.com/yangsx95/notes-python 中。
搭建Python环境
windows下的python环境
前往 官网 下载对应的python安装包,一路安装即可。
注意
在安装过程中会有选项,是否添加到环境变量中,勾选即可自动将python添加到环境变量中。
安装完成后,可以使用命令 python
检测是否安装成功。
如果你是用的是压缩版本,需要手动配置path环境变量, 直接将根路径设置到Path中即可。
集成开发环境选择
使用文本编辑器开发,然后通过
python 文件名
来运行Pycharm,Jetbrains,笔者正在使用的一款开发环境
Aptana Studio,基于Eclipse基础上进行插件集改支持python开发
使用IDEA或者Eclipse集成插件
检测python的版本
Hello World
使用 python
命令打开shell交互式解释器, 输入代码即可运行。
python命令参数:
选项参数-ddebug 解析时显示调试信息-O生成优化代码 .pyo 文件-S启动时不引入查找Python路径的位置-V输出Python版本号-X从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时-c cmd执行 Python 脚本,并将运行结果作为 cmd 字符串file生成优化代码 .pyo 文件-h帮助
创建一个后缀为py的源码文件,使用python HelloWorld.py 运行python文件
交互式编程
我们可以在命令提示符中输入"Python"命令来启动Python解释器
脚本式编程
可以通过如下命令运行python脚本:
编码
Python3源码默认以UTF-8为编码,所有字符串都是Unicode字符串。如果要切换编码,可以在源文件中指定:
标识符(变量命名规则)
不可使用保留字
首字符必须是字母或者下划线
其他字符可以有字母下划线和数字组成
大小写敏感
规则和Java相同
保留字
python提供了 keyword模块,可以列举出当前版本的所有保留字:
注释
单行注释: #
sharp开头。
多行注释: 多个 #
开头,或者使用 ''' '''
或者 """ """
可选的分号
在语句结束时,可以使用换行表示语句结束,可以替代分号。
行与缩进
python不需要大括号
使用缩进表示代码块
同一个代码块,缩进必须相同
如果缩进不同,会抛出错误:
IndentationError: unindent does not match any outer indentation level
代码组
缩进相同的一组语句构成一个代码块,我们称之 代码组。
多行语句
如果语句过长,我们可以使用反斜杠来实现多行语句:
如果语句包含 {}
, []
, ()
则不需要反斜杠,比如如下数组:
同一行显示多个语句
一行使用多个语句,需要 ;
分号分割:
空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住: 空行也是程序代码的一部分。
使用import导入模块
导入整个模块 moduleA: import moduleA
导入模块 moduleA 的函数 funA: from moduleA import funA
导入模块 moduleA 的多个函数: from moduleA import funA, funB, funC
导入模块 moduleA 的所有函数: from moduleA import *
控制台输出与输入函数
sys.argv 可以获取启动脚本时的输入参数,比如有如下 HelloWorld.py
:
使用命令 python HelloWorld.py name Lisi
运行,会打印:
变量和数据类型
变量
变量的定义和赋值:
变量的销毁:
创建过程
当我们写:a = ‘ABC’时,Python解释器干了两件事情:
在内存中创建了一个’ABC’的字符串;
在内存中创建了一个名为a的变量,并把它指向’ABC’。
和Java类似。
标准数据类型
在python3中,公有六种标准的数据类型:
Number 数字
String 字符串
List 列表
Tuple 元组
Set 集合
Dictionary 字典
其中,Number String Tuple 是 不可变数据
List Dictionary Set 是 可变数据
type函数:查询变量的类型
instance函数:判断变量类型
None
用 None
表示。None不能理解为0,相当于其他语言中的NULL。
Number
int
长整形float
浮点型bool
布尔类型complex
复数类型
int
在 python3中没有短整型,只有长整形,长整形使用int来表示。
各个进制的表示形式:
进制表示对应十进制的值转换为此进制的方式二进制0b1004bin(任意进制数)八进制0o10064oct(任意进制数)十六进制0x100256hex(任意进制数)
float
浮点数就是小数: 1.2
, 2.50
, -0.58
等
对于很小的浮点数,使用e替代10,即 1.29e3
就是 1290
整数永远是精确的 而 浮点数永远会有四舍五入的误差。
整数与浮点数运算为浮点数。
bool
一个布尔值只有 True
、 False
两种值,在内部中使用1 和 0 存储。
所以,bool类型也是Number类型,也可以进行数值运算。
短路运算:布尔值可以用 and
、 or
和 not
运算,分别对应与、或、非,并且是短路运算符。
注意:Python把 0
、 空字符串
‘和 None
看成 False
,其他数值和非空字符串都看成 True
String
字符串是以 ''
或""括起来的任意文本,比如 'abc'
, "xyz"
等等。请注意, ''
或 ""
本身只是一种表示方式,不是字符串的一部分,因此,字符串 'abc'
只有a,b,c这3个字符。
如果字符串本身包含
'
,比如我们要表示字符串 I’m OK ,这时,可以用" "括起来表示:"I'm OK"
类似的,如果字符串包含
"
,我们就可以用' '
括起来表示:'Learn "Python" in imooc'
如果既包含
""
,又包含''
,可以使用\
转义字符。
注意:python字符串不可变
String在Python中公有三种表现形式:
字符串截取
字符串和java一样,是从第0个下表开始的。
字符串连接操作
不转移标识
python字符串中如果想禁用转义字符,可以使用如下方式:
其他
List
List是一种有序集合,可以添加和删除其中的元素
Python 是一种动态语言,所以List集合中的元素的类型可以不相同:例如,
[10,"Python","test",17.7]
空list:
list = []
按照索引来访问list
倒叙访问list,-1索引表示倒数第一个元素,-2表示倒数第二个元素,以此类推
向List尾部添加元素 使用
list.append()
方法向List指定位置添加元素 使用
list.insert()
方法从list中删除元素 使用
list.pop()
方法,该方法返回被删除的元素替换元素
Tuple
元组,和List非常相似,但一旦创建了,Tuple就无法修改了
空Tuple:
tuple = ()
单元素Tuple
可变Tuple
Dict:
_字典,字典中的字可以根据对应的信息查到,Dict类似
一种键值对类型_
Dict的特点
Dict的查找速度与元素数量无关,查找速度快,而List会随着元素数量的增加速度也会变慢
Dict相对于其他集合占用空间大,而List恰恰相反
Dict是无序的打印顺序不是创建顺序,不可以用dict存储有序集合
他的元素key,是不可变的,字符串,浮点数,整型都可以作为dict的key
创建dict
根据key获取value
第一种 方法:
第二种方法
更新Dict
遍历Dict,注意,只能取到value的数值
Set
set的特点:
没有重复
无序性
内部结构和Dict类似,但是不存储value,所以查询速度也很快
对象不可变,可用于存储常量
创建Set
调用set()方法,并传入一个List
传入含有重复元素的List,会自动去除重复元素
访问Set
遍历Set
添加元素
删除元素
运算符
算术运算符
运算符描述实例+加 – 两个对象相加a + b 输出结果 31–减 – 得到负数或是一个数减去另一个数a – b 输出结果 -11*乘 – 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 210/除 – x 除以 yb / a 输出结果 2.1%取模 – 返回除法的余数b % a 输出结果 1**幂 – 返回x的y次幂a**b 为10的21次方//取整除 – 返回商的整数部分9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
比较运算符
运算符描述实例==等于 – 比较对象是否相等(a == b) 返回 False。!=不等于 – 比较两个对象是否不相等(a != b) 返回 True。>大于 – 返回x是否大于y(a > b) 返回 False。<小于 – 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。(a < b) 返回 True。>=大于等于 – 返回x是否大于等于y。(a >= b) 返回 False。<=小于等于 – 返回x是否小于等于y。(a <= b) 返回 True。
赋值运算符
运算符描述实例=简单的赋值运算符c = a + b 将 a + b 的运算结果赋值为 c+=加法赋值运算符c += a 等效于 c = c + a-=减法赋值运算符c -= a 等效于 c = c – a*=乘法赋值运算符c = a 等效于 c = c a/=除法赋值运算符c /= a 等效于 c = c / a%=取模赋值运算符c %= a 等效于 c = c % a**=幂赋值运算符c = a 等效于 c = c a//=取整除赋值运算符c //= a 等效于 c = c // a
位运算符
运算符描述实例&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释: 0000 1100|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 61 ,二进制解释: 0011 1101^按位异或运算符:当两对应的二进位相异时,结果为1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x类似于 -x-1(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111
逻辑运算符(短路)
运算符逻辑表达式描述实例andx and y布尔"与" – 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。(a and b) 返回 20。orx or y布尔"或" – 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。(a or b) 返回 10。notnot x布尔"非" – 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False
成员运算符
运算符描述实例in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
身份运算符
运算符描述实例isis 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 Falseis notis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
is 比较引用的地址,==比较值。
运算符优先级
运算符描述**指数 (最高优先级)~ + –按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)\* / % //乘,除,取模和取整除+ –加法减法>> <<右移,左移运算符&位 ‘AND’^ |位运算符<= < > >=比较运算符<> == !=等于运算符= %= /= //= -= += *= **=赋值运算符is is not身份运算符in not in成员运算符and or not逻辑运算符
条件判断和循环
Python 代码缩进规则
具有相同缩进的行代码,将被视作一个代码块。
if 条件语句
for循环语句
遍历tuple类似。
while循环
拥有break和continue。
支持多重循环
输出结果为
a1、a2、a3、b1、b2、b3、c1、c2、c3
函数
查看帮助信息
官方文档地址:行内式链接
使用
help(abs)
查看abs函数的帮助信息
定义一个函数
注意:return None 等同于 return 等同于 无return语句
函数返回多值,比如坐标的x,y,z
数学函数:
abs(x) 绝对值函数
type(x) 类型函数
round(x) 四舍五入函数
内建函数
使用dir( builtins) 函数查看python中的内建函数
使用help(abs) 查看内建函数abs的信息(非内建函数无法使用此命令)
模块
类似于头文件
使用import math 导入math模块,使用math下的函数
一个完整的python文件就是一个模块,math模块的文件就是math.py
导入多个模块,模块间用逗号分开
导入指定的模块属性:from Module1 import ModuleElement
包package
一个层次文件的目录结构
比如:import AAA.CCC.c1导入AAA的子包BBB下的c1模块 或者 : from AAA.CCC.c1 import funct() 直接导入函数
最后更新于
这有帮助吗?