最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

oeasy教您玩轉(zhuǎn)python - 004 - # 調(diào)試程序

2022-02-07 09:36 作者:oeasy  | 我要投稿

調(diào)試程序 ??

回憶上次內(nèi)容

  • py 的程序都是寫在明面上的

  • 所有需要執(zhí)行的事情都明著寫到了 py 文件中

  • python3 解釋 py 文件進行執(zhí)行

  • 可以下載人家寫好的 py 文件

  • 下載的 py 文件可以直接讀懂

  • 編寫程序的人怎么掙錢呢?

開源

  • Python 程序確實是直接就能看到源代碼的

  • 不能加密既是缺點也是優(yōu)點

  • 缺點:

    • 無法保密

    • 誰都能看見和改寫

    • 傳統(tǒng)的軟件賣的是序列號

    • 思路是以前許可證的思路

  • 由一個核心節(jié)點進行授權(quán)

  • 其他用戶得到某些許可

    • 甚至是持證搶劫的許可

  • 現(xiàn)代的許可證 license 主要都是賦予用戶更多權(quán)利

  • 比如 GPL 許可證

GPL

  • GPL 又稱為 Copyleft

    • 這是一種英語的調(diào)侃

    • 因為 Copyright 的那個 right 有多個含義

  • 用作 copyright 的時候

    • right 是權(quán)利的意思

    • 但它同時還是“右邊”的意思

  • 所以和他相反的就是 Copyleft

    • 表示這是和 Copyright 是走另一邊的

  • GPL 授權(quán)對被授權(quán)者是有要求的,它重點強調(diào):

    • 第一:和大部分開源軟件一樣,作品放在這里,你可以用,作者不為任何物理損失負責

    • 第二:如果你,基于這個作品衍生了新的作品,那么這個新的“作品”,必須符合 GPL 協(xié)議,否則你就失去原作品的授權(quán)

    • 第三,符合 GPL 協(xié)議的作品,在提供給它的使用者的時候,必須同時提供該作品的 GPL 部分的源代碼,不能對使用者做出限定

  • 這聽起來很繞

  • 其實本來是想知道開放了源代碼程序員是怎么掙錢的???

現(xiàn)狀

  • 目前國內(nèi)市場定制開發(fā)軟件的需求越來越少

  • 現(xiàn)在更多的是網(wǎng)站和移動應(yīng)用

  • 把代碼捂在自己手里是沒有用的

  • 源代碼的開放是發(fā)展的趨勢

    • 開放源代碼可以讓更多人才參與開發(fā)、修改和傳播

    • linux、debian、vim、python 的源代碼大家都能看到和參與

  • 這樣的個人軟件開發(fā)者主導(dǎo)的項目依靠人民戰(zhàn)爭戰(zhàn)勝了軟件巨頭

    • 參與的人越多

    • 知名度越高

    • 項目越活越

    • 越有可能留得下來

    • 讓更多的人知道和參與

    • 個人也因為參與的項目而更知名

  • 不但軟件

    • 硬件、游戲、甚至虛擬角色歌姬等等方面

    • 開源項目也越來越多

  • 不過時代的洪流是從最早的水滴開始的

  • 最早的python是由Guido開發(fā)的

    • 當時 Guido 如何面對如何的抉擇呢?

時代

  • 最早 Guido 確實曾經(jīng)在 CWI 工作

    • CWI是荷蘭的數(shù)學與計算機科學國家研究所

  • 他希望有一種語言能夠像C語言那樣

    • 全面調(diào)用計算機的功能接口

    • 又能像shell那樣,輕松的編程

  • 荷蘭的CWI 數(shù)學和計算機國家研究所開發(fā)了一種ABC語言

    • 當時范羅蘇姆在CWI工作,并參與到ABC語言的開發(fā)

    • 他將自己所知的一切語言設(shè)計知識都傾注在這個項目上

    • 盡管已經(jīng)具備了良好的可讀性和易用性

    • 但ABC語言最終還是沒有流行起來。

  • 確實是在那里出現(xiàn)的 ABC 給 后來的 python 很大啟發(fā)

  • Guido 后來去了 cnri

    • 荷蘭的國家研究中心

  • 研究項目的經(jīng)費確實是 cnri 出的

  • 95 年當時還沒有興起開源運動

發(fā)展

  • 當時的許可證是收費的

    • guido 想把他做成開源的

    • 但是沒有立場

    • 畢竟 cnri 花了錢

  • 還有些是他在 cwi 的時候編寫的程序 改的 bug

  • 從python的所有者上面可以其實可以看到Guido的工作軌跡

  • 雖然當時還沒有開源這些概念和詞匯

Guido 的考量

  • 在 python 的 license 里面提到了 cwi 和 cnri

  • 當時 python 的主要成員開始討論

    • python 應(yīng)該繼續(xù)免費開源還是商業(yè)

    • Guido 認為如果商業(yè)化

    • python 的用戶就會離開

  • 最終選擇開源的語言和項目

    • 貢獻者和社區(qū)就是在這基礎(chǔ)上發(fā)展起來的

  • 但商業(yè)是世界運行的底層邏輯

    • 強大的商業(yè)資本方會有律師、媒體

    • python 在這商業(yè)的世界里舉步維艱

    • 這曾讓 Guido 很苦惱

轉(zhuǎn)機

  • 開源運動的期末著作給了他啟發(fā)

    • 他開始選擇 gpl 協(xié)議

  • 后來互聯(lián)網(wǎng)興起

    • 其中一個網(wǎng)站 BeOpen.com 基于開源技術(shù)制作

  • BeOpen 看到 Guido 的困惑

    • 就想給他一份呢薪水

    • 工作就是完善 python

    • 這是很好的機會

    • Guido 帶著 3 個 CNRI 的同事一起去了

  • 這時候 CNRI 的管理層慌了

    • 他們覺得 Guido 瘋了

    • 那是個創(chuàng)業(yè)公司

    • 找他談話

    • 去了就別想再回來

    • 但是不可阻止了

  • 人走了 CNRI 的項目自然也就黃了

    • 不過去 beopen 的 2000 年

    • 正好是互聯(lián)網(wǎng)泡沫興起的時候

    • beopen 想做的是開源門戶

    • 泡沫破裂之后又怎么辦呢?

后來

  • 他從 beopen.com 之后

    • Guido 很擔心 python 源代碼的所有權(quán)問題

  • 后來 Guido 去了 soap

    • 在那里他咨詢了律師

    • 并建立了 python 基金會

    • 明確了 python 的協(xié)議和所屬問題

  • 開源運動已經(jīng)發(fā)展起來了

    • 他先加入 google

    • 后來在 150 人的時候加入 dropbox

  • 2020年 去了微軟

  • 這就是Guido和python的歷史

  • 我們用 python 為 Guido 寫一個簡歷吧

繼續(xù)編輯 py 文件

#用vi打開并編輯guido.pyvi guido.py

  • 上次輸出了兩行內(nèi)容

  • 這次我們復(fù)制成 6 行

  • gg將光標移動回到最開頭

  • yG從當前位置(最開頭)復(fù)制到結(jié)尾

  • 2P粘貼 2 次

  • i重新切換到插入模式為輸出添加年份標號

print("1982------Guido in cwi")

print("1995------Guido in cnri")

print("2000------Guido in beopen")

print("2005------Guido in google")

print("2012------Guido in dropbox")

print("2020------Guido in microsoft")


  • 完成之后<kbd>esc</kbd> 切換到正常模式

  • :w|!python3 % 保存并用 python 解釋當前程序

  • 可以看到輸出了標了號的 6 行

  • 這 6 行的順序就是按照我們標號的順序來的

順序執(zhí)行

  • 這個過程叫做順序執(zhí)行

  • 按照步驟,有先后次序的

  • 按照時間順序

順序播放

  • 就像我們聽語音是挨排聽的

  • 順序播放是按照列表順序播放的

音符順序

  • 演奏音符也是一個個按照順序演奏,才是這首歌曲

  • 調(diào)換一下次序,就亂了,不是這個歌了

  • 不過其實也是一種思路。。。??

按部就班

  • 我們的生活也是按照線性的時間線順序完成的

學習

  • 學習也一樣

  • 要按照時間的次第

  • 一步一步來

  • 啥都一樣,別著急!

  • 欲速則不達

  • 那他是怎么解釋執(zhí)行的呢???

嘗試調(diào)試

  • 那 python 程序到底是怎么一步步解釋執(zhí)行的呢???

  • 我們可以一步一步運行來調(diào)試

  • 使用pdb來進行調(diào)試

    • pdb的意思是python's debugger??

python3 -m pdb guido.py#或者使用pdb3

  • 由于程序不知道哪里出的問題

  • 所以一步步來執(zhí)行

  • 一行行執(zhí)行的目的是去除bug,也就是debug

  • 可是為什么把程序錯誤叫做 bug ?? 呢?

第一個錯誤 bug

  • 歷史上第一個程序錯誤是因為電腦里面飛進來一只蟲子bug??

  • 所以后來管調(diào)試程序錯誤叫做 debug

  • 這個 bug?? ?是誰找出來的呢?

計算之母

  • 找到 bug 的第一個調(diào)試員或者叫程序員是一位女性

  • 和現(xiàn)在程序員大多是男性不同

  • 因為當時編程都得檢查線路

  • 跟編織很像

  • 很容易變得一團亂麻

  • 需要很細心、有條理的人???????

  • Grace Murray Hopper

故障

  • 當時格蕾絲和她的同事們正艱難地搞清楚

  • 他們正在使用的馬克 II 電腦出現(xiàn)了什么故障

    • 最后,他們發(fā)現(xiàn)一只活蛾被困在控制電路的一個電子開關(guān)中

  • 不要害怕 bug,因為 bug 是程序員存在的基礎(chǔ)

  • 如果沒有了bug,那也就不需要程序員了

  • 程序員本身就是 bug 一般的存在 ??

  • 讓我們來 debug!??

進行調(diào)試

命令細節(jié)

  • 運行之后

    • h 查詢 help 幫助

    • l 進行 list 列表

    • n 進行 next 向下執(zhí)行

    • q 執(zhí)行 quit 退出

  • 這得動手試一試

完成調(diào)試

  • 一路 next 下去

  • 程序執(zhí)行完畢了

  • 整個程序就算執(zhí)行完成了

  • python 解釋器 就是這么一步步地解釋執(zhí)行的

總結(jié)

  • py 的程序是按照順序

    • 一行行挨排按順序解釋執(zhí)行的

    • 我們可以 python3 -m pdb hello.py 來對程序調(diào)試

    • 調(diào)試的目的是去除 bug

    • 別害怕 bug

    • bug 會有提示

    • 我們也就知道如何調(diào)試 debug

  • python3 這個解釋器到底是怎么執(zhí)行的呢???

  • 我們下次再說!*



oeasy教您玩轉(zhuǎn)python - 004 - # 調(diào)試程序的評論 (共 條)

分享到微博請遵守國家法律
上犹县| 靖宇县| 深水埗区| 武功县| 九龙坡区| 拉萨市| 镇宁| 梁河县| 乃东县| 子洲县| 博乐市| 阿合奇县| 且末县| 普格县| 兴化市| 故城县| 石柱| 日土县| 云安县| 合水县| 饶平县| 巢湖市| 额济纳旗| 兴仁县| 利川市| 衡南县| 海伦市| 永安市| 顺昌县| 三门县| 怀宁县| 新绛县| 简阳市| 涟水县| 中阳县| 宜章县| 额尔古纳市| 治县。| 格尔木市| 沭阳县| 滦平县|