Python3 Notes

Python3 Notes

Base Object Type
number(数字对象)
string(字符串对象)
bool (布尔对象)
None (空值对象)
tuple(元组对象)
list(列表对象)
dict (字典对象)
set(集合对象)
def (函数对象)
file (文件对象)
Module (模块对象)
Popen (系统命令对象)
JSON (JSON对象)
Thread (线程对象)
Time (时间对象)

Character Encoding
ASCII 美国信息交换标准代码
GBK, GB2312 中国大陆字符集编码
Unicode 世界通用字符集编码
UTF-8 可变长世界通用字符集编码

Pycharm Hotkey
Ctrl 选中代码并索引到第一个定义方法
Ctrl + Alt + 左箭头  返回快捷键
Ctrl + Shift + i 快速预览实现方法
Shift + F6  代码只能重构

Feature
x,y = x,y 可以进行多个赋值
x and y or z 可以进行连续表达式
def(x, y=100) 可以设定缺省值
[x] sequence索引 (x)方法,函数调用

Base Fuction
int 将对象转换为十进制数字类型
str 将对象转换为字符串类型
bytes 将对象转换为字节类型
bin 将十进制对象转换为二进制
oct 将十进制对象转换为八进制
hex 将十进制对象转换为十六进制
float 将对象转换为浮点数类型
len 返回sequence类型对象长度
type 返回对象数据类型
range 生成范围内数组 (start, end, step)

Sequence Method
count 返回元素在对象内出现的次数
append 将元素插入至对象开头
insert 将元素插入对象索引位置
index 返回参数对象在对象内的索引
reverse 将列表内的元素倒序排放
sort 将列表内的元素排序 A-Z 0-9
remove 根据元素删除列表中的元素
pop 根据索引位置剔除列表中的元素
split 按分隔符将字符串元素切割入列表
splitlines 按行将字符串元素切割入列表
join 将列表元素使用分隔符区分组装字符串
find 返回元素在字符串内的索引位置
strip 将字符串的字符元素剔除
lstrip 将字符串开头的字符元素剔除
rstrip 将字符串末尾的字符元素剔除
replace 替换字符串内的元素
startswith 返回元素是否为字符串开头
endswith 返回元素是否为字符串结尾
isdigit 返回字符串是否为纯数字
encode 将字符串使用字符集编码为字节串
decode 将字节串使用字符集解码为字符串
items 字典方法 返回将键值对为元组 组成的列表
keys 字典方法 返回字典中所有值组成的列表
clear 字典方法 清除字典中的所有键值对
update 字典方法 合并两个字典对象

Str Format
r’ 字符串r表示字符串不会被\转意
f‘ 对象x为 {x} 对象y为 {y} ’ 将变量插入字符串
{x:10} 指定插入字符串宽度为10并设定左对齐
{x:<10} 指定插入字符串宽度为10并设定右对齐
{x:<010} 指定数据对象不足宽度补0
{x:<10.1f} 设定宽度为10并保留一位小数
{Int:x} 将对象转化为小写十六进制
{Int:X} 将对象转化为大写十六进制

Keywords
return 返回对象数据并终止函数
yield 返回一个生成器并终止函数
break 终止当前循环
continue 结束循环并进入下一个循环
global 创建一个全局变量
nonlocal 声明非局部变量

Class Logic
类是蓝图,实例是根据蓝图生产出来的产品
类有静态方法和实例化方法
@staticmethod 静态方法装饰器
self 为实例化对象本身
def __init__(self) 初始化实例对象及入口点
不能直接通过类访问实例化属性
类的静态方法无法访问实例属性
class 子类(父类) 将继承父类对象所有属性方法
子类对象在继承的基础 可以拥有自己的属性方法
从新定义函数会覆盖掉父类对象函数
子类初始化实例及入口点要先调用父类的初始化
子类对象可以重新定义父类的属性和方法
子类对象可以无限继承嵌套父类
类对象可以组合在另外一个类对象之中
super 找到子类的父类并自动传入self

Module Logic
import x 导入x模块,但不读取对象到本地
from x import y  从x模块读取y对象到本地
from x import * 从x模块读取所有对象到本地
from x import y as z 读取y对象并取别名为z
from x import y, z, a 读取多个对象
parkage   __init__.py  包入口文件
from x.y.z import a 读取x包内的模块的a对象
sys.path.append  添加环境变量包文件
SYS:PATH:PythonPath  系统默认包环境变量

Exception handling
try except  若try出现解释器报错处理except
try except except 可处理多个except异常
except Exception as e 捕获未知异常
finally 无论是否发生异常都执行代码块
raise 定义自定义错误时,抛出异常类型
traceback.format_exc 返回出问题的line
函数调用栈会返回上级执行异常处理代码

Statement Logic
if 关键字判断对象成立后运行缩进语句块
while 判断对象成立后循环运行缩进语句块
with as 创建一个可自动进行close的对象
for x in y 取出sequence元素并依次循环运行
for num in range() 使用数字迭代器进行循环语句
[num*2  for num in list1 ]  列表推导式语句
for x, y in dict.items() 遍历字典键值对

Expression
+= 合并两个对象表达式
== 判断两个对象是否为相等
!= 判断两个对象是否为不相等
in 返回元素是否存在于数据对象内
not in 返回元素是否不存在于数据对象内
> 判断数字对象前者是否大于后者
>= 判断数字对象前者是否大于等于后者
< 判断数字对象前者是否小于后者
<= 判断数字对象前者是否小于等于后者
not 判断条件是否为不成立
and 判断两个条件是否都为成立
or 判断两个条件是否有一个为成立
is 判断两个变量是否指向同一个对象

Decorator Logic
装饰器即为装饰器将一段代码进行更新
def 装饰器(func):
      def 装饰逻辑代码()
               ……
return 装饰逻辑代码
@装饰器 使用装饰器装饰函数

File Method And Mode
Class = open 将文件载入为对象
param = mode 指定打开文件的模式
param = encoding 指定读写文本使用的编码
mode = r  只读模式打开
mode = w  写入模式打开
mode = a  追加模式打开
mode = b 用字节模式打开
close  关闭文件对象
write  写入文件对象
read  文件读取到对象
read-param  read(size) 指定数据大小读取文件
readlines 将文本对象的数据逐行读取到列表对象

External program
os.system 直接发送执行shell命令
BPG = subprocess 更多调用外部程序功能库
Class = Popen 创建执行命令对象
MOBJ = PIPE 通讯运输管道
param = args 需要执行的命令行 Str
param = stdin 标准输入  OBJ
param = stdout 标准输入 OBJ
param = stderr 标准错误 OBJ
param = shell 是否使用命令行执行 Bool
Method = communicate返回o,e元组字节串

Multithreading
一个线程就代表了一个代码执行的序列
BPG = threading 系统调用线程库
Class = Thread 创建线程类对象
param = target 指定新线程的入口函数对象
param = args 指定入口函数需要的参数
Method = start 创建线程运行入口函数对象
Method = join 等待线程对象结束再往下执行
Class = Lock 创建线程数据锁对象
Method = acquire 获取锁状态并等待
Method = release 释放数据锁

JSON Logic
Method = dumps 序列化数据对象转为JSON
Method = loads 反序列化JSON转为数据对象

Socket Method
Method = bind 绑定socket服务端地址
Method = listen 设定socket为监听状态
Method = accept 创建新的对象及地址元组
Method = connect 连接服务端
Method = recv 接受信息(BUFLEN)
Method = send 发送信息

Time Method
time.time 返回1970至今经过的秒数
datetime.now 返回当前时间
strftime(‘%Y:%m’) 格式化为字符串时间
time.mktime(time.strptime) 格式化为整数时间
# 年 >>> datetime.now().year
# 月 >>> datetime.now().month
# 日 >>> datetime.now().day
# 时 >>> datetime.now().hour
# 分 >>> datetime.now().minute
# 秒 >>> datetime.now().second
# 毫秒 >>> datetime.now().microsecond
# 星期几 >>> datetime.now().weekday() 

Regular expression
Parkage = re  正则表达式模块
OBJECT = compile 传入表达式返回Pattern对象
Method = findall 返回列表包含所有匹配的字串
Method = split 切割字符串
Method = sub 使用回调函数替换字符串
Method = re.M 以多行模式进行匹配
Method = re.A 只匹配ASCII编码的字符

常见语法
. 表示要匹配除换行符之外的任何单个字符
* 表示匹配前面的子表达式任意次,包括0次
+表示匹配前面的子表达式一或多次不包括0次
? 表示匹配前lu面的子表达式0次或1次
{3,4} 花括号表示 前面的字符匹配 指定的次数 非贪婪模式
非贪婪模式,在星号后面加上 ? ,变成这样 <.*?>对元字符的转义
\* 表示将元字符转意匹配某种字符类型
\d 匹配0-9之间任意一个数字字符,等价于表达式 [0-9]
\D 匹配任意一个不是0-9之间的数字字符,等价于表达式 [^0-9]
\s 匹配任意一个空白字符,包括 空格、tab、换行符等,等价于表达式 [\t\n\r\f\v]
\S 匹配任意一个非空白字符,等价于表达式[^\t\n\r\f\v]
\w 匹配任意一个文字字符,包括大小写字母、数字、下划线,等价于表达式 [a-zA-Z0-9_]
缺省情况也包括 Unicode文字字符,如果指定 ASCII 码标记,则只包括ASCII字母
\W 匹配任意一个非文字字符,等价于表达式 [^a-zA-Z0-9_]
方括号-匹配几个字符之一
[abc] 可以匹配 a, b, 或者 c 里面的任意一个字符。等价于 [a-c] 。
如果你想匹配所有的小写字母,可以使用 [a-z]
[akm.] 匹配 a k m . 里面任意一个字符
这里 . 在括号里面不在表示 匹配任意字符了,而就是表示匹配 . 这个 字符
如果在方括号中使用 ^ , 表示 非 方括号里面的字符集合
起始、结尾位置
^ 表示匹配文本的 开头 位置
如果是 单行模式 表示匹配 整个文本 的开头
如果是 多行模式 表示匹配 文本每行 的开头
$ 表示匹配文本的 结尾 位置。
如果是 单行模式 表示匹配 整个文本 的结尾
如果是 多行模式 表示匹配 文本每行 的结尾
括号-分组
括号称之为 正则表达式的 组选择
组 就是把 正则表达式 匹配的内容 里面 其中的某些部分 标记为某个组
我们可以在 正则表达式中 标记 多个 组
当有多个分组的时候,我们可以使用 (?P<分组名>...) 这样的格式,给每个分组命名。
切割字符串
re.split(r'[;,\s]\s*', names)
正则表达式 [;,\s]\s* 指定了,分割符为 分号、逗号、空格 里面的任意一种均可,并且 该符号周围可以有不定数量的空格。
指定替换函数
re.sub(r'/av(\d+?)/', subFunc , names)
match.group(0) # 获取整个匹配字符串
match.group(1) # 获取第1个组内字符串
match.group(2) # 获取第2个组内字符串


——————————————————————-


Python3 MySQL

MySQL Shell 
mysql -uroot -p 使用root账户连接数据库
mysqldump –u username –p --databases dbname > data.sql 导出数据文件
mysql –u username –p  < data.sql 导出数据文件

Type of Data
int 数字类型
smallint 小型数字类型
varchar 字符串类型
DATETIME 精准时间类型
DATE 日期类型

SQL Keywords
SHOW  列出数据内容
CREATE 创建数据内容
DROP 删除数据内容
RENAME 更改数据命名
ALTER 更改数据内容
USE 选中数据库
INSERT 插入数据库内容
SELECT 查询表内容
UPDATE 修改表内容
DELETE 删除表内容

Database structure
DATABASE 数据库
TABLE 表
LIST 列
RECORD 记录

SQL Operation case
CREATE DATABASE byhy CHARACTER SET utf8mb4  COLLATE utf8mb4_unicode_520_ci;
# 创建数据库
CREATE TABLE user (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(150)  NOT NULL,
  `password` varchar(128)  NOT NULL,
  `realname` varchar(30)  NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB;
# 创建表
ALTER TABLE user ADD `description` varchar(850) NOT NULL, ADD `qq` varchar(20) NOT NULL;
#添加列
ALTER TABLE user DROP ‘list1‘ , DROP ‘list2’;
#删除列
ALTER TABLE user CHANGE  `realname` `realname1`  varchar(30) NOT NULL;
#修改列名
INSERT INTO user (username,`password`,realname) VALUES ('byhy1','password1','baiyueheiyu1');
#插入记录
INSERT INTO user (username,`password`,realname) VALUES 
    ('byhy2','password2','白月黑羽2'),
    ('byhy3','password3','白月黑羽3'),
    ('byhy4','password4','白月黑羽4'),
    ('byhy5','password5','白月黑羽5');
#增加多条记录
INSERT INTO `order` (title,place_time,due_date) VALUES 
    ('手机订单1','2019-05-04 10:01:00','2019-05-06');
#插入时间记录
select * from user;
#查询表中所有的列的记录
select id,username  from user;
#查询id和username列中的记录
select *  from user where username='byhy3';
select *  from user where id=2;  等于
select *  from user where id!=1;  不等于
select *  from user where id>3; 小于
select *  from user where id<3; 大于
select *  from user where id>=3; 大于或等于
select *  from user where id<=3; 小于或等于
#where过滤条件查询
/* 以 byhy 开头*/
select *  from user where username like "byhy%";
/* 以 33 结尾*/
select *  from user where username like "%33";
/* 以 byhy 开头 并且 以 33 结尾*/
select *  from user where username like "byhy%33";
/* 包含 byhy */
select *  from user where username like "%byhy%";
#where包含条件查询
/* id 在指定集合里面 */
select * from user where id in (1,2,3);
/* usernmae 在指定集合里面 */
select * from user where username  in ("byhy1","byhy2");
#where使用in集合查询
select *  from customer1 where id > 10 and level<15;
#where使用and表达式查询
update customer1 set coin=100 where username='cus16';
#修改记录语句
update customer1 set coin=100,level=30 where username='cus16';
#可以使用where表达式并修改多个值
delete from customer1  where username='cus16';
#删除记录语句

*查询删除修改全部通过where语句,并可以进行表达式条件限定过滤

CREATE INDEX index_username ON customer2 (username)
#创建索引
CREATE UNIQUE INDEX username ON customer4(username);
“““
若添加记录username已经存在,就会报错,如下
Duplicate entry 'cus01' for key 'username'
“““
#创建唯一索引
CREATE TABLE customer1 (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(150)  NOT NULL,
  `level` int NOT NULL,
  `coin` int NOT NULL,
  PRIMARY KEY (id)
) ;
#创建表并设置默认主键索引
CREATE TABLE customer7 (
  id       int NOT NULL,
  username varchar(150)  NOT NULL,
  age      int  NOT NULL,
  coin     int NOT NULL,
  INDEX (age,coin)
) ;
CREATE TABLE customer8 (
  id       int NOT NULL,
  username varchar(150)  NOT NULL,
  age      int  NOT NULL,
  coin     int NOT NULL,
  UNIQUE  (username,age)
) ;
CREATE TABLE customer9 (
  id       int NOT NULL,
  username varchar(150)  NOT NULL,
  age      int  NOT NULL,
  coin     int NOT NULL,
  PRIMARY KEY  (id,username)
) ;
#若业务需要经常使用where过滤多列条件,可以创建多列索引
CREATE TABLE `order` (
  id      int NOT NULL AUTO_INCREMENT  PRIMARY KEY,
  name    varchar(150)  NOT NULL,
  user_id      int  NOT NULL,
  medicine_id  int  NOT NULL,
  FOREIGN KEY (user_id)
   REFERENCES user(id)
   ON UPDATE CASCADE
   ON DELETE RESTRICT,
  FOREIGN KEY (medicine_id)
   REFERENCES medicine(id)
   ON UPDATE CASCADE #递归
   ON DELETE RESTRICT #禁止
) ;
#给表添加外键
-- 1. 创建一个 多条SQL语句 事务
START TRANSACTION;
-- 2. 更新book 表
update book set status=1 where id=888;
-- 3. 更新 borrow表
insert into borrow  (user_id,book_id) VALUES (666,888);
-- 4. 提交事务 
COMMIT;
-- 或者回滚事务
ROLLBACK;
创建事物处理

Python Code
建议版本 mysqlclient1.3.12
包名: MySQLdb
Method = connect 创建一个数据库连接对象
Param = host 主机名
Param = user 数据库连接用户名
Param = password 数据库连接密码
Param = db 指定要访问的数据库名
Param = charset 指定字符串编码
Method = cursor 创建一个cursur游标对象
Method = execute执行SQL语句
Method = rowcount 返回表中有几行语句
Method = fetchone 以元组形式返回一行记录
Method = fetchmany(count) 以大元组返回多行
Method = fetchall 返回所有行
connect-Method = commit 提交修改数据
connect-Method = close 关闭数据库连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值