Python基础
Python的基础数据类型
- 字符串(String)
- 数字(Number)
- 容器(Container)
- 布尔值(Bool)
- 空值(None)
基础运算符
+ - * /:表示常用的加减乘除//:表示整除
py
>>> 3//2
1%:求余数
py
>>> 3%2
1进制表示
py
# 十六禁止
>>> 0xAF
175
# 十进制
>>> 10
10
# 八进制
>>> 0x0
0字符串(String)
字符串使用单引号'str'或双引号"str"表示,是不可变类型。
数字(Number)
数字类型分为两种:
- 整数(int)
- 浮点数(float)
容器(Container)
容器按用途不同分为4种:
- 列表(List)
- 元组(Tuple)
- 集合(Set)
- 字典(directory)
列表
列表使用中括号表示,如:[int,str,[int,str]],列表内的元素可以是不同类型,支持数字、字符串、嵌套列表。
可以对列表进行增、删、改、查、索引、截取、求长度、切片访问。
元组
元组是一种序列,就像列表一样,但元组不能改变元素的值,可以简单理解为"只读列表"。是使用括号表示(int,str)。
集合
集合是一个无序不重复元素的序列,使用花括号表示{int,str}。
集合一般用来进行成员关系测试,以及删除重复元素。
定义一个空集合必须使用set()函数。
字典
字典也是一种可变容器模型,可以存储容易类型的对象,键值使用:分隔,键值对使用,分隔,整个字典使用花括号表示{key1:value1,key2:value2},键必须是唯一的。
布尔值(Bool)
在Python中通常使用True和False来表示,布尔是int的子类(继承int),判断True==1、False==0时,其返回结果时True。
空值(None)
空值是Python语言里的一个特殊值,表示一个空对象,可以赋值给任何变量,常用于初始化。
函数
使用def 函数名(参数列表):方式定义函数
python
def 函数名(参数1,参数2):
xxx
return条件判断
python
if xxx:
xxx
elif xxx:
xxx
else:
xxx循环
python
for i in list:
if i==1:
print(i)
continue
if not i==2
print(i)
break
if i==3
pass类
python
class Student(Object):
#公开属性
name = None
age = 0
#私用属性
__sex = 'man'
#构造方法、魔法方法
def __init__(self,name,age):
self.name=name
self.age=age
#实例方法
def getName(self):
return self.name
#私有实例方法
def __getAge(self):
return self.age
#类方法
@classmethod
def getClassName(cls):
return cls.name
#静态方法
@staticmethod
def staticmethodName():
print("static method")变量命名方式
建议用“变量名称”+数据类型的形式命名变量
变量
环境管理
虚拟环境管理工具
- virtualenv:Python 虚拟环境管理工具。
- venv:Python 标准库内置的虚拟环境管理工具,Python 3.3 加入,Python 3.5 开始作为管理虚拟环境的推荐工具,用法类似 virtualenv。如果你使用 Python 3,推荐使用 venv 来替代 virtualenv。
- pipenv
- poetry
- Conda
使用虚拟环境
- 选择一个目录用于存储你的项目,并在该目录下打开命令行,执行以下脚本创建虚拟环境。
bash
python3 -m venv venv第二个venv是你的虚拟环境的名称,可以随意取名。
- 激活虚拟环境
bash
# window下命令
venv\Scripts\activate
# linux下命令
source venv/bin/activate- 导入依赖
python
pip install -r requirements.txt- 导出依赖
python
pip freeze > requirements.txt- 退出虚拟环境
bash
deactivatepy文件打包成exe
使用pyinstaller进行打包。
- 执行命令安装pyinstller。
cmd
pip install pyinstaller- 执行命令对py文件进行打包。
cmd
Pyinstaller -F -w -i xx.ico setup.py- -F:表示覆盖打包,每次打包后,文件都是最新的。
- -w:不带控制台的打包
- -i:指定exe图标打包
使用nuitka进行打包
- 安装nuitka
cmd
python -m pip install nuitka- 验证安装信息
cmd
python -m nuitka --version- 简单打包
cmd
python -m nuitka hello.py- 列出支持的插件
cmd
nuitka --plugin-list其他选项:
--mingw64:使用mingw64编译器--standalone:用于分发,会打包成一个文件夹。将文件夹复制到另一台电脑上即可运行。--onefile:用于分发,会打包成单文件。--follow-imports:跟踪并编译所有导入的模块。--follow-import-to:指定了在编译时需要跟踪并打包的特定模块或包。--nofollow-imports:禁用跟踪所有导入的模块,告诉 nuitka 不要自动打包依赖的模块。-nofollow-import-to:指定了在编译时不需要跟踪并打包的特定模块或包。--include-plugin-directory:如有无法通过递归找到的py文件,可通过这个命令包含到每次打包中。--include-module--include-package--include-package-data--output-filename:输出的文件名--output-dir=out:指定输出的目录--model=module:将python编译为模块,将.py文件编译为.so文件。--include-data-files=<source>=<target>:包含数据文件--include-data-dir:包含数据文件夹--lto=yes:是否使用LTO编译--show-memory --show-progress:展示打包过程--enable-plugin:启用插件--windows-icon-from-ico=./logo.ico:指定生成exe文件的图标--windows-disable-console:关闭控制台
__compiled__.containing_dir 引入打包后文件的当前目录。
py
# This will find a file *near* your app or dist folder
try:
open(os.path.join(__compiled__.containing_dir, "user-provided-file.txt"))
except NameError:
open(os.path.join(os.path.dirname(sys.argv[0]), "user-provided-file.txt"))包目录: D:\Python\Python310\python310.dll D:\Python\Python310\DLLs
linux下编译python
- 在python官网找到版本源码,然后下载到linux。
sh
wget https://www.python.org/ftp/python/3.10.18/Python-3.10.18.tgz- 安装编译依赖
sh
yum install -y gcc make zlib-devel bzip2-devel xz-devel \
openssl-devel libffi-devel ncurses-devel readline-devel \
sqlite-devel gdbm-devel tk-devel uuid-devel- 解压源码
sh
tar -zxvf Python-3.10.18.tgz- 进入到解压出来的目录
sh
cd Python-3.10.18/- 配置编译选项
sh
# 配置编译选项
# --prefix指定nginx的安装目录。
./configure \
--enable-optimizations \
--enable-shared \
--prefix=/root/python3.10/python-3.10.18-release \- 编译并安装
sh
# 编译并安装
make
sudo make install