Hello World!
回憶上次内容
- 我們這次設定了斷點
- 設定斷點的目的是更快地調試
- 調試的目的是去除
bug
- 别害怕
bug
- 一步步地總能找到
bug
- 這就是程式員基本功
- 調試
debug
- 這個bug蟲子🕷是有曆史淵源的
- 程式設計也是有曆史迷因的
- 為什麼寫程式都從hello world開始?🤔
為啥總是 Hello World
Hello World
奇怪🧐
- 不論學習什麼程式設計語言
- 總是從
開始Hello World
- 為什麼呢?🤔
起源
- 這一切都要從頭說起
-
作業系統的老祖宗 linux
unix
- 和
對應的程式設計語言 unix
c
- 那是一切開始的地方
兩人
- 1969 年,由于所在
貝爾實驗室的 at&t
項目失敗Multics
- 無所事事的兩人
-
Kenneth Thompson
-
Dennis Ritchie
遊戲
- 希望能在 PDP 機器上繼續玩一個遊戲
- 這個遊戲是
下的 Multics
star travel
- 為了玩這個遊戲
- 他們想要做一個作業系統
unix
- 為了制作作業系統
- 他們創造了
語言的編譯器c
- 當時
-
是他們為了開發 c
而制作的語言unix
-
是為了能玩 unix
而制作的系統star travel
hello world!
-
和 c
隻能運作在當時的機器上unix
- 沒有文檔
- 沒有書籍
- 甚至沒有人知道
- 與他們同在 bell 實驗室的
a.k.a Brian Wilson Kernighan
bwk
- 開始寫 c 語言的類似于文檔說明書的東西
手稿
- 主體的函數叫做
函數main
- 裡面輸出函數叫做
函數printf
- 不管是
函數,還是main
函數都有printf
小括号
-
從那個時候就和函數相關小括号
- 為什麼輸出字元要用
來當做函數名呢?printf
print 來曆
- 1974 年的手稿😱
- 寫在打字機用紙的上面
- 側面的空洞是向上送紙用的
- 是不是很像膠片
- 打字機就是當時的顯示器
- 是以用
來表示輸出print
-
的意思是 f
格式format
-
是按格式輸出printf
細節
-
後面有 printf函數
小括号
-
裡面放的是 小括号
的 函數
參數
-
中print("hello world")
-
的 函數print
是 參數
"hello world"
-
引起來意味着雙引号
是 hello world
字元串
- 輸出的内容就是這個字元串
("hello world")
- 小括号和雙引号的風格延續到了
python
- 從
開始c語言
- 最早的入門教學程式都做一個
hello world
- 習慣成自然之後
- 所有的程式設計語言第一個例子都是
hello world
- 是一種規矩或者文化
- 這個梗一直流傳到今天
- 除了時間因素之外
- 還有一個重要的原因
成書
- 有了教材就有更多人學
- 有更多人學就有更多人參與其中
- 正回報在逐漸成型
教材風格
- 1978 年,
和Kernighan
出版了這本書Ritchie
- 不厚,很薄
- 輕松的語言風格
- 因為
的目的就是讓人像玩一樣程式設計c
- 而不是記憶各種 cpu 彙編指令
- 蓬勃發展的計算機技術
- 使得
語言成為系統語言的老大c
-
的源代碼就是用純 c 編的python
-
核心 也是用純 c 編的linux
- 是以
還是非常核心的啊c
- 雖說
是用純 python
編寫的c
- 不過
一旦出現之後就可以簡化好多東西python
- 比如我們的遊樂場裡面有很多的函數和子產品
- 我們為什麼能認識print?
- 而不認識pront?
内置函數
- dir()
- 可以看到遊樂場上來就自帶的子產品
- 比如 dir() 這個函數
- dir的意思是directory 文檔目錄
- 這裡列出的是已經導入子產品的目錄
- 調用這個函數可以知道目前遊樂場載入了哪些子產品
- 比如
這個子產品__builtins__
- 這
裡面又有些什麼呢?__builtins__
dir()
-
dir(__builtins__)
- 注意前後都是兩個下劃線
-
意思是在裡面建構好的__builtins__
- 這裡面有好多内置的函數
- 包括我們熟悉的
- exit()
- print()
- dir()
- help()
- 為什麼print直接就能用
- 因為他在預設的這個
子產品中__builtins__
- 如果我想要查詢print函數更詳細的資訊應該如何呢?
help(print)
- 什麼不會就help什麼
-
help(print)
- 把函數名作為參數傳進去
- 類似的還可以查詢
- help(quit)
- help(dir)
- help(help)
- 如果我想要查詢__builtins__子產品更詳細的資訊應該如何呢?
help(__builtins__)
help(__builtins__)
-
help(__builtins__)
- 注意内置子產品builtins左右各有兩個下劃線
- 我們可以查詢到
子產品的幫助檔案__builtins__
- 傳回的這些函數和子子產品都隸屬于
這個子產品__builtins__
- 除了内置的、這些不用引入就可以用的子產品之外
- 還可以引入外部子產品
導入外部子產品
- 就像我們上次導入ast一樣
- 這次我們導入的是
__hello__
- 注意hello兩邊都有兩個下劃線
import __hello__
- import
- port是港口 來自于海洋文化
- import 是進口 是導入
- export 是出口 是導出
- import 後面接空格
- 然後是被導入的外部子產品名稱
__hello__
-
左右也是兩個下劃線hello
- 把
子產品導入到遊樂場__hello__
- 可以輸出經典的一句話
- 注意!
- 導入
子產品前後遊樂場中的子產品增加了__hello__
- 想要深入了解
應該怎麼辦呢?__hello__
什麼不會就help什麼
help(__hello__)
總結
-
不是從來就有的hello world
- 來自于
和unix
c
- 雖然我們今天有各種先進的學習手段
- 最早的進階語言學習是從最早的那張打字機用紙的手寫代碼起源的
- 輸出用的函數名是
列印print
- 也是從那個時候來的
- 最早輸出的是字元串是
"hello world"
- 也是從那個時候來的
- 這就成了一個迷因
- 等等!
- 計算機裡面不都是二進制的 0 和 1 嗎
- 哪裡來的
中的 hello
之類的h
- github->https://github.com/overmind1980/oeasy-python-tutorial
- gitee->https://gitee.com/overmind1980/oeasypython
- 視訊->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy