[ 收藏 ] [ 繁体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  •  管理

     一般管理学
     市场/营销
     会计
     金融/投资
     经管音像
     电子商务
     创业企业与企业家
     生产与运作管理
     商务沟通
     战略管理
     商业史传
     MBA
     管理信息系统
     工具书
     外文原版/影印版
     管理类职称考试
     WTO
     英文原版书-管理
  •  投资理财

     证券/股票
     投资指南
     理财技巧
     女性理财
     期货
     基金
     黄金投资
     外汇
     彩票
     保险
     购房置业
     纳税
     英文原版书-投资理财
  •  经济

     经济学理论
     经济通俗读物
     中国经济
     国际经济
     各部门经济
     经济史
     财政税收
     区域经济
     统计 审计
     贸易政策
     保险
     经济数学
     各流派经济学说
     经济法
     工具书
     通货膨胀
     财税外贸保险类考试
     英文原版书-经济
  •  社会科学

     语言文字
     社会学
     文化人类学/人口学
     新闻传播出版
     社会科学总论
     图书馆学/档案学
     经典名家作品集
     教育
     英文原版书-社会科学
  •  哲学

     哲学知识读物
     中国古代哲学
     世界哲学
     哲学与人生
     周易
     哲学理论
     伦理学
     哲学史
     美学
     中国近现代哲学
     逻辑学
     儒家
     道家
     思维科学
     马克思主义哲学
     经典作品及研究
     科学哲学
     教育哲学
     语言哲学
     比较哲学
  •  宗教

  •  心理学

  •  古籍

  •  文化

  •  历史

     历史普及读物
     中国史
     世界史
     文物考古
     史家名著
     历史地理
     史料典籍
     历史随笔
     逸闻野史
     地方史志
     史学理论
     民族史
     专业史
     英文原版书-历史
     口述史
  •  传记

  •  文学

  •  艺术

     摄影
     绘画
     小人书/连环画
     书法/篆刻
     艺术设计
     影视/媒体艺术
     音乐
     艺术理论
     收藏/鉴赏
     建筑艺术
     工艺美术
     世界各国艺术概况
     民间艺术
     雕塑
     戏剧艺术/舞台艺术
     艺术舞蹈
     艺术类考试
     人体艺术
     英文原版书-艺术
  •  青春文学

  •  文学

     中国现当代随笔
     文集
     中国古诗词
     外国随笔
     文学理论
     纪实文学
     文学评论与鉴赏
     中国现当代诗歌
     外国诗歌
     名家作品
     民间文学
     戏剧
     中国古代随笔
     文学类考试
     英文原版书-文学
  •  法律

     小说
     世界名著
     作品集
     中国古典小说
     四大名著
     中国当代小说
     外国小说
     科幻小说
     侦探/悬疑/推理
     情感
     魔幻小说
     社会
     武侠
     惊悚/恐怖
     历史
     影视小说
     官场小说
     职场小说
     中国近现代小说
     财经
     军事
  •  童书

  •  成功/励志

  •  政治

  •  军事

  •  科普读物

  •  计算机/网络

     程序设计
     移动开发
     人工智能
     办公软件
     数据库
     操作系统/系统开发
     网络与数据通信
     CAD CAM CAE
     计算机理论
     行业软件及应用
     项目管理 IT人文
     计算机考试认证
     图形处理 图形图像多媒体
     信息安全
     硬件
     项目管理IT人文
     网络与数据通信
     软件工程
     家庭与办公室用书
  •  建筑

  •  医学

     中医
     内科学
     其他临床医学
     外科学
     药学
     医技学
     妇产科学
     临床医学理论
     护理学
     基础医学
     预防医学/卫生学
     儿科学
     医学/药学考试
     医院管理
     其他医学读物
     医学工具书
  •  自然科学

     数学
     生物科学
     物理学
     天文学
     地球科学
     力学
     科技史
     化学
     总论
     自然科学类考试
     英文原版书-自然科学
  •  工业技术

     环境科学
     电子通信
     机械/仪表工业
     汽车与交通运输
     电工技术
     轻工业/手工业
     化学工业
     能源与动力工程
     航空/航天
     水利工程
     金属学与金属工艺
     一般工业技术
     原子能技术
     安全科学
     冶金工业
     矿业工程
     工具书/标准
     石油/天然气工业
     原版书
     武器工业
     英文原版书-工业技
  •  农业/林业

  •  外语

  •  考试

  •  教材

  •  工具书

  •  中小学用书

  •  中小学教科书

  •  动漫/幽默

  •  烹饪/美食

  •  时尚/美妆

  •  旅游/地图

  •  家庭/家居

  •  亲子/家教

  •  两性关系

  •  育儿/早教

     保健/养生
     体育/运动
     手工/DIY
     休闲/爱好
     英文原版书
     港台图书
     研究生
     工学
     公共课
     经济管理
     理学
     农学
     文法类
     医学
  • Python可以這樣學
    該商品所屬分類:計算機/網絡 -> 程序設計
    【市場價】
    761-1104
    【優惠價】
    476-690
    【作者】 董付國 
    【所屬類別】 圖書  計算機/網絡  程序設計  Python 
    【出版社】清華大學出版社 
    【ISBN】9787302456469
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    開本:32開
    紙張:膠版紙
    包裝:平裝-膠訂

    是否套裝:否
    國際標準書號ISBN:9787302456469
    作者:董付國

    出版社:清華大學出版社
    出版時間:2017年02月 

        
        
    "

    編輯推薦
    信息量大、案例豐富、實用性強。全書包含近200個案例和上千段代碼,涉及Python基本語法和數據類型,以及GUI、網絡應用、數據庫、密碼學、科學計算與可視化、大數據、圖形圖像處理等多個領域的開發,書中一些代碼進行簡單拼湊就可以滿足實際工作中需要的很多功能。深度與廣度兼顧。剖析Python編程模式,通過小提示、小技巧、注意、拓展知識等形式適當介紹標準庫的工作原理、內置函數的高級用法以及代碼優化和安全編程知識,同時還補充了很多擴展庫的小應用,滿足不同層次讀者需要。語言輕松愉快,寓教於樂。以Python知識和應用為主線,偶爾穿插一點太極拳論、道德經、易經、古詩詞和其他一些文學作品中的名言名句和小故事,部分題目還給出了非常幽默的答案。注釋量大。書中幾乎每段重要代碼都配有相關的注釋,讓讀者能夠在*短時間內理解代碼的編寫思路和要點,大幅度縮短閱讀和學習時間。 
    內容簡介
    全書共分16章,對Python內部工作原理進行了一定深度的剖析,99%以上的案例代碼使用Python 3.5.1實現,也適用於Python 3.4.x(除少數幾個新特性之外)和*版本Python 3.5.2以及Python 3.6.0,極個別案例使用Python 2.7.11實現(同樣適用於其他版本Python 2.7.x,包括*的Python2.7.12),適當介紹了Python代碼優化、繫統編程和安全編程的有關知識,滿足不同層次讀者的需要。另外,書中通過小提示、小技巧、注意拓展知識等形式介紹了更多的內容,全部內容遠比章節目錄所顯示的要多,需要認真閱讀纔能真正領會其中的奧妙。本書適合作為Python程序員的開發指南,也可以作為高等院校計算機專業、軟件工程專業等專業的Python教材,還可以作為Python愛好者的指導用書。
    作者簡介
    董付國  副教授。自2000年參加工作以來,先後講授過彙編語言、C/C /C#、Java和Python等多門編程語言,以及計算機組成原理、計算機網絡、數據庫原理、數據結構、操作繫統、計算機安全、網絡安全、計算機圖形學、數字圖像處理、遊戲策劃等多門課程,出版《Python程序設計》、《Python程序設計基礎》、《Python程序設計(第2版)》繫列教材,開發過多套涉及不同領域的管理繫統,在國內外高水平學術期刊與會議上發表論文40餘篇,其中近30篇被EI檢索。學習工作之餘*的愛好是打太極拳。
    目錄
    目錄
    第1章Python基礎1
    1.1Python是一種什麼樣的語言1
    1.2Python開發環境2
    1.2.1百家爭鳴的繁榮景像2
    1.2.2IDLE簡單使用6
    1.3變量、運算符與表達式9
    1.3.1Python變量與內置數據類型9
    1.3.2常用內置函數15
    1.3.3運算符與表達式21
    1.3.4人機對話基本接口25
    1.4模塊安裝與使用28
    1.4.1安裝Python擴展庫28
    1.4.2模塊導入與使用30

    目錄

    第1章Python基礎1

    1.1Python是一種什麼樣的語言1

    1.2Python開發環境2

    1.2.1百家爭鳴的繁榮景像2

    1.2.2IDLE簡單使用6

    1.3變量、運算符與表達式9

    1.3.1Python變量與內置數據類型9

    1.3.2常用內置函數15

    1.3.3運算符與表達式21

    1.3.4人機對話基本接口25

    1.4模塊安裝與使用28

    1.4.1安裝Python擴展庫28

    1.4.2模塊導入與使用30

    1.4.3編寫自己的模塊和包32

    第2章Python序列35

    2.1列表與列表推導式36

    2.1.1列表創建與刪除36

    2.1.2列表常用方法38

    2.1.3列表推導式46

    2.1.4切片50

    組與生成器推導式54

    2.組54

    2.2.2生成器推導式55

    2.3字典57

    2.3.1字典素添加、修改與刪除57

    2.3.2訪問字典對像的數據59

    2.3.3案例精選61

    2.4集合63[1]〖2〗Python可以這樣學[1]目錄〖2〗2.4.1集合基礎知識63

    2.4.2集合操作與運算64

    2.4.3案例精選67

    2.5序列解包69

    第3章程序控制結構與函數設計71

    3.1選擇結構71

    3.1.1條件表達式71

    3.1.2選擇結構的幾種形式73

    3.1.3案例精選79

    3.2循環結構82

    3.2.1for循環與while循環的基本語法82

    3.2.2break與continue語句83

    3.2.3循環代碼優化技巧84

    3.2.4案例精選86

    3.3函數設計與使用90

    3.3.1基本語法91

    3.3.2函數參數不得不說的幾件事94

    3.3.3變量作用域99

    3.3.4lambda表達式102

    3.3.5案例精選104

    第4章面向對像程序設計122

    4.1基礎知識122

    4.1.1類的定義與使用122

    4.1.2私有成員與公有成員123

    4.1.3數據成員125

    4.1.4方法126

    4.1.5屬性129

    4.1.6繼承131

    4.1.7特殊方法與運算符重載134

    4.2案例精選135

    4.2.1自定義數組135

    4.2.2自定義矩陣141

    4.2.3自定義隊列147

    4.2.4自定義棧151

    4.2.5自定義二叉樹154

    4.2.6自定義有向圖157

    4.2.7自定義集合158

    第5章字符串與正則表達式165

    5.1字符串165

    5.1.1字符串格式化的兩種形式168

    5.1.2字符串常用方法171

    5.1.3案例精選186

    5.2正則表達式190

    5.2.1正則表達式語法與子模式擴展語法190

    5.2.2re模塊方法與正則表達式對像193

    5.2.3案例精選199

    第6章文件與文件夾操作206

    6.1文件對像常用方法與屬性207

    6.2文本文件操作案例精選209

    6.3二進制文件操作案例精選217

    6.3.1使用pickle模塊讀寫二進制文件217

    6.3.2使用struct模塊讀寫二進制文件219

    6.3.3使用shelve模塊操作二進制文件220

    6.3.4使用marshal模塊操作二進制文件220

    6.4文件與文件夾操作221

    6.4.1標準庫os、os.path與shutil簡介221

    6.4.2案例精選227

    第7章異常處理結構、代碼測試與調試252

    7.1異常處理結構252

    7.1.1異常是什麼252

    7.1.2Python內置異常類層次結構254

    7.1.3常見異常處理結構形式255

    7.2代碼測試262

    7.2.1doctest263

    7.2測試264

    7.3代碼調試270

    7.3.1使用IDLE調試270

    7.3.2使用pdb調試273

    階段性寄語278

    第8章數據庫應用開發279

    8.1使用Python操作SQLite數據庫279

    8.1.1Connection對像280

    8.1.2Cursor對像281

    8.1.3Row對像284

    8.2使用Python操作其他關繫型數據庫285

    8.2.1操作Access數據庫285

    8.2.2操作MS SQL Server數據庫286

    8.2.3操作MySQL數據庫288

    8.3操作MongoDB數據庫290

    第9章網絡應用開發293

    9.1計算機網絡基礎知識293

    9.2Socket編程295

    9.2.1UDP編程296

    9.2.2TCP編程298

    9.2.3網絡嗅探器300

    9.2.4多進程端口掃描器302

    9.2.5代理服務器端口映射功能的實現305

    9.2.6自己編寫FTP通信軟件308

    9.3域名解析與網頁爬蟲313

    9.3.1網頁內容讀取與域名分析313

    9.3.2網頁爬蟲315

    9.3.3scrapy框架316

    9.3.4BeautifulSoup4318

    9.4網站開發323

    9.4.1使用IIS運行Python CGI程序323

    9.4.2Python在ASP.NET中的應用325

    9.4.3Flask框架簡單應用327

    9.4.4django框架簡單應用328

    第10章多線程與多進程333

    10.1多線程編程334

    10.1.1線程創建與管理336

    10.1.2線程同步技術339

    10.2多進程編程346

    10.2.1進程創建與管理347

    10.2.2進程間數據交換347

    10.2.3進程同步技術350

    第11章大數據處理351

    11.1大數據簡介351

    11.2MapReduce框架352

    11.3Spark應用開發356

    第12章圖形編程與圖像處理361

    12.1圖形編程361

    12.1.1繪制三維圖形361

    12.1.2繪制三次貝塞爾曲線364

    12.1.3紋理映射365

    12.1.4響應鍵盤事件368

    12.1.5光照模型369

    12.2圖像處理372

    12.2.1pillow模塊基本用法372

    12.2.2計算橢圓中心375

    12.2.3動態生成比例分配圖376

    12.2.4生成驗證碼圖片377

    12.2.5gif動態圖像分離與生成379

    12.2.6材質貼圖380

    12.2.7圖像融合381

    12.2.8棋盤紋理生成383

    第13章數據分析與科學計算可視化384

    13.1擴展庫numpy簡介384

    13.2科學計算擴展庫scipy393

    13.2.1數學、物理常用常數與單位模塊constants394

    13.2.2特殊函數模塊special395

    13.2.3信號處理模塊signal395

    13.2.4圖像處理模塊ndimage397

    13.3擴展庫pandas簡介401

    13.4統計分析標準庫statistics用法簡介405

    13.5matplotlib407

    13.5.1繪制正弦曲線408

    13.5.2繪制散點圖408

    13.5.3繪制餅狀圖410

    13.5.4繪制帶有中文標簽和圖例的圖410

    13.5.5繪制圖例標簽中帶有公式的圖411

    13.5.6使用pyplot繪制,多個圖形單獨顯示412

    13.5.7繪制三維參數曲線413

    13.5.8繪制三維圖形414

    13.5.9使用指令繪制自定義圖形416

    13.5.10在tkinter中使用matplotlib417

    13.5.11使用matplotlib提供的組件實現交互式圖形顯示419

    13.5.12根據實時數據動態更新圖形421

    13.5.13使用Slider組件調整曲線參數422

    第14章密碼學編程425

    14.1經典密碼算法425

    14.1.1愷撒密碼算法425

    14.1.2維吉尼亞密碼427

    14.1.3換位密碼算法428

    14.2安全哈希算法429

    14.3對稱密鑰密碼算法DES和AES432

    14.4非對稱密鑰密碼算法RSA與數字簽名算法DSA433

    14.4.1RSA433

    14.4.2DSA435

    第15章tkinter編程精彩案例436

    15.1用戶登錄界面436

    15.2選擇類組件應用438

    15.3簡單文本編輯器441

    15.4簡單畫圖程序445

    15.5電子時鐘449

    15.6簡單動畫451

    15.7多窗口編程454

    15.8屏幕任意區域截圖456

    15.9音樂播放器458

    15.10遠程桌面監控繫統462

    第16章課堂教學管理繫統設計與實現466

    16.1功能簡介466

    16.1.1教師端功能466

    16.1.2學生端功能467

    16.2數據庫設計468

    16.3繫統總框架與通用功能設計469

    16.4數據導入功能473

    16.4.1學生名單導入473

    16.4.2題庫導入473

    16.5點名與加分功能475

    16.5.1在線點名475

    16.5.2離線點名與加分477

    16.6隨機提問功能480

    16.7在線收作業功能482

    16.7.1學生端482

    16.7.2教師端483

    16.8在線自測與在線考試功能485

    16.8.1學生端486

    16.8.2教師端488

    16.9信息查看功能490

    16.10數據導出功能492

    16.11其他輔助功能493

    16.11.1防作弊功能493

    16.11.2服務器自動發現功能493

    16.11.3Word版試卷生成功能494

    結束語496

    附錄A本書中例題清單497

    附錄B本書中插圖清單503

    附錄C本書中表格清單507

    附錄D本書中拓展知識摘要清單508

    參考文獻513

    前言
    Python並不是一門新語言,它由Guido van Rossum於1989年年底開始設計,並於1991年推出個公開發行版本,比Java早4年。Python推出不久就迅速得到各行業人士的青睞,經過20多年的發展,已經滲透到統計分析、移動終端開發、科學計算可視化、繫統安全、逆向工程、軟件測試與軟件分析、圖形圖像處理、人工智能、機器學習、遊戲設計與策劃、網站開發、數據爬取與大數據處理、密碼學、繫統運維、音樂編程、影視特效制作、計算機輔助教育、醫藥輔助設計、天文信息處理、化學、生物信息處理、神經科學與心理學、自然語言處理、電子電路設計、電子取證、樹莓派等幾乎所有專業和領域,在黑客領域更是多年來一直擁有霸主地位。作為一個非常不完整列表,這裡給出幾個Python應用案例: 著名搜索引擎Google的核心代碼使用Python實現,迪士尼公司的動畫制作與生成采用Python實現,大部分UNIX和Linux操作繫統都內建了Python環境支持,豆瓣網使用Python作為主體開發語言進行網站架構和有關應用的設計與開發,網易大量網絡遊戲的服務器端代碼超過70%采用Python進行設計與開發,易度的PaaA企業應用雲端開發平臺和百度雲計算平臺BAE也都大量采用了Python語言,eBay已經使用Python超過15年以上(在eBay官方宣布支持Python之前就已經有程序員在使用了),美國宇航局使用Python實現了CAD/CAE/PDM庫及模型管理繫統,微軟集成開發環境Visual Studio 2015開始默認支持Python語言而不需要像之前的版本一樣再單獨安裝PTVS和IronPython,開源ERP繫統Odoo完全采用Python語言開發,樹莓派使用Python作為官方編程語言,引力波數據是用Python進行處理和分析的,YouTube、美國銀行等也在大量使用Python進行開發,類似的案例數不勝數。早在多年前Python就已經成為卡耐基梅隆大學、麻省理工學院、加州大學伯克利分校、哈佛大學、多倫多大學等國外很多大學計算機專業或非計算機專業的程序設計入門教學語言,近幾年來國內也有不少學校的多個專業陸續開設了Python程序設計課程。Python語言連續多年在TIOBE網站的編程語言排行榜上排名七八位,2011年1月Python被TIOBE網站評為2010年年度語言;在2014年12月份IEEE Spectrum推出的編程語言排行榜中,Python取得了第5位的好名次;2015年12月份TIOBE編程語言排行榜上Python躍居第4位,僅次於Java、C和C ,已經成為腳本語言的標準;Top developer Languages of 2015更是把Python排到了第3位。Python是一門免費、開源的跨平臺高級動態編程語言,支持命令式編程、函數式編程,完全支持面向對像程序設計,擁有大量功能強大的內置對像、標準庫、涉及各行業領域[1]〖2〗Python可以這樣學[1]前言〖2〗的擴展庫以及眾多狂熱的支持者,使得各領域的工程師、科研人員、策劃人員甚至管理人員能夠快速實現和驗證自己的思路、創意或者推測。在有些編程語言中需要編寫大量代碼纔能實現的功能,在Python中直接調用內置函數或標準庫方法即可實現,大幅度簡化了代碼的編寫和維護。Python用戶隻需要把主要精力放在業務邏輯的設計與實現上,在開發速度和運行效率之間達到了完美的平衡,其精妙之處令人擊節贊嘆。如何學習Python要想改變世界,首先要改變自己的世界。要想學好Python,首先要從內心認識到Python的強大與美,樹立起學好、用好Python的信念並堅持不懈的努力,然後纔有可能攀登Python高手之巔。很多人從內心很恐懼Python,曾經有不少人問我: “Python功能那麼強大,肯定很難學吧?”其實,從編程語言發展史來看,人類語言和機器語言之間的鴻溝越來越小,人機交互越來越方便,越高級的編程語言越接近人類自然語言,越容易學習、掌握和運用,所以請不要有絲毫的恐懼和猶豫,放手去學便是。以我個人20年的經驗,不管學習和使用哪種編程語言,大概都需要經歷4個階段: 階段,能看懂和調試別人的代碼;第二階段,能在別人的代碼基礎上進行適當改寫;第三階段,能把多段已有的代碼拼湊起來實現自己需要的功能;第四階段,自己動手編寫代碼實現特定功能需求。一般而言,如果每天堅持3個小時學習Python,兩周左右應該就能入門,3個月後就可以展示出不錯的成果。當然,隨著學習和開發時間越來越長,功力會越來越深厚,能夠掌控的代碼行數(LOC)會越來越多,能夠控制的業務邏輯越來越復雜。毫無疑問,Python是一門快樂、優雅的語言,上手非常容易,稍加接觸就會喜歡上Python並能夠在短時間內寫出幾個小程序。與C語言繫列和Java等語言相比,Python大幅度降低了學習與使用的難度。Python易學易用,語法簡潔清晰,代碼可讀性強,編程模式非常符合人類思維方式和習慣。盡管如此,但這並不代表可以毫不費力地學會和熟練運用Python,在學習Python的路上沒有秘籍,也沒有哈利波特魔法杖,的捷徑就是勤學苦練。多看。讀書破萬卷,下筆如有神。學習Python也是這樣,不僅要多看書,還要看很多遍。很多知識點是互相關聯的,單獨一個知識點也無法實現稍微復雜一點的功能,書中很多案例代碼用到了後面章節的知識點,而後面章節的案例代碼又用到了前面章節的內容,這實在是無法避免的一件事。因此,不能奢望看一遍就能熟悉和掌握書中的內容,更不能奢望隻看一本書就能學會Python的全部知識。以我個人而言,除了Python官方幫助文檔和一些社區的資料之外,已經閱讀了超過25本Python方面的書,並且還在不斷地購買和閱讀別人編寫的Python書籍來提高自己對Python的理解。一書一茶一下午,這樣平淡的快樂或許有人難以體會,於我卻是樂此不疲。多練。太極拳論曰“由招熟而漸悟懂勁,由懂勁而階及神明,然非用力之久,不能豁然貫通焉”。陸遊的教子詩《鼕夜讀書示子聿》也認為“紙上得來終覺淺,絕知此事要躬行”。掌握了正確的方法以後,多練是的捷徑。一定要動手編寫和調試書上的代碼,踏踏實實把基礎掌握好再有針對性地學習自己需要的擴展庫,切忌隻看不練。很多人眼高手低,一看就會,一編就錯,根本原因就是練得太少了。子曰“學而時習之”,也是這個道理,充分說明練習的重要性。一層功夫一層天。欲窮千裡目,更上一層樓。多練,可以說是攀登Python高手之巔重要的途徑。多想。學而不思則罔,思而不學則殆。一味地看書和埋頭苦練是不行的,還要多想、多總結、多整理,爭取把學到的知識和技術徹底理解。理解得越多,需要記憶的就越少。多交流。獨學而無友,則孤陋而寡聞。除了重視基礎知識的學習和練習之外,還要多交流。除了Python官方網站和在線幫助文檔之外,經常瀏覽一些Python論壇並閱讀和調試其中的優秀代碼,汲取他人代碼中的精華。子曰“三人行必有我師焉,擇其善者而從之”,也是相同的道理。遇到不懂的問題也可以去一些論壇發帖提問,或者請教身邊的朋友和老師,但是提問之前一定要充分思考,有針對性地請教別人,經過充分思考以後再請教別人不僅是對別人的尊重,也能讓自己有更大的收獲。百思不得其解的問題經過高手一點撥纔能有茅塞頓開和恍然大悟的效果,這樣的交流更加有效,不浪費彼此的時間。曾經有學生拿一個十幾頁代碼的程序來問我問題,我問哪裡看不懂,他說整個程序都看不懂,想讓我幫忙看看然後把整篇代碼給他講講。正如大家所想的一樣,我直接拒絕了他。也曾經有讀者問我“怎麼用Python做圖像處理?”真的很抱歉,這樣沒營養的問題我實在沒法回答。俗話說,心急喫不了熱豆腐。控制好學習的進度和節奏纔能獲得好的效果,每天學習一點、進步一點、提高一點,時間久了會突然有一天發現自己已經成為Python高手,很有零存整取的感覺。欲速則不達,把下面這個圖送給各位讀者朋友共勉。Python並不是一門新語言,它由Guido van Rossum於1989年年底開始設計,並於1991年推出個公開發行版本,比Java早4年。Python推出不久就迅速得到各行業人士的青睞,經過20多年的發展,已經滲透到統計分析、移動終端開發、科學計算可視化、繫統安全、逆向工程、軟件測試與軟件分析、圖形圖像處理、人工智能、機器學習、遊戲設計與策劃、網站開發、數據爬取與大數據處理、密碼學、繫統運維、音樂編程、影視特效制作、計算機輔助教育、醫藥輔助設計、天文信息處理、化學、生物信息處理、神經科學與心理學、自然語言處理、電子電路設計、電子取證、樹莓派等幾乎所有專業和領域,在黑客領域更是多年來一直擁有霸主地位。作為一個非常不完整列表,這裡給出幾個Python應用案例: 著名搜索引擎Google的核心代碼使用Python實現,迪士尼公司的動畫制作與生成采用Python實現,大部分UNIX和Linux操作繫統都內建了Python環境支持,豆瓣網使用Python作為主體開發語言進行網站架構和有關應用的設計與開發,網易大量網絡遊戲的服務器端代碼超過70%采用Python進行設計與開發,易度的PaaA企業應用雲端開發平臺和百度雲計算平臺BAE也都大量采用了Python語言,eBay已經使用Python超過15年以上(在eBay官方宣布支持Python之前就已經有程序員在使用了),美國宇航局使用Python實現了CAD/CAE/PDM庫及模型管理繫統,微軟集成開發環境Visual Studio 2015開始默認支持Python語言而不需要像之前的版本一樣再單獨安裝PTVS和IronPython,開源ERP繫統Odoo完全采用Python語言開發,樹莓派使用Python作為官方編程語言,引力波數據是用Python進行處理和分析的,YouTube、美國銀行等也在大量使用Python進行開發,類似的案例數不勝數。早在多年前Python就已經成為卡耐基梅隆大學、麻省理工學院、加州大學伯克利分校、哈佛大學、多倫多大學等國外很多大學計算機專業或非計算機專業的程序設計入門教學語言,近幾年來國內也有不少學校的多個專業陸續開設了Python程序設計課程。Python語言連續多年在TIOBE網站的編程語言排行榜上排名七八位,2011年1月Python被TIOBE網站評為2010年年度語言;在2014年12月份IEEE Spectrum推出的編程語言排行榜中,Python取得了第5位的好名次;2015年12月份TIOBE編程語言排行榜上Python躍居第4位,僅次於Java、C和C ,已經成為腳本語言的標準;Top developer Languages of 2015更是把Python排到了第3位。Python是一門免費、開源的跨平臺高級動態編程語言,支持命令式編程、函數式編程,完全支持面向對像程序設計,擁有大量功能強大的內置對像、標準庫、涉及各行業領域[1]〖2〗Python可以這樣學[1]前言〖2〗的擴展庫以及眾多狂熱的支持者,使得各領域的工程師、科研人員、策劃人員甚至管理人員能夠快速實現和驗證自己的思路、創意或者推測。在有些編程語言中需要編寫大量代碼纔能實現的功能,在Python中直接調用內置函數或標準庫方法即可實現,大幅度簡化了代碼的編寫和維護。Python用戶隻需要把主要精力放在業務邏輯的設計與實現上,在開發速度和運行效率之間達到了完美的平衡,其精妙之處令人擊節贊嘆。如何學習Python要想改變世界,首先要改變自己的世界。要想學好Python,首先要從內心認識到Python的強大與美,樹立起學好、用好Python的信念並堅持不懈的努力,然後纔有可能攀登Python高手之巔。很多人從內心很恐懼Python,曾經有不少人問我: “Python功能那麼強大,肯定很難學吧?”其實,從編程語言發展史來看,人類語言和機器語言之間的鴻溝越來越小,人機交互越來越方便,越高級的編程語言越接近人類自然語言,越容易學習、掌握和運用,所以請不要有絲毫的恐懼和猶豫,放手去學便是。以我個人20年的經驗,不管學習和使用哪種編程語言,大概都需要經歷4個階段: 階段,能看懂和調試別人的代碼;第二階段,能在別人的代碼基礎上進行適當改寫;第三階段,能把多段已有的代碼拼湊起來實現自己需要的功能;第四階段,自己動手編寫代碼實現特定功能需求。一般而言,如果每天堅持3個小時學習Python,兩周左右應該就能入門,3個月後就可以展示出不錯的成果。當然,隨著學習和開發時間越來越長,功力會越來越深厚,能夠掌控的代碼行數(LOC)會越來越多,能夠控制的業務邏輯越來越復雜。毫無疑問,Python是一門快樂、優雅的語言,上手非常容易,稍加接觸就會喜歡上Python並能夠在短時間內寫出幾個小程序。與C語言繫列和Java等語言相比,Python大幅度降低了學習與使用的難度。Python易學易用,語法簡潔清晰,代碼可讀性強,編程模式非常符合人類思維方式和習慣。盡管如此,但這並不代表可以毫不費力地學會和熟練運用Python,在學習Python的路上沒有秘籍,也沒有哈利波特魔法杖,的捷徑就是勤學苦練。多看。讀書破萬卷,下筆如有神。學習Python也是這樣,不僅要多看書,還要看很多遍。很多知識點是互相關聯的,單獨一個知識點也無法實現稍微復雜一點的功能,書中很多案例代碼用到了後面章節的知識點,而後面章節的案例代碼又用到了前面章節的內容,這實在是無法避免的一件事。因此,不能奢望看一遍就能熟悉和掌握書中的內容,更不能奢望隻看一本書就能學會Python的全部知識。以我個人而言,除了Python官方幫助文檔和一些社區的資料之外,已經閱讀了超過25本Python方面的書,並且還在不斷地購買和閱讀別人編寫的Python書籍來提高自己對Python的理解。一書一茶一下午,這樣平淡的快樂或許有人難以體會,於我卻是樂此不疲。多練。太極拳論曰“由招熟而漸悟懂勁,由懂勁而階及神明,然非用力之久,不能豁然貫通焉”。陸遊的教子詩《鼕夜讀書示子聿》也認為“紙上得來終覺淺,絕知此事要躬行”。掌握了正確的方法以後,多練是的捷徑。一定要動手編寫和調試書上的代碼,踏踏實實把基礎掌握好再有針對性地學習自己需要的擴展庫,切忌隻看不練。很多人眼高手低,一看就會,一編就錯,根本原因就是練得太少了。子曰“學而時習之”,也是這個道理,充分說明練習的重要性。一層功夫一層天。欲窮千裡目,更上一層樓。多練,可以說是攀登Python高手之巔重要的途徑。多想。學而不思則罔,思而不學則殆。一味地看書和埋頭苦練是不行的,還要多想、多總結、多整理,爭取把學到的知識和技術徹底理解。理解得越多,需要記憶的就越少。多交流。獨學而無友,則孤陋而寡聞。除了重視基礎知識的學習和練習之外,還要多交流。除了Python官方網站和在線幫助文檔之外,經常瀏覽一些Python論壇並閱讀和調試其中的優秀代碼,汲取他人代碼中的精華。子曰“三人行必有我師焉,擇其善者而從之”,也是相同的道理。遇到不懂的問題也可以去一些論壇發帖提問,或者請教身邊的朋友和老師,但是提問之前一定要充分思考,有針對性地請教別人,經過充分思考以後再請教別人不僅是對別人的尊重,也能讓自己有更大的收獲。百思不得其解的問題經過高手一點撥纔能有茅塞頓開和恍然大悟的效果,這樣的交流更加有效,不浪費彼此的時間。曾經有學生拿一個十幾頁代碼的程序來問我問題,我問哪裡看不懂,他說整個程序都看不懂,想讓我幫忙看看然後把整篇代碼給他講講。正如大家所想的一樣,我直接拒絕了他。也曾經有讀者問我“怎麼用Python做圖像處理?”真的很抱歉,這樣沒營養的問題我實在沒法回答。俗話說,心急喫不了熱豆腐。控制好學習的進度和節奏纔能獲得好的效果,每天學習一點、進步一點、提高一點,時間久了會突然有一天發現自己已經成為Python高手,很有零存整取的感覺。欲速則不達,把下面這個圖送給各位讀者朋友共勉。
    學拳容易改拳難。不是所有慢悠悠的拳都是太極拳,也不是所有用Python語言寫出來的代碼都足夠Pythonic。很多人認為編程語言都是一通百通,無非是語法不一樣而已,認為“沒喫過豬肉也見過豬跑”,簡單看看語法就能立刻使用另外一種語言編寫程序。這樣的想法確實有一定的道理,但實際上就算天天看豬跑也沒法知道豬肉是啥味道,按照C語言的思路用Python寫出來的代碼不是好的Python程序,會顯得不倫不類,代碼會非常啰唆,不得Python精髓,完全不能發揮Python的優勢。應該在熟悉Python編程模式的基礎上,盡量嘗試從自然、簡潔的角度出發去思考和解決問題,這樣纔能寫出更加優雅、更加Pythonic的代碼,像詩一樣美。汝果欲學詩,功夫在詩外。沒有豐富的人生閱歷很難寫出優美並且有內涵、有靈魂的詩,學習Python也是這樣。歸根到底,Python是用來表達我們思想、算法或幫我們解決某個問題的語言和工具而已,idea纔是一個程序的靈魂。切不可把全部精力放到Python語言本身的學習上,而是要把主要精力放到自己的專業知識學習上,終再用Python把自己的思想或算法準確地表達出來。本書從不同領域選取了一些有代表性的案例,同時還結合自己多年的項目開發和教學經驗整理和設計了一些案例,希望能夠起到拋磚引玉的作用。內容組織與閱讀建議對於Python程序員來說,熟練運用優秀、成熟的擴展庫可以快速實現業務邏輯和創意,而Python語言基礎知識和基本數據結構的熟練掌握則是理解和運用其他擴展庫的必要條件。並且,在實際開發中建議優先使用Python內置對像和標準庫對像實現預定功能,這樣可以獲得更高的執行效率。本書前7章使用大量篇幅介紹Python編程基礎知識,通過大量案例演示Python語言的精妙與強大。然後從第8章開始介紹大量標準庫和擴展庫在GUI編程、網絡編程、數據庫編程、大數據處理、多線程與多進程編程、繫統運維、圖形圖像編程、科學計算可視化、密碼學編程、移動終端編程等多個領域的應用。後一章通過一個完整的繫統演示了Python在實際繫統開發中的應用。全書共16章,讀者在熟練掌握前7章之後,可以結合自己的專業領域或興趣愛好,在其他章節中有選擇地進行閱讀。第1章Python基礎。介紹如何選擇Python版本和開發環境,Python對像模型,數字、字符串等基本數據類型,運算符與表達式,常用內置函數,基本輸入輸出函數,擴展庫管理與使用。第2章Python序列。講解序列常用方法和基本操作,列表基本操作與常用方法,切片操作,列表推組與生成器推導式,序列解包,字典、集合基本操作與常用方法,字典推導式與集合推導式。第3章程序控制結構與函數設計。講解Python選擇結構、for循環與while循環,帶else子句的循環結構,break與continue語句,循環代碼優化,函數定義與使用,關鍵參數、默認值參數、長度可變參數等不同參數類型,全局變量與局部變量,參數傳遞時的序列解包,return語句,lambda表達式以及map()、reduce()、filter()、生成器與可調用對像。第4章面向對像程序設計。講解類的定義與使用,self與cls參數,類成員與實例成員,私有成員與公有成員,繼承與派生,屬性,特殊方法與運算符重載等內容,以及自定義類實現數組、矩陣、隊列、棧、二叉樹、有向圖、集合等數據結構。第5章字符串與正則表達式。講解字符串編碼格式,字符串格式化、替換、分割、連接、查找、排版等基本操作,正則表達式語法、正則表達式對像、子模式與子模式擴展語法、match對像,以及Python正則表達式模塊re的應用。第6章文件與文件夾操作。講解文件操作基本知識,Python文件對像,文本文件讀寫操作,二進制文件讀寫與對像序列化,文件復制、移動、重命名,文件類型檢測,文件完整性檢查,壓縮與解壓縮,文件夾大小統計,文件夾增量備份,刪除指定類型的文件,以及word、excel、zip、apk、rar等常見文件類型的操作。第7章異常處理結構、代碼測試與調試。講解Python異常類層次結構與自定義異常類,多種不同形式的異常處理結構,使用IDLE和pdb模塊調試Python程序,Pyth測試相關知識。第8章數據庫應用開發。介紹SQLite數據庫及其相關概念,Connection對像、Cursor對像、Row對像,使用Python操作Access、MS SQL Server、MySQL等關繫型數據庫以及使用Python操作NoSQL數據庫MongoDB。第9章網絡應用開發。講解計算機網絡基礎知識,TCP、UDP協議編程,網絡嗅探器與端口掃描器設計,域名解析與網頁爬蟲設計原理,代理服務器與FTP軟件原理與實現,使用Python編寫CGI程序,使用Flask和django框架開發Web應用,以及使用C#與Python混合開發Web應用。第10章多線程與多進程。講解Python標準庫threading和multiprocessing在多線程編程與多進程編程中的應用,以及多線程與多進程之間的數據共享與同步控制。第11章大數據處理。介紹大數據處理框架MapReduce、Hadoop和Spark基本概念,重點介紹MapReduce和Spark應用。第12章圖形編程與圖像處理。講解擴展庫PyOpenGL在計算機圖形學編程中的應用,擴展庫pillow在圖像編程中的應用。第13章數據分析與科學計算可視化。講解擴展庫numpy、scipy、matplotlib在科學計算與可視化領域的應用,以及標準庫statistics與擴展庫pandas在統計與分析、數據處理中的應用。第14章密碼學編程。介紹愷撒密碼、維吉尼亞密碼等經典密碼算法的Python實現,以pycrypto、rsa、hashlib等模塊為主講解安全哈希算法、對稱密鑰密碼算法DES與AES以及非對稱密鑰密碼算法RSA與DSA的應用。第15章tkinter編程精彩案例。講解如何使用Python標準庫tkinter進行GUI編程,通過大量實際案例演示基本組件的用法,包括用戶登錄界面設計、選擇類組件應用、簡單文本編輯器、畫圖程序設計與實現、電子時鐘、簡單動畫、屏幕任意區域截圖、音樂播放器、遠程桌面監控程序等。第16章課堂教學管理繫統設計與實現。通過一個綜合案例來演示前面章節知識的應用,提供了學生名單和題庫的導入、在線點名、在線提問、在線答疑、在線收作業、在線自測與考試、數據導出、防作弊與服務器自動發現、信息彙總、試卷生成等功能。本書的特點是信息量大、知識點緊湊、案例豐富、注釋量大、實用性強,把書中一些代碼進行簡單拼湊就可以滿足實際工作中需要的很多功能。全書近200個涉及不同行業領域的實用案例和上千個代碼片段並且配有大量注釋以方便理解,沒有插入多餘的程序輸出結果或軟件安裝截圖,隻保留了必要的代碼運行結果或截圖以供讀者參考和對比,充分利用寶貴的篇幅來介紹和演示盡可能多的知識,物超所值。本書作者具有16年程序設計教學經驗,先後講授過彙編語言、C/C /C#、Java、PHP、Python等多門程序設計語言,並且編寫過大量的應用程序,其中有幾套繫統已投入使用多年並一直在使用。本書內容結合了作者多年教學與開發過程中積累的許多經驗和案例,並巧妙地糅合進了相應的章節。本書對Python內部工作原理進行了一定深度的剖析,書中99%以上的案例均使用Python 3.5.1實現,這些代碼同樣也適用於Python 3.4.x(除少數幾個新特性之外,如矩陣運算符@)和版本Python 3.5.2以及馬上就要正式面世的Python 3.6.0,極個別案例使用Python 2.7.11實現(同樣適用於其他版本Python 2.7.x,包括的Python 2.7.12),並適當介紹了Python代碼優化、繫統編程和安全編程的有關知識,可以滿足不同層次讀者的需要。另外,書中通過小提示、小技巧、注意、拓展知識等形式介紹了更多的內容,所以全部內容遠比章節目錄所顯示的要多,需要認真閱讀纔能真正領會其中的奧妙。配套資源本書提供所有案例源代碼,可以登錄清華大學出版社網站(www.tup.com.cn)下載,或加入本書讀者群(QQ群號為282819961)下載配套資源並與作者直接交流,作者微信號Python_dfg也隨時期待您的反饋和交流,當然也歡迎關注微信公眾號“Python小屋”及時閱讀作者寫的案例代碼。本書適用讀者本書可以作為(但不限於):  本科、專科或研究生程序設計課程教材。 Python培訓用書。 具有一定Python基礎的讀者進階學習資料。 涉及Python開發的工程師、策劃人員、科研人員和管理人員閱讀書目。 打算利用業餘時間學習一門快樂的程序設計語言並編寫幾個小程序來娛樂的讀者學習資料。 少數對編程具有濃厚興趣和天賦的中學生課外閱讀資料。感謝首先感謝父母的養育之恩,在當年那麼艱苦的條件下還堅決支持我讀書,沒有讓我像其他同齡的孩子一樣輟學。感謝姐姐、姐夫多年來對我的愛護以及在老家對父母的照顧,感謝善良的弟弟、弟媳在老家對父母的照顧,正是有了你們,遠離家鄉的我纔能安心工作。當然,應該感謝的是妻子和孩子對我這個技術狂人的理解,這些年來她們已經習慣了正在喫飯的我突然想起個思路然後就跑到計算機前面去寫代碼了,習慣了我每個周末和假期都在教研室看書或寫代碼而不陪她們,也習慣了周末的中午和晚上做好飯以後再打電話讓我回家。為了表示對我的支持,她們還閱讀了本書定稿前的版本並發現了幾個錯別字。感謝每一位讀者,感謝您在茫茫書海中選擇了本書,衷心祝願您能夠從本書中受益,學到真正需要的知識!同時也期待每一位讀者的熱心反饋,隨時歡迎您指出書中的不足!本書的出版獲2014年山東省普通高校應用型人纔培養專業發展支持計劃項目資助。我校專業共建合作伙伴——浪潮優派科技教育有限公司總裁邵長臣先生審閱了全書,並提出很多寶貴的意見,在此致以誠摯的謝意。本書在編寫出版過程中也得到清華大學出版社的大力支持和幫助,在此表示衷心的感謝。
    董付國於山東煙臺2016年7月
    媒體評論
    評論
    在線試讀
    第5章字符串與正則表達式5.1字符串早的字符串編碼是美國標準信息交換碼ASCII,僅對10個數字、26個大寫英文字母、26個小寫英文字母及一些其他符號進行了編碼。ASCII采用1個字節來對字符進行編碼,多隻能表示256個符號。隨著信息技術的發展和信息交換的需要,各國的文字都需要進行編碼,不同的應用領域和場合對字符串編碼的要求也略有不同,於是分別設計了不同的編碼格式,常見的主要有UTF8、UTF16、UTF32、GB2312、GBK、CP936、base64、CP437等。UTF8編碼是國際通用的編碼,以1個字節表示英語字符(兼容ASCII),以3個字節表示中文,還有些語言的符號使用2個字節(如俄語和希臘語符號)或4個字節,UTF8對全世界所有國家需要用到的字符進行了編碼。GB2312是我國制定的中文編碼,使用1個字節表示英語,2個字節表示中文;GBK是GB2312的擴充,而CP936是微軟公司在GBK基礎上開發的編碼方式。GB2312、GBK和CP936都是使用2個字節表示中文,UTF8使用3個字節表示中文。不同編碼格式之間相差很大,采用不同的編碼格式意味著不同的表示和存儲形式,把同一字符存入文件時,寫入的內容可能會不同,在理解其內容時必須了解編碼規則並進行正確的解碼。如果解碼方法不正確就無法還原信息,從這個角度來講,字符串編碼也具有加密的效果。Python 3.x完全支持中文,使用Unicode編碼格式,無論是一個數字、英文字母,還是一個漢字,都按一個字符對待和處理。例如,在Python 3.5.1中執行下面的代碼,從代碼中可以看到,在Python 3.x中甚至可以使用中文作為變量名。 s='中國山東煙臺' len(s)#字符串長度,或者包含的字符個數6 s='SDIBT' len(s)5 s='中國山東煙臺SDIBT'#中文與英文字符同樣對待,都算一個字符 len(s)11 姓名='張三'#使用中文作為變量名 年齡=40 print(姓名)#輸出變量的值張三 print(年齡)40[1]〖2〗Python可以這樣學[1]第5章字符串與正則表達式〖2〗小提示: 在Windows平臺上使用Python 2.x時,input()函數從鍵盤輸入的字符串默認為GBK編碼,而Python程序中的字符串編碼則使用#coding顯式地指定,常用的方式有: #coding=utf-8#coding:utf-8#--coding:utf-8 --在Python中,字符串屬於不可變序列類型,使用單引號(這是常用的)、雙引號、三單引號或三雙引號作為界定符,並且不同的界定符之間可以互相嵌套。下面幾種都是合法的Python字符串: 'abc'、'123'、'中國'、"Python"、'''Tom said,"Let's go"'''除了支持序列通用方法(包括雙向索引、比較大小、計算素訪問、切片等操作)以外,字符串類型還支持一些特有的操作方法,如格式化、字符串查找、字符串替換(注意,不是原地替換)、排版等。但由於字符串屬於不可變序列,不能直接對字符串對素增加、修改與刪除等操作。另外,字符串對像提供的replace()和translate()方法也不是對原字符串直接進行修改替換,而是返回一個修改替換後的新字符串作為結果。Python支持短字符串駐留機制,對於短字符串,將其賦值給多個不同的對像時,內存中隻有一個副本,多個對像共享該副本,與其他類型數具有相同的特點。然而,這一點並不適用於長字符串,長字符串不遵守駐留機制,下面的代碼演示了短字符串和長字符串在這方面的區別。 a='1234' b='1234' id(a)== id(b)#短字符串支持內存駐留機制True a='1234'50 b='1234'50 id(a)== id(b)#長字符串不支持內存駐留機制False如果需要判斷一個變量是否為字符串,可以使用內置方法isinstance()或type()。 type('中國') class 'str' type('中國'.encode('gbk'))#編碼成字節串,采用GBK編碼格式 class 'bytes' bytes#bytes是Python的內置類 class 'bytes' isinstance('中國', str)True type('中國')== strTrue type('中國'.encode())== bytesTrue type('中國')== bytesFalse拓展知識: 轉義字符。如果大家學習過其他語言,應該了解轉義字符的概念,可以跳過這部分內容。轉義字符是指,在字符串中某些特定的符號前加一個斜線之後該字符將被解釋為另外一種含義,不再表示本來的字符。常見的轉義字符如表51所示。表51常見的轉義字符轉義字符含義\\\\b退格,把光標移動到前一列位置\\\\f換頁符\\\
    換行符\\\
    回車\\\水平制表符\\\\v垂直制表符\\\\\\\\一個\\\\\\\\'單引號\\\\"雙引號\\\\ooo3位八進制數對應的字符\\\\xhh2位十六進制數對應的字符\\\\uhhhh4位十六進制數表示的Unicode字符下面的代碼演示了轉義字符的用法: print('Hello\\\
    World')#包含轉義字符的字符串HelloWorld oct(65)'0o101' print('\\\\101')#3位八進制數對應的字符A hex(65)'0x41' print('\\\\x41')#2位十六進制數對應的字符A ord('董')33891 hex(_)'0x8463' print('\\\董')#4位十六進制數表示的Unicode字符董5.1.1字符串格式化的兩種形式如果需要將其他類型的數據轉換為字符串,或者嵌入其他字符串或模板中再進行輸出,就需要用到字符串格式化。Python中字符串格式化的格式如圖51所示,格式運算符%之前的部分為格式字符串,之後的部分為需要進行格式化的內容。圖51字符串格式化Python支持大量的格式字符,表52列出了比較常用的一部分。表52格式字符格式字符說明%s字符串(采用str()的顯示)%r字符串(采用repr()的顯示)%c單個字符%b二進制整數%d十進制整數%i十進制整數%o八進制整數%x十六進制整數%e指數(基底寫為e)續表格式字符說明%E指數(基底寫為E)%f、%F浮點數%g指數(e)或浮點數(根據顯示長度)%G指數(E)或浮點數(根據顯示長度)%%字符"%"下面的代碼演示了字符串格式化的用法: x=1235 so="%o" % x so'2323' sh="%x" % x sh'4d3' se="%e" % x se'1.235000e 03' "%s"%65#等價於str()'65' "%s"%65333'65333' '%d,%c'%(65, 65)組對字符串進行格式化,按位置進行對應'65,A' "%d"%"555"#試圖將字符串轉換為整數進行輸出,拋出異常Traceback(most recent call last):File " pyshell#19 ", line 1, in module "%d"%"555"TypeError: %d format: a number is required, not str int('555')#可以使用int()函數將合法的數字字符串轉換為整數555 '%s'%\\[1, 2, 3\\]'\\[1, 2, 3\\]' str((1, 2, 3))#可以使用str()函數將任意類型數據轉換為字符串'(1, 2, 3)' str(\\[1, 2, 3\\])'\\[1, 2, 3\\]'除了上面介紹的字符串格式化方法,目前Python社區更推薦使用format()方法進行格式化,該方法更加靈活,不僅可以使用位置進行格式化,還支持使用與位置無關的參數名字來進行格式化,並且支持序列解包格式化字符串,為程序員提供了非常大的方便。例如: print('{0:.3f}'.format(1/3))#保留3位小數0.333 1/30.3333333333333333 print("The number {0:,} in hex is: {0:#x}, in oct is {0:#o}".format(55))The number 55 in hex is: 0x37, in oct is 0o67 print("The number {0:,} in hex is: {0:x}, the number {1} in oct is {1:o}".format(5555, 55))The number 5,555 in hex is: 15b3, the number 55 in oct is 67 print("The number {1} in hex is: {1:#x}, the number {0} in oct is {0:#o}".format(5555, 55))The number 55 in hex is: 0x37, the number 5555 in oct is 0o12663 print("my name is {name}, my age is {age}, and my QQ is {qq}".format(name="Dong", qq="306467355", age=38))my name is Dong, my age is 38, and my QQ is 306467355 position =(5, 8, 13) print("X:{0\\[0\\]};Y:{0\\[1\\]};Z:{0\\[2\\]}".format(position))組同時格式化多個值X:5;Y:8;Z:13 weather=\\[("Monday", "rain"),("Tuesday", "sunny"),("Wednesday", "sunny"),("Thursday", "rain"),("Friday", "Cloudy")\\] formatter="Weather of '{0\\[0\\]}' is '{0\\[1\\]}'".format for item in map(formatter, weather):print(item)上面後一段代碼也可以改為下面的寫法: for item in weather:print(formatter(item))運行結果為Weather of 'Monday' is 'rain'Weather of 'Tuesday' is 'sunny'Weather of 'Wednesday' is 'sunny'Weather of 'Thursday' is 'rain'Weather of 'Friday' is 'Cloudy'拓展知識: 在字符串格式化方法format()中常用的格式字符。在字符串格式化方法format()中可以使用的格式主要有b(二進制格式)、c(把整數轉換成Unicode字符)、d(十進制格式)、o(八進制格式)、x(小寫十六進制格式)、X(大寫十六進制格式)、e/E(科學計數法格式)、f/F(固定長度的浮點數格式)、%(使用固定長度浮點數顯示百分數)。拓展知識: Python標準庫string還提供了用於字符串格式化的模板類Template。例如: from string import Template t=Template('My name is ${name}, and is ${age} years old.')#創建模板 d={'name':'Dong', 'age':39} t.substitute(d)#替換'My name is Dong, and is 39 years old.' tt=Template('My name is $name, and is $age years old.') tt.substitute(d)'My name is Dong, and is 39 years old.'5.1.2字符串常用方法〖*3/4〗1. find()、rfind()、index()、rindex()、count()find()和rfind()方法分別用來查找一個字符串在另一個字符串指定範圍(默認是整個字符串)中首次和後一次出現的位置,如果不存在則返回-1;index()和rindex()方法用來返回一個字符串在另一個字符串指定範圍中首次和後一次出現的位置,如果不存在則拋出異常;count()方法用來返回一個字符串在另一個字符串中出現的次數,如果不存在則返回0。 s="apple,peach,banana,peach,pear" s.find("peach")#返回次出現的位置6 s.find("peach", 7)#從指定位置開始查找19 s.find("peach", 7, 20)#在指定範圍中進行查找-1 s.rfind('p')#從字符串尾部向前查找25 s.index('p')#返回首次出現的位置1 s.index('pe')6 s.index('pear')25 s.index('ppp')#指定子字符串不存在時拋出異常Traceback(most recent call last):File " pyshell#11 ", line 1, in module s.index('ppp')ValueError: substring not found s.count('p')#統計子字符串出現的次數5 s.count('pp')1 s.count('ppp')#不存在時返回00拓展知識: 實際開發時應優先考慮使用Python內置函數和內置對像的方法,運行速度快,並且運行穩定。例如,下面的代碼用來檢查長字符串中哪些位置上的字母是a,通過運行結果可以發現,使用字符串方法find()的速度明顯要比逐個字符比較快很多。from string import ascii_lettersfrom random import choicefrom time import time第5章字符串與正則表達式5.1字符串早的字符串編碼是美國標準信息交換碼ASCII,僅對10個數字、26個大寫英文字母、26個小寫英文字母及一些其他符號進行了編碼。ASCII采用1個字節來對字符進行編碼,多隻能表示256個符號。隨著信息技術的發展和信息交換的需要,各國的文字都需要進行編碼,不同的應用領域和場合對字符串編碼的要求也略有不同,於是分別設計了不同的編碼格式,常見的主要有UTF8、UTF16、UTF32、GB2312、GBK、CP936、base64、CP437等。UTF8編碼是國際通用的編碼,以1個字節表示英語字符(兼容ASCII),以3個字節表示中文,還有些語言的符號使用2個字節(如俄語和希臘語符號)或4個字節,UTF8對全世界所有國家需要用到的字符進行了編碼。GB2312是我國制定的中文編碼,使用1個字節表示英語,2個字節表示中文;GBK是GB2312的擴充,而CP936是微軟公司在GBK基礎上開發的編碼方式。GB2312、GBK和CP936都是使用2個字節表示中文,UTF8使用3個字節表示中文。不同編碼格式之間相差很大,采用不同的編碼格式意味著不同的表示和存儲形式,把同一字符存入文件時,寫入的內容可能會不同,在理解其內容時必須了解編碼規則並進行正確的解碼。如果解碼方法不正確就無法還原信息,從這個角度來講,字符串編碼也具有加密的效果。Python 3.x完全支持中文,使用Unicode編碼格式,無論是一個數字、英文字母,還是一個漢字,都按一個字符對待和處理。例如,在Python 3.5.1中執行下面的代碼,從代碼中可以看到,在Python 3.x中甚至可以使用中文作為變量名。>>> s='中國山東煙臺'>>> len(s)#字符串長度,或者包含的字符個數6>>> s='SDIBT'>>> len(s)5>>> s='中國山東煙臺SDIBT'#中文與英文字符同樣對待,都算一個字符>>> len(s)11>>> 姓名='張三'#使用中文作為變量名>>> 年齡=40>>> print(姓名)#輸出變量的值張三>>> print(年齡)40[1]〖2〗Python可以這樣學[1]第5章字符串與正則表達式〖2〗小提示:   在Windows平臺上使用Python 2.x時,input()函數從鍵盤輸入的字符串默認為GBK編碼,而Python程序中的字符串編碼則使用#coding顯式地指定,常用的方式有: #coding=utf-8#coding:utf-8#--coding:utf-8 --在Python中,字符串屬於不可變序列類型,使用單引號(這是常用的)、雙引號、三單引號或三雙引號作為界定符,並且不同的界定符之間可以互相嵌套。下面幾種都是合法的Python字符串: 'abc'、'123'、'中國'、"Python"、'''Tom said,"Let's go"'''除了支持序列通用方法(包括雙向索引、比較大小、計算素訪問、切片等操作)以外,字符串類型還支持一些特有的操作方法,如格式化、字符串查找、字符串替換(注意,不是原地替換)、排版等。但由於字符串屬於不可變序列,不能直接對字符串對素增加、修改與刪除等操作。另外,字符串對像提供的replace()和translate()方法也不是對原字符串直接進行修改替換,而是返回一個修改替換後的新字符串作為結果。Python支持短字符串駐留機制,對於短字符串,將其賦值給多個不同的對像時,內存中隻有一個副本,多個對像共享該副本,與其他類型數具有相同的特點。然而,這一點並不適用於長字符串,長字符串不遵守駐留機制,下面的代碼演示了短字符串和長字符串在這方面的區別。>>> a='1234'>>> b='1234'>>> id(a)== id(b)#短字符串支持內存駐留機制True>>> a='1234'50>>> b='1234'50>>> id(a)== id(b)#長字符串不支持內存駐留機制False如果需要判斷一個變量是否為字符串,可以使用內置方法isinstance()或type()。>>> type('中國')>>> type('中國'.encode('gbk'))#編碼成字節串,采用GBK編碼格式>>> bytes#bytes是Python的內置類>>> isinstance('中國', str)True>>> type('中國')== strTrue>>> type('中國'.encode())== bytesTrue>>> type('中國')== bytesFalse拓展知識:  轉義字符。如果大家學習過其他語言,應該了解轉義字符的概念,可以跳過這部分內容。轉義字符是指,在字符串中某些特定的符號前加一個斜線之後該字符將被解釋為另外一種含義,不再表示本來的字符。常見的轉義字符如表51所示。表51常見的轉義字符轉義字符含義\\\\b退格,把光標移動到前一列位置\\\\f換頁符\\\
    換行符\\\
    回車\\\水平制表符\\\\v垂直制表符\\\\\\\\一個\\\\\\\\'單引號\\\\"雙引號\\\\ooo3位八進制數對應的字符\\\\xhh2位十六進制數對應的字符\\\\uhhhh4位十六進制數表示的Unicode字符下面的代碼演示了轉義字符的用法: >>> print('Hello\\\
    World')#包含轉義字符的字符串HelloWorld>>> oct(65)'0o101'>>> print('\\\\101')#3位八進制數對應的字符A>>> hex(65)'0x41'>>> print('\\\\x41')#2位十六進制數對應的字符A>>> ord('董')33891>>> hex(_)'0x8463'>>> print('\\\董')#4位十六進制數表示的Unicode字符董5.1.1字符串格式化的兩種形式如果需要將其他類型的數據轉換為字符串,或者嵌入其他字符串或模板中再進行輸出,就需要用到字符串格式化。Python中字符串格式化的格式如圖51所示,格式運算符%之前的部分為格式字符串,之後的部分為需要進行格式化的內容。圖51字符串格式化Python支持大量的格式字符,表52列出了比較常用的一部分。表52格式字符格式字符說明%s字符串(采用str()的顯示)%r字符串(采用repr()的顯示)%c單個字符%b二進制整數%d十進制整數%i十進制整數%o八進制整數%x十六進制整數%e指數(基底寫為e)續表格式字符說明%E指數(基底寫為E)%f、%F浮點數%g指數(e)或浮點數(根據顯示長度)%G指數(E)或浮點數(根據顯示長度)%%字符"%"下面的代碼演示了字符串格式化的用法: >>> x=1235>>> so="%o" % x>>> so'2323'>>> sh="%x" % x>>> sh'4d3'>>> se="%e" % x>>> se'1.235000e 03'>>> "%s"%65#等價於str()'65'>>> "%s"%65333'65333'>>> '%d,%c'%(65, 65)組對字符串進行格式化,按位置進行對應'65,A'>>> "%d"%"555"#試圖將字符串轉換為整數進行輸出,拋出異常Traceback(most recent call last):File "", line 1, in "%d"%"555"TypeError: %d format: a number is required, not str>>> int('555')#可以使用int()函數將合法的數字字符串轉換為整數555>>> '%s'%\\[1, 2, 3\\]'\\[1, 2, 3\\]'>>> str((1, 2, 3))#可以使用str()函數將任意類型數據轉換為字符串'(1, 2, 3)'>>> str(\\[1, 2, 3\\])'\\[1, 2, 3\\]'除了上面介紹的字符串格式化方法,目前Python社區更推薦使用format()方法進行格式化,該方法更加靈活,不僅可以使用位置進行格式化,還支持使用與位置無關的參數名字來進行格式化,並且支持序列解包格式化字符串,為程序員提供了非常大的方便。例如: >>> print('{0:.3f}'.format(1/3))#保留3位小數0.333>>> 1/30.3333333333333333>>> print("The number {0:,} in hex is: {0:#x}, in oct is {0:#o}".format(55))The number 55 in hex is: 0x37, in oct is 0o67>>> print("The number {0:,} in hex is: {0:x}, the number {1} in oct is {1:o}".format(5555, 55))The number 5,555 in hex is: 15b3, the number 55 in oct is 67>>> print("The number {1} in hex is: {1:#x}, the number {0} in oct is {0:#o}".format(5555, 55))The number 55 in hex is: 0x37, the number 5555 in oct is 0o12663>>> print("my name is {name}, my age is {age}, and my QQ is {qq}".format(name="Dong", qq="306467355", age=38))my name is Dong, my age is 38, and my QQ is 306467355>>> position =(5, 8, 13)>>> print("X:{0\\[0\\]};Y:{0\\[1\\]};Z:{0\\[2\\]}".format(position))組同時格式化多個值X:5;Y:8;Z:13>>> weather=\\[("Monday", "rain"),("Tuesday", "sunny"),("Wednesday", "sunny"),("Thursday", "rain"),("Friday", "Cloudy")\\]>>> formatter="Weather of '{0\\[0\\]}' is '{0\\[1\\]}'".format>>> for item in map(formatter, weather):print(item)上面後一段代碼也可以改為下面的寫法: >>> for item in weather:print(formatter(item))運行結果為Weather of 'Monday' is 'rain'Weather of 'Tuesday' is 'sunny'Weather of 'Wednesday' is 'sunny'Weather of 'Thursday' is 'rain'Weather of 'Friday' is 'Cloudy'拓展知識:  在字符串格式化方法format()中常用的格式字符。在字符串格式化方法format()中可以使用的格式主要有b(二進制格式)、c(把整數轉換成Unicode字符)、d(十進制格式)、o(八進制格式)、x(小寫十六進制格式)、X(大寫十六進制格式)、e/E(科學計數法格式)、f/F(固定長度的浮點數格式)、%(使用固定長度浮點數顯示百分數)。拓展知識:  Python標準庫string還提供了用於字符串格式化的模板類Template。例如: >>> from string import Template>>> t=Template('My name is ${name}, and is ${age} years old.')#創建模板>>> d={'name':'Dong', 'age':39}>>> t.substitute(d)#替換'My name is Dong, and is 39 years old.'>>> tt=Template('My name is $name, and is $age years old.')>>> tt.substitute(d)'My name is Dong, and is 39 years old.'5.1.2字符串常用方法〖*3/4〗1.   find()、rfind()、index()、rindex()、count()find()和rfind()方法分別用來查找一個字符串在另一個字符串指定範圍(默認是整個字符串)中首次和後一次出現的位置,如果不存在則返回-1;index()和rindex()方法用來返回一個字符串在另一個字符串指定範圍中首次和後一次出現的位置,如果不存在則拋出異常;count()方法
     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部