工作用编辑器:pycharm
方便展示学习:Jupyter Notebook 在dos窗口安装方式:pip install jupyter 安装好以后使用方式:jupyter notebook
python --version 可以验证python安装成功与否
在dos窗口编写python:先进入到python环境,python+回车 然后在编写代码例如 print("hello world")
在dos窗口打开python脚本:notepad xxx.py+回车
在dos窗口运行python脚本:python xxx.py+回车
解决使用pip安装模块时提示: No module named pip;1、python -m ensurepip+回车
2、python -m pip install --upgrade pip -i http://pypi.douban.com/simple --trusted-host pypi.douban.com+回车
用2to3.py将python2代码转化为python3代码
window系统推荐windows7以上系统、Mac OS从Max OS X 10.3开始已经包含python、Linux 推荐 Unbuntu版本
python官网中:“web-based installer”---->联网安装 “embeddable installer”----->离线安装
1.格式规范
用缩进表示代码块,不同曾次代码块用不用的缩进
单行注释用#
多行注释‘’‘呃呃呃’‘’
多行语句用反斜杠(\),在()、[]、{}的元素中,不能使用反斜杠
2.标识符和命名规则
标识符自己定义的符号和名称,区分大小写、可以包括字母、数字、下划线,但是不能以数字开头
命名规则 变量名:下划线分割小写单词web_qwe
函数名: 同变量名
常量名: 下划线分割的全大写单词
类名 :一般首字母大写
类名内部的变量和方法名:同变量名
3.保留字
保留字即关键字,不能把保留字用作标识符名称
查询保留字方法 import keyword
keyword.kwlist
id() :获取变量的内存地址
nums = num1 = 1024
id(nums)、id(num1)
基本数据类型
Number数字 int:长整形,任意大小的整数。99j表示-99 float:浮点型,需要小数时使用。
str字符串,单行文本字符单引号或者双引号,多行文本字符用三引号
字符串操作1
a='python',b='Class'
a+b +代表字符串链接
a[1] [n] 代表下标,通过索引获取字符串中的字符
[m:n]截取字符串的部分 [1:5]截取下标从1到5,不包括5;[:5]截取前5个字符;[-5:]截取后面5个字符
字符串操作2
a='python',b='Class'
string.find(str) 检测string中是否存在str,存在返回开始的索引值,不存在返回-1. a.find('thon') = 2 ; a.find('java') = -1
string.replace(str1,str2) 把string中的str1替换成str2 a.replace('thon','aaa') = 'pyaaa'
string.strip() 去掉字符串两端的字符 ' hello world '.strip() = 'hello world'
string.split(str) 以str为分割string,返回一个列表 a.split('y') = ['p','thon']
string.join(sep) 以string作为分隔符,将seq中所有的元素合并为一个新的字符串 ' '.join(a) = 'p y t h o n'
string.format() 格式化字符串,传递参数 'this is the {0} {1}'.format(a,b) = 'this is the python Class'
字符串操作3
a='python',b='Class'
用字符串格式化符号传递变量 ‘this is the %s %s’%(a,b) = 'this is the python Class'
常用的格式化符号
%s 格式化字符串
%d 格式化整数
%f 格式化浮点数
转义字符
\ 续行符 \n 换行符 \0 空 \t 水平制表符,横向跳到下一制表符 \" 双引号 \' 单引号
\\ 一个反斜杠 \f 换页 \0dd 八进制数 dd代表字符,\012代表换行
\xhh 十六进制数,hh代表字符,如\x0a代表换行
转换函数表达式
int(x) 将x转换为整数 float(x) 将x转换为浮点数 complex(real [,imag]) 创建一个复数 str(x) 将x转换为字符串 repr(x) 将x转换为表达式字符串
eval(str) 计算在字符串中的有效python表达式,并返回一个对象
chr(x) 将整数x转化为一个字符 ord(x) 将一个字符x转换为它对应的整数值 hex(x) 将一个整数x转换为一个十六进制字符串 oct(x) 将一个整数x转换为一个八进制字符串
bool布尔值 Ture False
与数字型对应 1等价于Ture 0等价于False
与字符串型对应 非空字符串‘xxxx’等价于Ture 空字符串‘’等价于False
list列表
使用方括号[]来建立列表
有序的序列
允许以任意的顺序存储数据
可以人已添加和删除元素
1.索引 list[n]列表中任意位置的元素,从0开始
2.连接 [1,2,3]+[4,5,6,]+[7,8,9]=[1,2,3,4,5,6,7,8,9]
3.添加 向末尾追加:list.append('xxx') 按索引位置插入:list.insert(n,'xxx')
4.删除 删除末尾元素 list.pop() 按索引删除元素 list.pop(n)
tuple元组
有序元素的组合,使用圆括号()来建立
tuple结构和list非常相似
tuple是不可变类型,一旦初始化就不能修改
tuple=() 空元组
tuple1=('wew',) 元组中有一个元素,末尾要加一个逗号,
(1,2)+(3,4)=(1,2,3,4)
len(tuple) 计算元组元素个数
max(tuple) 返回元组中元素最大值
min(tuple) 返回元组中元素最小值
元组和列表结合使用,它们可以相互包含
set集合
用花括号{}来建立集合
集合里不允许有重复的元素
集合是无序数据的组合,不能用索引来查找
初始化集合 a={1,2,3}或者 a=set([1,2,3])
a={1,2,3} b={3,4,5}
集合操作,并集(|)不同集合去重后合并、交集(&)不同集合中的相同元素、差集(-)a去掉b中的相同元素等运算
dict字典
用花括号{}来建立
是一种映射类型,是无序的键值对(key:value)的组合
key在字典中唯一,且一旦建立不能改变
字典操作
查找,用过key找到value,contacts.get('1234'),查找速度快
增加,直接赋值新的键值对
修改,直接根据key修改value
删除,通过pop方法,contacts.pop('key')
数据类型间的转换
int(x) 将x转换为一个整数
float(x) 将x转换为一个浮点数
str(x) 将x转换为字符串
tuple(s) 将序列s转换为一个元组
list(s) 将序列s转换为一个列表
set(s) 转换为集合
dict(d) 创建字典,d必须是(key,value)元组结构的序列
常用运算符
1.算术
%取模,返回除法的余数;**幂,返回x的y次幂;//取整除,向下取接近除数的整数。
2.赋值
= 直接赋值
+= 加法赋值 -=减法赋值 *=乘法赋值 /=除法赋值 %=取模赋值 **=幂赋值 //=取整除赋值
3.比较
==等于 !=不等于 >大于 <小于 >=大于等于 <=小于等于
4.逻辑运算
与and& 或or| 非Not!
5.成员运算
in序列包含制定对象返回Ture,否则返回False not in序列不包含制定对象返回Ture,否则返回False
6.运算符优先级,从高到低
- **
- *,/,%,//
- +,-
- <=,<,>,>=
- ==,!=
- =,%=,/=,//=,-=,+=,*=,**=
- in,not in
- and,or,not
条件控制
if else, if elif else
循环
一般形式:
while 判断条件:
代码块
无限循环形式
while Ture:
代码块
break终止全部的while循环
continue跳出当次循环,继续进去下一次循环
for循环,
1遍历列举式列表
lanaguages = ['china';'japan';'h';'m']
for x in lanaguages:
print(x)
2遍历range整数列表,range(n)生成(0,n)内的整数列表,最大值是n-1
函数
定义一个函数 用def关键字声明函数名
def 函数名(参数):
代码块
return ‘ok’
函数调用和参数传递
函数名调用函数
多个返回值
#指定默认参数
def hello(name,year='2020'):
print(name,year)
return ‘ok’,year
修改默认参数,直接对应传值就行
e,f=hello('www','2021') #e=ok f=2021
一个变量接受多个返回值,返回一个元组
同等数量的变量接收返回值,顺序对应接收
模块
内置模块,python标准库,安装python后自带的模块,导入后就可以使用
导入方法:导入整个模块 import 模块名 或者 导入模块中的某个方法 from 模块名 import 方法名
第三方模块
非自带,需要安装
用过python自带的pip工具安装 pip install 模块名
导入方法:导入整个模块 import 模块名 或者 导入模块中的某个方法 from 模块名 import 方法名
面向对象
类的定义:具有某些属性和方法的一类事物的定义,通过class关键字,类的名字一般首字母大写
属性就是定义类具有哪些特征,用变量来表示,定义类具有哪些功能,有函数来表示
类方法的定义和函数一样使用def关键字
类方法必须有一个额外的参数self(类的实例)
class Car:
color=''
size=''
def drive(self,direction):
print('drive'+direction)
def stop(self):
print('stop')
实力的创建
实例是根据类模板创建出的现实个体,也就是类的对象,一个类可以有多个实例,用过类名()的形式创建实例
实例拥有类的所有属性和方法
各实例的属性值和方法参数可以不用
mycar = Car()
mycar.color='white'
mycar.drive('forword')
mycar.stop()
print('wwww1'+mycar.color)
访问限制
类的私有属性
声明 __private_attr = xxx
不能在类外部被使用或直接访问
在类内部可以通过self.__private_attr访问
外界操作的实现方法
def get_shape(self): 获取私有属性,在类里定义的
return self.__shape
def set_shape(self,shape): 设置私有属性,在类里定义的
self.__shape=shape
类的私有方法
声明 def __private_method():
不能在类的外部调用
在类内部通过self.__private_method访问
实例的私有属性
声明:__private_attr = xxx
在构造函数‘__init__’中定义
其余与类的私有属性一样
类的继承
父类,被继承的类 BaseClass
子类,派生出来的类 Subclass
子类的定义
class SubclassName(BaseClassName):
pass
子类中可以定义自己的属性和方法
当子类中属性和方法声明和父类一样时,默认使用子类的
文件操作
打开文件 open()方法打开文件,并返回文件对象
open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=Ture,opener=None),标红参数为常用参数
file:必须,文件路径
mode:可选,文件打开模式 r读模式打开文件 w写模式打开文件,如文件已经存在,删除重新写,不存在则创建新文件
a追加模式打开文件,如文件已经存在,在文件末尾追加,不存在则创建新文件 b二进制格式打开文件
rb读二进制模式打开文件,一般用于多媒体文件 wb写二进制模式打开文件,一般用于多媒体文件
encoding:读写编码,一般使用utf-8
写文件
write(),将内容写入
file.write(str) file待写入文件对象,str待写入字符串
关闭文件
通过close()关闭文件
file.close() file关闭的文件对象
读取文件
open()方法打开文件后,使用read()方法读取
file.read([size]) file文件对象, [size]按指定缓存区大小逐步读取,不指定则一次性读取
用with操作文件更简单,文本文件读写
with open(xxx,'w') as file_handle: #xxx是文件地址 file_handle自定义文件对象名
file_handle.write(xxx)
with open(xxx,'r') as file_handle: #xxx是文件地址 file_handle自定义文件对象名
file_handle.read(xxx)
二进制流
bdflow = b'' 这就是空的二进制流(b'')
bdflow = b''
with open(‘xxx.gif’,'rb') as f: #xxx是文件地址 f自定义文件对象名
bdflow = f.read() 这样就可以把图片读出来
with open(‘xxx1.gif’,'wb') as f: #xxx是文件地址 f自定义文件对象名
f.write(bdflow) 这样就可以把图片写进文件夹里
错误处理和调试
语法错误判断
常见错误,代码词写错,语法不正确等等 提示:SyntaxError:invalid syntax
异常处理
运行过程中因变量取值或逻辑问题触发的错误,程序没有语法错误,可以正常启动
BaseException 所有异常的基类
Exception 常规错误的基类
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
EnvironmentError 操作系统错误的基类
Warning 告警的基类
try:
觉得异常的代码
except xxxError: #BaseException as err 常见错误,简写成err
异常之后的处理
finally:
不管异常与否都会执行
print辅助调试
直接打印看
基于pycharm调试