Python3
环境搭建
manjaro 配置 python 环境
Pip
yay -s python
默认已经安装,并且默认使用python3
安装pip
yay -s python3-pip
pip --version
2
使用 pip 管理包
# data science
pip install pandas -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install numpy -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install scikit-learn -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install scipy -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install matplotlib -i https://pypi.mirrors.ustc.edu.cn/simple/
# rabbitmq
pip install pika
# redis
pip install redis
2
3
4
5
6
7
8
9
10
11
查看已安装的包
pip list
Anaconda
使用 Anaconda 统一管理 Python 环境
官网下载:https://www.anaconda.com (opens new window)
配置环境变量
D:\Env\Anaconda
D:\Env\Anaconda\Scripts
D:\Env\Anaconda\Library\bin
D:\Env\Anaconda\Library\mingw-w64\bin
2
3
4
创建环境
conda create --name py310 python=3.10
删除环境
conda remove -n py310 --all
激活环境
activate py310
在环境内,可以通过 pip 或者 conda 命令对各种包进行下载
pip install pika
conda install redis
2
VSCode
插件
- Python
- YAML
- Jupyter
- Pylance
常用函数
计算
函数 | 返回值 ( 描述 ) |
---|---|
abs(x) (opens new window) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) (opens new window) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
cmp(x, y) (opens new window) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 |
exp(x) (opens new window) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) (opens new window) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
floor(x) (opens new window) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
log(x) (opens new window) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) (opens new window) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,...) (opens new window) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,...) (opens new window) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) (opens new window) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) (opens new window) | x**y 运算后的值。 |
round(x n (opens new window) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
sqrt(x) (opens new window) | 返回数字x的平方根 |
随机数
需要导包:import random
函数 | 描述 |
---|---|
choice(seq) (opens new window) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
randrange (start,stop, step) (opens new window) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1 |
random() (opens new window) | 随机生成下一个实数,它在[0,1)范围内。 |
seed(x) (opens new window) | 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。 |
shuffle(lst) (opens new window) | 将序列的所有元素随机排序 |
uniform(x, y) (opens new window) | 随机生成下一个实数,它在[x,y]范围内。 |
三角函数
函数 | 描述 |
---|---|
acos(x) (opens new window) | 返回x的反余弦弧度值。 |
asin(x) (opens new window) | 返回x的反正弦弧度值。 |
atan(x) (opens new window) | 返回x的反正切弧度值。 |
atan2(y, x) (opens new window) | 返回给定的 X 及 Y 坐标值的反正切值。 |
cos(x) (opens new window) | 返回x的弧度的余弦值。 |
hypot(x, y) (opens new window) | 返回欧几里德范数 sqrt(xx + yy)。 |
sin(x) (opens new window) | 返回的x弧度的正弦值。 |
tan(x) (opens new window) | 返回x弧度的正切值。 |
degrees(x) (opens new window) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 |
radians(x) (opens new window) | 将角度转换为弧度 |
数学常量:
常量 | 描述 |
---|---|
pi | 数学常量 pi(圆周率,一般以π来表示) |
e | 数学常量 e,e即自然常数(自然常数)。 |
类型转换
函数 | 描述 |
---|---|
int(x [,base]) | 将x转换为一个整数 |
long(x [,base] ) | 将x转换为一个长整数 |
float(x) | 将x转换到一个浮点数 |
complex(real ,imag) (opens new window) | 创建一个复数 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组。 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
unichr(x) | 将一个整数转换为Unicode字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
字符串
获取长度
length = len(cur)
分割字符串
#通过空格分割字符串str为字符串数组
str.split(" ")
2
数字转字符串,字符串的拼接只能在字符串之间,若想拼接字符串和数字,需要先用str函数将数字转为字符串
str(number)
输入输出
输入函数input可以附带提示信息
str = input('请输入字符串:')
输出并选择后缀
print("hahaha", end='\t')
ASCII码
字符转ascii码
ord(char)
ascii码转字符
chr(ascii)
URL
import urllib
import urllib.parse
2
特殊之处
运算符
身份运算:
- is
- is not
成员运算:相当于instanceof
- in
- not in
算术运算
- //:向下取余
- %:向上取余(一般用这个)
- **:幂运算
逻辑运算
- and
- or
- not
字符串
用[ : ]截取字符串:
- string[n:m]:可用于截取从n到m的子字符串(字符下标从0开始)
- string[n:]:截取从n开始到结束的子字符串
sentence = "我打你妈的"
print(sentence[2:5])
#将会输出 “你妈的”
2
3
注意:截取字符串时,将从下标为n开始,到下标为m前一个元素结束,即含头不含尾
return 和 yield
return是阻塞的,单线程的,和Java中return保持一致
而yield是非阻塞的,如下列函数通过yield返回
def user_input():
while True:
s = input()
if not s:
return
yield s
for line in map(str.upper, user_input()):
print(line)
2
3
4
5
6
7
8
9
yield非阻塞,这意味着获得值后,将新开辟一条线程立即返回,继续执行之后的代码,同时这个函数继续运行
如上述代码的执行过程为
hello
HELLO
world
WORLD
2
3
4
而非
hello
world
HELLO
WORLD
2
3
4
类的书写
self
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self,代表类的实例,而非类本身
class Test:
def prt(self):
print(self)
print(self.__class__)
t = Test()
t.prt()
2
3
4
5
6
7
类函数的定义
头尾双下划线、单下划线、双下划线
1、__func__
:定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的
2、_foo
:以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import
3、__foo
:双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了
类的继承
class Parent: # 定义父类
parentAttr = 100
def __init__(self):
print "调用父类构造函数"
def parentMethod(self):
print '调用父类方法'
def setAttr(self, attr):
Parent.parentAttr = attr
def getAttr(self):
print "父类属性 :", Parent.parentAttr
class Child(Parent): # 定义子类
def __init__(self):
print "调用子类构造方法"
def childMethod(self):
print '调用子类方法'
c = Child() # 实例化子类
c.childMethod() # 调用子类的方法
c.parentMethod() # 调用父类方法
c.setAttr(200) # 再次调用父类的方法 - 设置属性值
c.getAttr() # 再次调用父类的方法 - 获取属性值
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
不定长参数
带星号的参数即为不定长参数(名字随意)
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return
# 调用printinfo 函数
printinfo( 10 ) printinfo( 70, 60, 50 )
2
3
4
5
6
7
8
9