python里的()和[]和{}区别

本文介绍了Python中元组(tuple)、列表(list)和字典(dict)的基本概念,包括它们的创建方式和特点:元组是不可变序列,列表是可变序列,字典则通过键值对存储数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. Python中的()
    代表tuple元组数据类型,元祖是一种不可变序列。创建方法很简单,大多数时候都是小括号括起来的。

  2. Python中的中括号[]:
    代表list列表数据类型,列表是一种可变序列。

  3. Python中的花括号{}:
    代表dict字典数据类型,字典是Python中唯一内建的映射类型。字典中的值没有特殊的顺序,但都是存储在一个特定的键(key)下。键可以是数字、字符串甚至是元祖。

<think>Python 3 Python 2 是 Python 语言的两个主要版本,它们之间存在显著差异。Python 3 于2008年发布,旨在解决 Python 2 中的设计缺陷,但两者不完全兼容。以下是关键区别: ### 1. **打印函数(Print)** - **Python 2**:`print` 是语句(statement) ```python print "Hello, World!" # 不需要括号 ``` - **Python 3**:`print()` 是函数(function) ```python print("Hello, World!") # 必须使用括号 ``` ### 2. **整数除法(Integer Division)** - **Python 2**:整数除法默认向下取整(floor division) ```python print 5 / 2 # 输出 2(整数) ``` - **Python 3**:整数除法返回浮点数(需用 `//` 取整) ```python print(5 / 2) # 输出 2.5(浮点) print(5 // 2) # 输出 2(整数) ``` ### 3. **Unicode 支持** - **Python 2**:字符串默认为 `str`(字节序列),需显式声明 `u"..."` 为 Unicode ```python s = "中文" # 字节字符串(易引发编码问题) u = u"中文" # Unicode 字符串 ``` - **Python 3**:字符串默认为 `str`(Unicode),字节序列用 `bytes` ```python s = "中文" # Unicode 字符串 b = b"bytes" # 字节字符串 ``` ### 4. **`xrange` 与 `range`** - **Python 2**:`range()` 返回列表,`xrange()` 返回迭代器(节省内存) ```python for i in xrange(1000000): # 推荐大循环使用 pass ``` - **Python 3**:`range()` 返回可迭代对象(类似 Python 2 的 `xrange`) ```python for i in range(1000000): # 直接使用 range pass ``` ### 5. **错误处理语法** - **Python 2**:支持旧式 `except` 语法 ```python try: # ... except Exception, e: # 逗号分隔 pass ``` - **Python 3**:必须使用 `as` 关键字 ```python try: # ... except Exception as e: # 使用 as pass ``` ### 6. **输入函数(Input)** - **Python 2**:`input()` 可执行表达式(有安全风险),`raw_input()` 返回字符串 ```python name = raw_input("Enter name: ") # 返回字符串 ``` - **Python 3**:只有 `input()`,返回字符串 ```python name = input("Enter name: ") # 安全返回字符串 ``` ### 7. **迭代器改进** - **Python 3**:字典的 `.keys()`、`.values()`、`.items()` 返回视图(view),而非列表 ```python d = {"a": 1, "b": 2} keys = d.keys() # 视图对象(动态反映字典变化) ``` ### 8. **语法类型注解** - **Python 3.5+**:支持类型注解(Type Hints) ```python def greet(name: str) -> str: return "Hello, " + name ``` ### 9. **标准库重组** - **Python 3**:部分模块重命名(如 `urllib2` → `urllib.request`) ```python # Python 2 import urllib2 # Python 3 from urllib import request ``` ### 10. **其他重要变化** - **`__future__` 模块**:Python 2 中可导入 Python 3 特性(如 `print_function`) - **不等运算符**:Python 2 支持 `<>` `!=`,Python 3 仅支持 `!=` - **元类语法**:Python 3 使用 `metaclass=...` 关键字参数(Python 2 用 `__metaclass__` 属性) --- ### 迁移工具 - **`2to3`**:自动将 Python 2 代码转换为 Python 3 代码 ```bash 2to3 your_script.py # 生成转换建议 2to3 -w your_script.py # 直接修改文件 ``` --- §§相关问题§§: 1. Python 3 中如何处理字节字符串(bytes) Unicode 字符串(str)的转换? 2. 为什么 Python 3 默认使用 Unicode 字符串? 3. 如何在 Python 2 代码中兼容 Python 3 的特性? 4. Python 3 的类型注解(Type Hints)如何用于静态类型检查?</think>### Python 3 与 Python 2 的核心区别 Python 3(2008年发布)是 Python 2(2000年发布)的革命性升级,两者存在**不兼容性**。以下是关键区别: #### 1. 打印函数(最显著变化) ```python # Python 2 print "Hello World" # 语句形式 # Python 3 print("Hello World") # 函数形式 ``` **原因**:统一函数语法,支持更多参数(如 `sep`, `end`, `file`) #### 2. 整数除法 ```python # Python 2 5 / 2 # 返回 2(整数除法) # Python 3 5 / 2 # 返回 2.5(真除法) 5 // 2 # 返回 2(整数除法) ``` **原因**:避免数学计算歧义,符合直觉 #### 3. Unicode 支持 ```python # Python 2 s = "中文" # 字节字符串(可能乱码) u = u"中文" # Unicode字符串(需手动声明) # Python 3 s = "中文" # 默认Unicode字符串(无需前缀) b = b"text" # 字节字符串(需b前缀) ``` **原因**:解决全球字符集支持问题,减少编码错误 #### 4. 迭代器改进 ```python # Python 2 range(5) # 返回列表 [0,1,2,3,4] xrange(5) # 返回迭代器(内存高效) # Python 3 range(5) # 返回range对象(内存高效) list(range(5)) # 需显式转换列表 ``` **原因**:提升大范围迭代性能,减少内存占用 #### 5. 异常处理语法 ```python # Python 2 try: ... except Exception, e: # 逗号语法 ... # Python 3 try: ... except Exception as e: # as关键字 ... ``` **原因**:提高可读性,统一语法结构 #### 6. 输入函数 ```python # Python 2 raw_input() # 返回字符串 input() # 执行表达式(有安全风险) # Python 3 input() # 直接返回字符串(更安全) ``` #### 7. 其他重要差异 | 特性 | Python 2 | Python 3 | |--------------|---------------------|-----------------------| | 字典键顺序 | 无序 | 保持插入顺序(3.6+) | | `next()`函数 | `obj.next()` | `next(obj)` | | 元类语法 | `__metaclass__`属性 | `metaclass=`关键字参数 | | 类型注解 | 不支持 | 支持(3.5+ PEP 484) | ### 迁移注意事项 1. **`__future__` 模块**(Python 2 中使用 Python 3 特性) ```python from __future__ import print_function, division ``` 2. **兼容性工具**: - `2to3`:自动转换代码 - `six` 库:编写兼容代码 ```python import six six.print_("兼容输出") # 同时支持Py2/Py3 ``` ### 当前状态 - **Python 2 已停止支持**(2020年1月终止维护) - **Python 3 是唯一活跃版本**(推荐使用 3.8+) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值