Python笔记

3.2k words

安装与使用

  1. pip提速,使用国内源
1
2
3
4
#清华源
pip install xxx --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
#阿里云
pip install xxx --upgrade -i http://mirrors.aliyun.com/pypi/simple/

永久修改:

1
2
3
4
5
6
7
#打开配置,windows下C:/Users/xxxx/pip/pip.ini
vi ~/.pip/pip.conf
#输入以下内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
  1. pip搜索
1
2
pip install pip_search
pip_search xxxx
  1. 文件服务器
1
2
3
4
# python3
python3 -m http.server
# python2
python -m SimpleHTTPServer

基本语法

  1. 判断类型
1
2
3
4
5
#使用isinstance或type判断变量类型
#isinstance可判断父类,type不支持判断父类
test = A()
check = isinstance(test, A) #True
check = (type(test) == A) #True
  1. 运算
1
2
3
4
5
6
7
#数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
a = 10
b = 6
c = a / b #除法 1.66
d = a // b #整除 1
e = a % b #求模 4
f = 2 ** 3 #求幂 8
  1. 取反
1
2
a = False
b = bool(1 - a)
  1. 整型int
1
2
3
0b100 = 4   #二进制
0o100 = 64 #八进制
0x100 = 256 #十六进制

列表

1
2
3
4
5
6
7
8
9
10
11
# 创建一个由1到9的数字构成的列表
items1 = [x for x in range(1, 10)]
print(items1) # [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 创建一个由'hello world'中除空格和元音字母外的字符构成的列表
items2 = [x for x in 'hello world' if x not in ' aeiou']
print(items2) # ['h', 'l', 'l', 'w', 'r', 'l', 'd']

# 创建一个由个两个字符串中字符的笛卡尔积构成的列表
items3 = [x + y for x in 'ABC' for y in '12']
print(items3) # ['A1', 'A2', 'B1', 'B2', 'C1', 'C2']

元祖tuple

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a = 1, 10, 100, 1000
i, j, *k = a
print(i, j, k) # 1 10 [100, 1000]
i, *j, k = a
print(i, j, k) # 1 [10, 100] 1000
*i, j, k = a
print(i, j, k) # [1, 10] 100 1000
*i, j = a
print(i, j) # [1, 10, 100] 1000
i, *j = a
print(i, j) # 1 [10, 100, 1000]
i, j, k, *l = a
print(i, j, k, l) # 1 10 100 [1000]
i, j, k, l, *m = a
print(i, j, k, l, m) # 1 10 100 1000 []

Lambda

Lambda匿名函数的格式为:lambda 参数:表达式

  • 参数可以多个,中间以逗号隔开
  • 表达式只有一个,省略return
1
2
3
4
def sum(x, y):
return x + y
#使用lambda的形式为
sum = lambda x,y:x+y

Lambda经常与map函数同时使用,用于处理列表数据:

1
2
3
4
#计算数组内元素平方,[1,9,36]
list(map(lambda x:x**2, [1,3,6]))
#计算两组数组内元素之和,[3,7,11,15,19]
list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))

函数装饰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import random
import time

def record_time(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f'{func.__name__}执行时间: {end - start:.3f}秒')
return result
return wrapper

@record_time
def download(filename):
print(f'开始下载{filename}.')
time.sleep(random.randint(2, 6))
print(f'{filename}下载完成.')

@record_time
def upload(filename):
print(f'开始上传{filename}.')
time.sleep(random.randint(4, 8))
print(f'{filename}上传完成.')

download('MySQL从删库到跑路.avi')
upload('Python从入门到住院.pdf')

打包工具

pyinstaller 参数说明:

参数名 描述 说明
–distpath 生成文件放在哪里 默认:当前目录的dist文件夹内
–workpath 生成过程中的中间文件放在哪里 默认:当前目录的build文件夹内
-y 如果dist文件夹内已经存在生成文件,则不询问用户,直接覆盖 默认:询问是否覆盖
-a 不包含unicode支持 默认:尽可能支持unicode
–clean 在本次编译开始时,清空上一次编译生成的各种文件 默认:不清除
-D 生成one-folder的程序(默认) 结果是一个目录,各种第三方依赖、资源和exe同时存储在该目录
-F 生成one-file的程序 结果是一个exe文件,所有的第三方依赖、资源和代码均被打包进该exe内
-specpath 指定.spec文件的存储路径 默认:当前目录
-n 生成的.exe文件和.spec的文件名
–add-data 打包额外资源 用法:pyinstaller main.py –add-data=src;dest。
windows以;分割,linux以:分割
–add-binary 打包额外的代码 用法:同–add-data。
用binary添加的文件,pyi会分析它引用的文件并把它们一同添加进来
-c 显示命令行窗口
-w 不显示命令行窗口
-i 为main.exe指定图标 pyinstaller -i beauty.ico main.py
–version-file 添加版本信息文件 (Windows特有的参数) pyinstaller –version-file ver.txt

文件服务器

  • python3 -m http.server

  • python -m SimpleHTTPServer

判断模块是否存在

1
2
3
4
5
6
def exist_module(name)
try:
params = importlib.import_module(name)
return True
except Exception as e:
return False
Comments