Python 2 和 Python 3的差异
Python 2 和 Python 3 之间有许多差异,Python 3 是 Python 语言的更新版本,目的是解决 Python 2 中的一些设计缺陷,并引入更现代的编程方式。以下是 Python 2 和 Python 3 之间的一些主要区别:
文章目录
- 1. `print` 语句
- 2. 整除行为
- 3. Unicode 字符串处理
- 4. `range()` 函数
- 5. `xrange()` 的移除
- 6. 异常处理语法
- 7. `input()` 函数
- 8. 字典的 `items()`、`keys()` 和 `values()`
- 9. 函数的返回值
- 10. 标准库的变化
- 总结:
1. print 语句
- Python 2:
print是一个语句,可以不使用括号。 - Python 3:
print是一个函数,必须使用括号。
示例:
- Python 2:
print "Hello, World!" # 无括号 - Python 3:
print("Hello, World!") # 使用括号
2. 整除行为
- Python 2:
/操作符进行整数除法时,如果两个操作数是整数,它会进行 向下取整 的除法。 - Python 3:
/始终执行浮点数除法,即使是两个整数。
示例:
- Python 2:
print 3 / 2 # 输出 1 - Python 3:
print(3 / 2) # 输出 1.5 - 在 Python 2 中,使用
from __future__ import division可以启用 Python 3 的除法行为。
3. Unicode 字符串处理
- Python 2:字符串默认是 ASCII 编码,处理 Unicode 字符串需要使用
u"..."。 - Python 3:所有字符串默认都是 Unicode,使用更加便捷。
示例:
- Python 2:
u"你好,世界" # 必须显式加 `u` - Python 3:
"你好,世界" # 默认 Unicode,无需 `u`
4. range() 函数
- Python 2:
range()返回的是一个列表,生成所有数字并存储在内存中。 - Python 3:
range()返回的是一个生成器对象,使用时才会生成数字,节省内存。
示例:
- Python 2:
print range(5) # 输出 [0, 1, 2, 3, 4] - Python 3:
print(range(5)) # 输出 range(0, 5) list(range(5)) # 输出 [0, 1, 2, 3, 4]
5. xrange() 的移除
- Python 2:有
range()和xrange()两个函数,xrange()返回生成器,节省内存。 - Python 3:
xrange()被移除,range()具有与xrange()相同的功能。
6. 异常处理语法
- Python 2:异常处理使用
as关键字时,语法较为宽松,可以使用逗号。 - Python 3:异常处理必须使用
as关键字。
示例:
- Python 2:
try:raise ValueError("error") except ValueError, e: # 使用逗号print e - Python 3:
try:raise ValueError("error") except ValueError as e: # 必须使用 `as`print(e)
7. input() 函数
- Python 2:
input()会将用户输入的内容作为代码执行,存在安全隐患。raw_input()用来获取用户的字符串输入。 - Python 3:
input()返回的是字符串,raw_input()被移除。
示例:
- Python 2:
name = raw_input("Enter your name: ") # 使用 raw_input 获取字符串 - Python 3:
name = input("Enter your name: ") # input 返回字符串
8. 字典的 items()、keys() 和 values()
- Python 2:
items()、keys()和values()返回的是列表。 - Python 3:它们返回的是视图对象,可以使用
list()来转换为列表。
示例:
- Python 2:
my_dict = {'a': 1, 'b': 2} print my_dict.items() # 输出 [('a', 1), ('b', 2)] - Python 3:
my_dict = {'a': 1, 'b': 2} print(my_dict.items()) # 输出 dict_items([('a', 1), ('b', 2)]) print(list(my_dict.items())) # 输出 [('a', 1), ('b', 2)]
9. 函数的返回值
- Python 2:如果函数没有显式的
return语句,默认返回None。 - Python 3:与 Python 2 一样,但函数的行为在特定情况下更加严格。
10. 标准库的变化
- Python 3:很多标准库的模块有了重命名或调整,如
ConfigParser模块在 Python 3 中改名为configparser,Queue改为queue等。
总结:
Python 3 引入了许多改进,使得代码更加简洁、统一和现代化。Python 2 虽然仍被一些旧系统使用,但官方已经停止支持,因此新项目应该使用 Python 3。
相关文章:
Python 2 和 Python 3的差异
Python 2 和 Python 3 之间有许多差异,Python 3 是 Python 语言的更新版本,目的是解决 Python 2 中的一些设计缺陷,并引入更现代的编程方式。以下是 Python 2 和 Python 3 之间的一些主要区别: 文章目录 1. print 语句2. 整除行为…...
Leetcode 第 139 场双周赛题解
Leetcode 第 139 场双周赛题解 Leetcode 第 139 场双周赛题解题目1:3285. 找到稳定山的下标思路代码复杂度分析 题目2:3286. 穿越网格图的安全路径思路代码复杂度分析 题目3:3287. 求出数组中最大序列值思路代码复杂度分析 题目4:…...
spring 注解 - @NotEmpty - 确保被注解的字段不为空,而且也不是空白(即不是空字符串、不是只包含空格的字符串)
NotEmpty 是 Bean Validation API 提供的注解之一,用于确保被注解的字段不为空。它检查字符串不仅不是 null,而且也不是空白(即不是空字符串、不是只包含空格的字符串)。 这个注解通常用在 Java 应用程序中,特别是在处…...
深入理解华为仓颉语言的数值类型
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在编程过程中,数据处理是开发者必须掌握的基本技能之一。无论是开发应用程序还是进行算法设计,了解不同数据类型的特性和用途都至关重要。本文将深入探讨华为仓颉语言中的基本数…...
WPF 的TreeView的TreeViewItem下动态生成TreeViewItem
树形结构仅部分需要动态生成TreeViewItem的可以参考本文。 xaml页面 <TreeView MinWidth"220" ><TreeViewItem Header"功能列表" ItemsSource"{Binding Functions}"><TreeViewItem.ItemTemplate><HierarchicalDataTempla…...
使用Go语言的互斥锁(Mutex)解决并发问题
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在并发编程中,由于存在竞争条件和数据竞争,我们需要将某些代码片段设定为临界区,并使用互斥锁(Mutex)等同步原语来保护这些临界区。本文将详细介绍Go语言标准库中Mutex的使用方法,以及如何利用它来解决实际…...
Android平台Unity3D下如何同时播放多路RTMP|RTSP流?
技术背景 好多开发者,提到希望在Unity的Android头显终端,播放2路以上RTMP或RTSP流,在设备性能一般的情况下,对Unity下的RTMP|RTSP播放器提出了更高的要求。实际上,我们在前几年发布Unity下直播播放模块的时候…...
网络:TCP协议-报头字段
个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 文章目录 前言一、TCP协议格式16位源端口号 和 16位目的端口号4位首部长度16位窗口大小32位序号 和 32位确认序号6种标记位 和 16位紧急指针 总结 前言 本文是我对于TCP协…...
JAVA基础:HashMap底层数组容量控制,TreeMap底层存取机制,位运算符,原码反码补码
List常用实现类 List集合常用的实现类有3个 , ArrayList , LinkedList , Vector ArrayList 类似于我们之前的ArrayBox 底层使用数组存储元素, 插入删除的效率低,检索的效率高 当底层数组存储容量不足时,会进行扩容,…...
【Redis】Redis 缓存设计:抗住百万并发量的最佳实践
目录 1. Redis 缓存设计原则1.1 高可用性1.2 数据一致性1.3 读写分离 2. 缓存策略2.1 常用缓存策略2.1.1 缓存穿透2.1.2 缓存雪崩2.1.3 缓存击穿 2.2 额外缓存策略2.2.1 更新策略2.2.2 预热策略2.2.3 侧写缓存 3. Redis 架构设计3.1 单机 vs 集群3.2 Redis 集群示例架构 4. 性能…...
【hot100-java】【缺失的第一个正数】
R9-普通数组篇 class Solution {public int firstMissingPositive(int[] nums) {int nnums.length;for (int i0;i<n;i){while(nums[i]>0&&nums[i]<n&&nums[nums[i]-1]!nums[i]){//交换nums[i]和nums[nums[i]-1]int temp nums[nums[i]-1];nums[nums[i]…...
独立站新手教程转化篇:如何做好移动端优化?
随着移动设备在全球范围内的普及,越来越多消费者选择通过手机或平板电脑,来进行线上购物。因此移动端优化,因此移动端优化,也成为独立站卖家必须重视的一个关键环节。那么独立站移动端需要做好哪些优化工作呢? 选择响…...
Mybatis Plus分页查询返回total为0问题
Mybatis Plus分页查询返回total为0问题 一日,乌云密布,本人看着mybatis plus的官方文档,随手写了个分页查询,如下 Page<Question> questionPage questionService.page(new Page<>(current, size),questionService.g…...
VulnHub-Narak靶机笔记
Narak靶机笔记 概述 Narak是一台Vulnhub的靶机,其中有简单的tftp和webdav的利用,以及motd文件的一些知识 靶机地址: https://pan.baidu.com/s/1PbPrGJQHxsvGYrAN1k1New?pwda7kv 提取码: a7kv 当然你也可以去Vulnhub官网下载 一、nmap扫…...
查看和升级pytorch到指定版本
文章目录 查看和升级pytorch到指定版本查看pytorch的版本python 命令查看pytorch的版本使用pip 命令查看当前安装的PyTorch版本升级PyTorch到指定版本 升级到特定的版本 查看和升级pytorch到指定版本 查看pytorch的版本 python 命令查看pytorch的版本 通过Python的包管理工具…...
Maya---机械模型制作
材质效果(4)_哔哩哔哩_bilibili 三角面 四边面 多边面 *游戏允许出现三角面和四边面 游戏中一般是低模(几千个面) 动漫及影视是高模 机械由单独零件组合而成,需独立制作 低面模型到高面模型 卡线是为了将模型保…...
请不要在TS中使用Function类型
在 TypeScript 中,避免使用 Function 作为类型。Function 代表的是“任意类型的函数”,这会带来类型安全问题。对于绝大多数情况,你可能更希望明确地指定函数的参数和返回值类型。 如果你确实想表达一个可以接收任意数量参数并返回任意类型的…...
关于UVM仿真error数量达到指定值就退出仿真的设置
1. 问题描述 在某项目调试过程中,发现通过tc_base.sv中new函数里的set_report_max_quit_count()设置最大error数量不生效,uvm_error数量仍旧是达到10个(默认)就会退出仿真。 2. 设置uvm_error到达一定数量结束仿真的方式 由白皮…...
chatGPT问答知识合集【二】
Redis 架构说明 Redis 是一个开源的内存数据库,它也可以持久化到磁盘。以下是 Redis 的典型架构说明:### Redis 架构组件:1. **客户端**:与 Redis 服务器进行通信的应用程序或客户端库。2. **Redis 服务器**:执行实际…...
不靠学历,不拼年资,怎么才能月入2W?
之前统计局发布了《2023年城镇单位就业人员年平均工资情况》,2023年全国城镇非私营单位和私营单位就业人员年平均工资分别为120698元和68340元。也就是说在去年非私营单位就业人员平均月薪1W,而私营单位就业人员平均月薪只有5.7K左右。 图源:…...
3种Cookie管理方案对比:为什么本地导出才是开发者最佳选择?
3种Cookie管理方案对比:为什么本地导出才是开发者最佳选择? 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 在Web开发和自动…...
3分钟免费激活Windows和Office:KMS_VL_ALL_AIO终极指南
3分钟免费激活Windows和Office:KMS_VL_ALL_AIO终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文档突然变成只…...
从CFG到PDG:5个真实案例解析程序依赖图在安全审计中的应用
从CFG到PDG:5个真实案例解析程序依赖图在安全审计中的应用 在软件安全领域,漏洞检测的精准度往往取决于代码分析的深度。传统控制流图(CFG)虽然能描绘执行路径,却难以捕捉数据流转的潜在风险。程序依赖图(P…...
7个实用技巧:从零开始开发jquery-qrcode自定义二维码生成器
7个实用技巧:从零开始开发jquery-qrcode自定义二维码生成器 【免费下载链接】jquery-qrcode qrcode generation standalone (doesnt depend on external services) 项目地址: https://gitcode.com/gh_mirrors/jq/jquery-qrcode jquery-qrcode是一款轻量级的纯…...
LumiPixel开箱即用教程:快速上手这个专为人像设计的AI创作平台
LumiPixel开箱即用教程:快速上手这个专为人像设计的AI创作平台 1. 认识LumiPixel:纯净人像创作平台 LumiPixel: Canvas Quest是一款专注于人像创作的AI视觉平台,它将先进的Z-Image扩散模型与复古像素艺术美学完美结合。这个平台特别适合需要…...
Web3D开发入门:5大引擎(Direct3D、OpenGL、UE、Unity、Three.js)选型指南
Web3D开发入门:5大引擎选型实战指南 当虚拟展厅、数字孪生和元宇宙应用席卷各行业时,选择合适的三维引擎成为开发者面临的首个关键决策。本文将带您深入剖析Direct3D、OpenGL、Unreal Engine、Unity和Three.js五大主流方案的技术特性与商业价值ÿ…...
用战神引擎开服后,别忘了这几步:服务器安全、日志监控与性能调优指南
战神引擎开服后的高阶运维指南:安全加固、日志监控与性能调优实战 当你成功用战神引擎架设传奇手游服务器后,真正的挑战才刚刚开始。服务器能跑起来只是第一步,如何让它跑得稳、跑得安全、跑得高效,才是区分普通服主和专业运维的关…...
微信小程序集成AI能力:调用LFM2.5-1.2B-Thinking-GGUF实现智能聊天与内容生成
微信小程序集成AI能力:调用LFM2.5-1.2B-Thinking-GGUF实现智能聊天与内容生成 1. 为什么要在小程序里集成AI 微信小程序作为轻量级应用平台,用户使用门槛低、传播效率高。但传统小程序功能相对单一,缺乏智能化交互体验。通过集成LFM2.5-1.2…...
Arduino智能小车避坑指南:从TB6612驱动到HC-05蓝牙,新手最容易搞错的5个硬件连接点
Arduino智能小车避坑实战:5个硬件连接致命细节与示波器级调试方案 刚拿到Arduino套件的新手们,总会在论坛里发出同样的灵魂拷问:"为什么我的小车要么瘫着不动,要么像醉汉一样乱撞?"这个问题背后,…...
SPIRAN ART SUMMONER异常处理:常见错误解决方案
SPIRAN ART SUMMONER异常处理:常见错误解决方案 1. 前言 遇到SPIRAN ART SUMMONER运行报错时,别急着放弃。作为一款强大的AI艺术生成工具,它在使用过程中确实会遇到一些典型问题,但大多数都有明确的解决方法。本文汇总了用户反馈…...
