Python 3 與 Python 2 的主要區別

在這里插入圖片描述

文章目錄

    • 1. 語法與關鍵字
      • `print` 函數
      • 整數除法
    • 2. 字符串處理
      • 默認字符串類型
      • 字符串格式化
    • 3. 輸入函數
    • 4. 迭代器和生成器
      • `range` 函數
      • `map`, `filter`, `zip`
    • 5. 標準庫變化
      • `urllib` 模塊
      • `configparser` 模塊
    • 6. 異常處理
    • 7. 移除的功能
    • 8. 其他重要改進
      • 數據庫操作
      • 多線程與并發
      • 類型注解
    • 9. 總結

Python 是一門強大且廣泛使用的編程語言。從 Python 2 到 Python 3 的過渡引入了許多重要的變化,使得 Python 3 成為現代開發的首選版本。本文將總結 Python 3 與 Python 2 的主要區別,并參考官方文檔對關鍵點進行分析。


1. 語法與關鍵字

print 函數

在 Python 2 中,print 是一個語句,而在 Python 3 中,它被改為函數。

Python 2:

print "Hello, World!"

Python 3:

print("Hello, World!")

整數除法

在 Python 2 中,整數除法會進行向下取整,而 Python 3 中則返回浮點數。

Python 2:

print 5 / 2  # 輸出 2

Python 3:

print(5 / 2)  # 輸出 2.5

如果希望在 Python 3 中獲得整數除法的結果,可以使用 //

print(5 // 2)  # 輸出 2

2. 字符串處理

默認字符串類型

  • Python 2 默認使用 ASCII 編碼,字符串為 str 類型。
  • Python 3 默認使用 Unicode 編碼,字符串為 str 類型。

Python 2:

s = "你好"  # ASCII 可能導致編碼錯誤

Python 3:

s = "你好"  # 默認支持 Unicode,無需額外處理

如果在 Python 3 中處理二進制數據,可以使用 bytes 類型:

b = b"binary data"

字符串格式化

Python 3 引入了更強大的格式化方法 str.format() 和 f-string。

Python 2:

print("%s is %d years old" % ("Alice", 30))

Python 3:

print("{} is {} years old".format("Alice", 30))
# 或使用 f-string
name, age = "Alice", 30
print(f"{name} is {age} years old")

3. 輸入函數

在 Python 2 中,input() 將輸入解析為代碼,而 raw_input() 返回字符串。

Python 2:

name = raw_input("Enter your name: ")  # 返回字符串

Python 3:

name = input("Enter your name: ")  # 默認返回字符串

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)
print(list(range(5)))  # 轉為列表 [0, 1, 2, 3, 4]

map, filter, zip

在 Python 2 中,這些函數返回列表,而在 Python 3 中返回迭代器。

Python 2:

print(map(str, [1, 2, 3]))  # 輸出 ['1', '2', '3']

Python 3:

print(list(map(str, [1, 2, 3])))  # 需要顯式轉換為列表

5. 標準庫變化

urllib 模塊

  • 在 Python 2 中,urlliburllib2 是分開的模塊。
  • 在 Python 3 中,功能被整合到了 urllib.requesturllib.error 中。

Python 2:

import urllib2
response = urllib2.urlopen("http://example.com")

Python 3:

import urllib.request
response = urllib.request.urlopen("http://example.com")

configparser 模塊

在 Python 3 中,ConfigParser 被重命名為 configparser,并改進了功能。


6. 異常處理

Python 3 中,異常必須使用 as 關鍵字綁定到變量。

Python 2:

try:x = 1 / 0
except ZeroDivisionError, e:print e

Python 3:

try:x = 1 / 0
except ZeroDivisionError as e:print(e)

7. 移除的功能

  • print 語句:被 print() 函數取代。
  • long 類型:Python 3 將所有整數合并為 int 類型。
  • xrange:被 range 取代。
  • <> 比較運算符:在 Python 3 中必須使用 !=

8. 其他重要改進

數據庫操作

Python 3 中的數據庫模塊如 sqlite3 默認支持 Unicode,更適合現代開發需求。

多線程與并發

Python 3 引入了 concurrent.futures 模塊,簡化了多線程和多進程編程。

類型注解

Python 3 支持類型注解,使代碼更具可讀性和可維護性。

示例:

def greet(name: str) -> str:return f"Hello, {name}"

9. 總結

從 Python 2 到 Python 3 的變化是顯著的,尤其是對語法一致性、性能優化和現代化開發需求的支持。雖然 Python 2 已經在 2020 年停止支持,但了解它與 Python 3 的差異仍有助于維護舊代碼或遷移項目。對于新開發,推薦使用 Python 3 的最新版本,以充分利用其特性和改進。

參考資料:

  • Python 官方文檔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64908.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64908.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64908.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于IDE的相關知識之二【插件推薦】

成長路上不孤單&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///計算機愛好者&#x1f60a;///持續分享所學&#x1f60a;///如有需要歡迎收藏轉發///&#x1f60a;】 今日分享關于ide插件推薦的相關內容&#xff01…

如何獲取穩定高效的動態代理?

在數據采集的領域&#xff0c;動態代理IP是我們探索網絡世界的小助手&#xff0c;它不僅幫助我們高效地收集信息&#xff0c;還能在保護數據安全方面發揮重要作用。但如何在眾多選擇中找到最適合的那個——即穩定且高效的動態代理也是一大難題。 明確你的需求 首先&#xff0…

基于微信小程序的校園點餐平臺的設計與實現(源碼+SQL+LW+部署講解)

文章目錄 摘 要1. 第1章 選題背景及研究意義1.1 選題背景1.2 研究意義1.3 論文結構安排 2. 第2章 相關開發技術2.1 前端技術2.2 后端技術2.3 數據庫技術 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系統需求分析 4. 第4章 系統概要設計4.1 系統功能模塊設計4.2 數據庫設計 5.…

原生js封裝ajax請求以及css實現提示效果和禁止點擊效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0,user-scalableno"><title>本地模式網絡切換</title>&l…

Pytorch的自動求導模塊

文章目錄 torch.autograd.backward()基本用法非標量張量的反向傳播保留計算圖指定輸入張量高階梯度計算 與 y.backward() 的區別torch.autograd.grad()基本用法非標量張量的梯度高階梯度計算多輸入、多輸出的梯度計算未使用的輸入張量保留計算圖 與 backward() 的區別 torch.au…

Mac OS

本文來自智譜清言 ------ Mac OS&#xff08;現稱為macOS&#xff09;是蘋果公司開發和銷售的操作系統&#xff0c;自1984年推出以來&#xff0c;它已經經歷了多次重大的演變和發展。 起源&#xff1a;Mac OS 1.0的誕生 - 1984年&#xff0c;蘋果發布了Macintosh計算機&#…

spring中使用@Validated,什么是JSR 303數據校驗,spring boot中怎么使用數據校驗

文章目錄 一、JSR 303后臺數據校驗1.1 什么是 JSR303&#xff1f;1.2 為什么使用 JSR 303&#xff1f; 二、Spring Boot 中使用數據校驗2.1 基本注解校驗2.1.1 使用步驟2.1.2 舉例Valid注解全局統一異常處理 2.2 分組校驗2.2.1 使用步驟2.2.2 舉例Validated注解Validated和Vali…

ubuntu常用快捷鍵和變量記錄

alias b‘cd …/’ alias bb‘cd …/…/’ alias bbb‘cd …/…/…/’ alias bbbb‘cd …/…/…/…/’ alias bbbbb‘cd …/…/…/…/…/’ alias bbbbbb‘cd …/…/…/…/…/…/’ alias apkinfo‘aapt dump badging’ alias npp‘notepad-plus-plus’ export ANDROID_HOME/h…

AWS S3文件存儲工具類

pom依賴 <!--aws-s3--> <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.12.95</version></dependency>S3Utils import cn.hutool.core.util.ZipUtil; import com.a…

【SOC 芯片設計 DFT 學習專欄 -- 測試向量生成 ATPG (Automatic Test Pattern Generation) 】

文章目錄 OverviewATPG 的基本功能ATPG 的工作流程ATPG 應用場景示例示例 1&#xff1a;檢測單個信號的 Stuck-at Fault示例 2&#xff1a;針對 Transition Fault 的 ATPG ATPG 工具與常用工具鏈ATPG 優化與挑戰 Overview 本文主要介紹 DFT scan 中的 ATPG 功能。在 DFT (Desi…

2024 高通邊緣智能創新應用大賽智能邊緣計算賽道冠軍方案解讀

2024 高通邊緣智能創新應用大賽聚焦不同細分領域的邊緣智能創新應用落地&#xff0c;共設立三大熱門領域賽道——工業智能質檢賽道、智能邊緣計算賽道和智能機器人賽道。本文為智能邊緣計算賽道冠軍項目《端側大模型智能翻譯機》的開發思路與成果分享。 賽題要求 聚焦邊緣智能…

【Python運維】用Python和Ansible實現高效的自動化服務器配置管理

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著云計算和大規模數據中心的興起,自動化配置管理已經成為現代IT運維中不可或缺的一部分。通過自動化,企業可以大幅提高效率,降低人為錯…

微信小程序獲取后端數據

在小程序中獲取后端接口數據 通常可以使用 wx.request 方法&#xff0c;以下是一個基本示例&#xff1a; // pages/index/index.js Page({data: {// 用于存儲后端返回的數據resultData: [] },onLoad() {this.fetchData();},fetchData() {wx.request({url: https://your-backe…

應用架構模式-總體思路

采用引導式設計方法&#xff1a;以企業級架構為指導&#xff0c;形成較為齊全的規范指引。在實踐中總結重要設計形成決策要點&#xff0c;一個決策要點對應一個設計模式。自底向上總結采用該設計模式的必備條件&#xff0c;將之轉化通過簡單需求分析就能得到的業務特點&#xf…

【數據結構】雙向循環鏈表的使用

雙向循環鏈表的使用 1.雙向循環鏈表節點設計2.初始化雙向循環鏈表-->定義結構體變量 創建頭節點&#xff08;1&#xff09;示例代碼&#xff1a;&#xff08;2&#xff09;圖示 3.雙向循環鏈表節點頭插&#xff08;1&#xff09;示例代碼&#xff1a;&#xff08;2&#xff…

【Java設計模式-3】門面模式——簡化復雜系統的魔法

在軟件開發的世界里&#xff0c;我們常常會遇到復雜的系統&#xff0c;這些系統由多個子系統或模塊組成&#xff0c;各個部分之間的交互錯綜復雜。如果直接讓外部系統與這些復雜的子系統進行交互&#xff0c;不僅會讓外部系統的代碼變得復雜難懂&#xff0c;還會增加系統之間的…

Linux一些問題

修改YUM源 Centos7將yum源更換為國內源保姆級教程_centos使用中科大源-CSDN博客 直接安裝包&#xff0c;走鏈接也行 Index of /7.9.2009/os/x86_64/Packages 直接復制里面的安裝包鏈接&#xff0c;在命令行直接 yum install https://vault.centos.org/7.9.2009/os/x86_64/Pa…

微信小程序 覆蓋組件cover-view

wxml 覆蓋組件 <video src"../image/1.mp4" controls"{{false}}" event-model"bubble"> <cover-view class"controls"> <cover-view class"play" bind:tap"play"> <cover-image class"…

HTML——57. type和name屬性

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>type和name屬性</title></head><body><!--1.input元素是最常用的表單控件--><!--2.input元素不僅可以在form標簽內使用也可以在form標簽外使用-…

uniapp本地加載騰訊X5瀏覽器內核插件

概述 TbsX5webviewUTS插件封裝騰訊x5webview離線內核加載模塊&#xff0c;可以把uniapp的瀏覽器內核直接替換成Android X5 Webview(騰訊TBS)最新內核&#xff0c;提高交互體驗和流暢度。 功能說明 下載SDK插件 1.集成x5內核后哪些頁面會由x5內核渲染&#xff1f; 所有plus…