Python3

5/15/2021 Python

环境搭建

manjaro 配置 python 环境

Pip

yay -s python 默认已经安装,并且默认使用python3

安装pip

yay -s python3-pip
pip --version
1
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
1
2
3
4
5
6
7
8
9
10
11

查看已安装的包

pip list
1

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
1
2
3
4

创建环境

conda create --name py310 python=3.10
1

删除环境

conda remove -n py310 --all
1

激活环境

activate py310
1

在环境内,可以通过 pip 或者 conda 命令对各种包进行下载

pip install pika
conda install redis
1
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)
1

分割字符串

#通过空格分割字符串str为字符串数组
str.split(" ")
1
2

数字转字符串,字符串的拼接只能在字符串之间,若想拼接字符串和数字,需要先用str函数将数字转为字符串

str(number)
1

输入输出

输入函数input可以附带提示信息

str = input('请输入字符串:')
1

输出并选择后缀

print("hahaha", end='\t')
1

ASCII码

字符转ascii码

ord(char)
1

ascii码转字符

chr(ascii)
1

URL

import urllib
import urllib.parse
1
2

详见文档 (opens new window)

特殊之处

运算符

身份运算:

  • is
  • is not

成员运算:相当于instanceof

  • in
  • not in

算术运算

  • //:向下取余
  • %:向上取余(一般用这个)
  • **:幂运算

逻辑运算

  • and
  • or
  • not

字符串

用[ : ]截取字符串:

  • string[n:m]:可用于截取从n到m的子字符串(字符下标从0开始)
  • string[n:]:截取从n开始到结束的子字符串
sentence = "我打你妈的"
print(sentence[2:5])
#将会输出 “你妈的”
1
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)
1
2
3
4
5
6
7
8
9

yield非阻塞,这意味着获得值后,将新开辟一条线程立即返回,继续执行之后的代码,同时这个函数继续运行

如上述代码的执行过程为

hello
HELLO
world
WORLD
1
2
3
4

而非

hello
world
HELLO
WORLD
1
2
3
4

类的书写

self

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self,代表类的实例,而非类本身

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
 
t = Test()
t.prt()
1
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()          # 再次调用父类的方法 - 获取属性值
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

不定长参数

带星号的参数即为不定长参数(名字随意)

def printinfo( arg1, *vartuple ):   
    "打印任何传入的参数"   
    print "输出: "   
    print arg1   
    for var in vartuple:      
        print var   
        return  
# 调用printinfo 函数 
printinfo( 10 ) printinfo( 70, 60, 50 )
1
2
3
4
5
6
7
8
9
Last Updated: 9/18/2024, 4:10:30 PM
妖风过海
刘森