首页
高清壁纸
友情链接
留言板
关于我
推荐
小彬官网
旗下站点
QQ交流群
Search
1
个人网站搭建教程 | 网站搭建图文视频教程
8,705 阅读
2
2025彩虹易支付程序源码+开源版无加密
2,004 阅读
3
苏画响应式个人导航主页源码
1,937 阅读
4
清新简约的个人引导网页
1,934 阅读
5
表白墙PHP源码【新改】
1,899 阅读
技术分享
技术教程
其它分享
个人笔记
C#笔记
Python笔记
软件仓库
电脑软件PC
手机软件CP
网站源码
HTML网页
PHP程序
代码脚本
点点滴滴
登录
Search
标签搜索
HTML
C#
引导页
个人导航
个人主页
个人笔记
Python
BBR
网站搭建教程
翻译源码
个人网页
搭建博客
小站网页
个人引导网页
表白页
七夕
情人节
工具
FinalShell
点击特效
彬彬
累计撰写
46
篇文章
累计收到
781
条评论
首页
栏目
技术分享
技术教程
其它分享
个人笔记
C#笔记
Python笔记
软件仓库
电脑软件PC
手机软件CP
网站源码
HTML网页
PHP程序
代码脚本
点点滴滴
页面
高清壁纸
友情链接
留言板
关于我
推荐
小彬官网
旗下站点
QQ交流群
搜索到
2
篇与
的结果
2025-09-04
Python常规代码
## 学习1-条件判断 ```python 炒饭 = 45 水饺 = 50 鸡腿 = 60 点餐=input('想吃什么?A:炒饭,B:水饺。 ').upper().strip() # 以下属于函数直接放后面,简写 # 点餐 = 点餐.upper() # 全部转换为大写 # 点餐 = 点餐.strip() # 去掉空格 加餐=input('请问你是否需要加鸡腿?Y:是,N:否。 ').upper().strip() if 点餐=="A": if 加餐=="Y": print(f"当前炒饭加鸡腿的价格是{炒饭+鸡腿}元") else: print(f"炒饭的价格是{炒饭}元") elif 点餐=="B": if 加餐=="Y": print(f"当前炒饭加鸡腿的价格是{水饺+鸡腿}元") else: print(f"水饺的价格是{水饺}元") else: print("对不起,没有这个产品") ``` ## 学习2-列表函数 ```python 打招呼="大家好,我是你大哥!,你知道吗!" print(len(打招呼)) #使用len,获取字符长度 print(list(打招呼)) #使用list,拆分所有的字为列表 print(打招呼.split(",")) #使用split,使用文本中包含的特定符号进行分割成列表 print(打招呼.find("我")) #查找对应索引值位置,未找到时会返回-1 #--------------------------------------------- 菜单=["炒饭","水饺","牛肉面","烤羊肉","鸡腿","烤鱼"] 菜单2=["蛋糕","冰淇淋"] #----------【取值】---------- print(len(菜单)) #使用len,获取列表数量 print(菜单[1]) print(菜单[1:3]) #取中间值(顾前不顾后,3的值不包含) print(菜单[1:]) #取索引1与之后的值 print("-".join(菜单)) #使用join将列表用特定符号连接起来,可以为空 print(菜单.index("牛肉面")) #1.获取数据对应位置,得到索引值,列表中多个相同值,会取第一个 print(菜单.index("牛肉面"),3) #2.获取数据对应位置,得到索引值,增加值,可以从当前索引值往后查找 #----------【增加修改】---------- 菜单[1] = "肉卷" #将列表对应索引值的内容进行修改替换 菜单.append("烤鸭") #使用append方法,添加一个值到列表后面 菜单.extend(["烤肉","烤鱼"]) #使用extend方法,可以设一个列表内容添加在后面 print(菜单+菜单2) #使用相加的方式将两个列表拼接 菜单.insert(1,"水煮肉片") #使用insert方式插入数据到指定位置,还可以使用列表方式插入["烤肉","烤鱼"]【会变成二维列表】 #----------【删除】---------- 菜单.remove("水饺") #使用remove删除列表中的对应内容 菜单.pop() #为空时,默认删除最后一个函数 ,可以设置索引值删除对应内容 被删除的元素 = 菜单.pop(2) #可以打印删除的元素并赋值 菜单.clear() #清空列表 #----------【判断】---------- if "水饺" in 菜单: ##使用in判断对应值是否在列表中 使用not in可以取反 print("炒饭在列表中") #----------【排序】---------- 菜单.sort() #使用sort将相似的内容进行重新排序 菜单=sorted(菜单,reverse=False) #与sort类似,但此方式可以修改降序升序的排序方式,True为降序 False未升序 菜单.reverse() #将列表中内容前后逆转 print(菜单) ``` ## 学习3-循环函数 ```python 菜单 =["炒饭","水饺","牛肉面","鸡腿","烤鸭"] 饮料 =["可乐","雪碧","芬达"] for 餐品 in 菜单: #餐品为变量,将菜单的每一项赋值给餐品,打印输出来 print(餐品) for 文字 in "学习Python技术" : #字符串也可以依次循环打印出来 print(文字) #----------【for循环结束、跳过】---------- for 餐品 in 菜单: #使用break 终止循环 if 餐品 == "牛肉面": break print(餐品) for 餐品 in 菜单: #使用continue 跳过当前循环 if 餐品 == "牛肉面": continue print(餐品) #----------【for嵌套for】---------- 数量=0 for 餐品 in 菜单: #嵌套for循环,将每个元素进行搭配,类似数学中的笛卡尔积 for 饮品 in 饮料: print(f"{餐品}搭配{饮品}") 数量+=1 print("一个有"+str(数量)+"搭配!") #----------【for加if判断区分列表】---------- 数列=[1,2,3,-4,5,-6] 正数=[] 负数=[] for 数值 in 数列: if 数值>0: 正数.append(数值) else: 负数.append(数值) print(f"正数:{正数}\n负数:{负数}") #----------【for执行条件】---------- for 变量 in range(3): #使用range设置循环次数 print(变量) for 变量 in range(3,10): #range(起始值,结束值) print(变量) for 变量 in range(1,10,2): #range(起始值,结束值,递增值) print(变量) ```
2025年09月04日
1,398 阅读
19 评论
11 点赞
2025-07-31
Nuitka打包Python程序全面指南
## Nuitka打包Python程序全面指南 Nuitka是一个强大的Python编译器,能够将Python代码编译成C/C++代码并进一步编译为本地机器码,显著提升程序执行效率并简化部署过程。以下是使用Nuitka打包Python程序的详细指南。 ## 一、Nuitka简介与优势 Nuitka是一个完全兼容Python 2.6到3.12的Python编译器,它通过将Python代码转换为优化的C++代码并编译为本地可执行文件,提供接近原生代码的执行性能。与PyInstaller等打包工具相比,Nuitka具有以下显著优势: 性能提升:编译后的程序比解释执行的Python代码快2-10倍,特别适合计算密集型任务 更小的文件体积:通过优化和压缩技术生成更紧凑的可执行文件 更好的兼容性:支持几乎所有Python标准库和主流第三方库 跨平台支持:可生成Windows、Linux和macOS平台的可执行文件 代码保护:编译后的二进制文件比传统打包工具更难反编译 二、安装与环境准备 ## 1. 基础安装 使用pip直接安装Nuitka: ```abap pip install nuitka ``` 建议在虚拟环境中安装以避免依赖冲突: ```abap conda create -n EXE python=3.12.8 conda activate EXE pip install nuitka ``` ## 2. 系统依赖 Linux系统需要安装编译工具: ```abap sudo yum install -y gcc gcc-c++ python3-devel # CentOS sudo apt install patchelf # Ubuntu[1](@ref) ``` Windows系统需要安装MinGW64或Visual Studio的C++编译工具 ## 3. 可选工具 安装UPX可进一步压缩生成的可执行文件: ```abap wget https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-amd64_linux.tar.xz tar -xf upx-4.0.2-amd64_linux.tar.xz sudo cp upx-4.0.2-amd64_linux/upx /usr/local/bin/ ``` ## 三、基本打包命令 {message type="success" content="小经验提示: 1.打包一定要中文路径,不然会出现一些问题 2.建议放C盘打包,实测速度更快"/} 1. 简单打包 生成独立目录结构的可执行文件: ```abap nuitka --standalone --remove-output main.py ``` 生成单个可执行文件: ```abap nuitka --standalone --onefile --remove-output main.py ``` ## 2. 常用参数说明 ```abap --standalone:创建独立可执行文件,包含所有依赖 --onefile:将所有文件打包成单个可执行文件 --remove-output:删除临时缓存文件 -o:指定输出文件名 --enable-plugin=tk-inter:启用Tkinter插件支持 --windows-disable-console:禁用控制台窗口(适用于GUI应用) --include-data-files:包含额外数据文件 ``` ## 四、处理不同类型应用的打包 1. GUI应用打包 Tkinter应用: ```abap nuitka --standalone --onefile --enable-plugin=tk-inter your_gui_app.py ``` PyQt5应用: ```abap nuitka --standalone --onefile --enable-plugin=pyqt5 --include-module=PyQt5 your_pyqt_app.py ``` ## 2. Web应用打包 安装nuitka-web后打包Flask应用: ```abap pip install nuitka-web nuitka-web --flask your_flask_app.py ``` 或手动指定静态文件目录: ```abap nuitka --standalone --onefile \ --include-data-dir=templates=templates \ --include-data-dir=static=static \ --include-package=flask \ app.py ``` ## 3. 数据处理应用 打包使用NumPy、Pandas等科学计算库的应用: ```abap nuitka --standalone --onefile --include-package=numpy --include-package=pandas your_data_app.py ``` ## 五、高级优化与调试 1. 性能优化选项 ```abap --optimize=2:启用最高级别优化 --lto=yes:启用链接时优化,减小文件体积 --python-flag=no_asserts:禁用断言,提升性能 --jobs=$(nproc):使用多核并行编译加速打包 ``` 2. 调试选项 ```abap --debug:生成包含调试信息的二进制文件 --show-scons:显示SCons构建系统的详细输出 --show-memory:显示内存占用情况 ``` 3. 交叉编译 指定目标平台进行交叉编译: ```abap nuitka --standalone --recurse-all --target package:dir=bin,all your_script.py ``` ## 六、常见问题解决 缺少依赖库:手动包含缺失的包 ```abap nuitka --standalone --onefile --include-package=missing_package your_script.py ``` 文件体积过大:使用UPX压缩 ```abap nuitka --standalone --onefile --enable-plugin=upx your_script.py ``` 打包tkinter报错:确保主代码中添加import tkinter as tk Windows兼容性问题:使用--mingw64而非VS编译器 图标处理:PNG图标需安装imageio库,建议使用ICO格式 ## 七、最佳实践建议 版本选择:Nuitka 1.9.5和最新版本较为稳定 环境隔离:推荐使用虚拟环境而非Anaconda基础环境 路径处理:避免使用中文或空格路径 依赖管理:对于复杂项目,考虑将核心代码打包为pyd文件 持续集成:可集成到GitHub Actions等CI/CD流程中 通过合理配置Nuitka,您可以将Python应用高效地打包为高性能的可执行文件,实现真正的"一次编写,到处运行"。根据项目需求选择适当的打包策略和优化选项,可以在性能、文件体积和兼容性之间取得最佳平衡。 {callout color="#36e0f7"} ### 动态导入的模块未正确打包 pywinauto依赖comtypes.stream模块,但该模块可能通过动态导入方式加载(如运行时生成),导致PyInstaller/Nuitka等工具在打包时未能自动包含此模块 若使用Nuitka:添加--include-module参数 ```abnf nuitka --standalone --onefile --include-module=comtypes.stream Python.py ``` {/callout}
2025年07月31日
1,792 阅读
11 评论
40 点赞