官术网_书友最值得收藏!

1.5 簡單交互

本節內容來介紹一些Python的簡單交互方式。

1.5.1 注釋

在正式開始寫代碼之前我先給你講一個知識點,叫作“注釋”,注釋是指解釋字句的文字。我們平時寫的代碼可能會很多、很雜或者很高深,如果不寫點說明性的文字在上面,也許過段時間可能會看不懂,但是直接在代碼里寫的文本不就是代碼了嗎?但實際上注釋是給我們自己看的,而不是需要執行的代碼,所以我們要用一個“#”區分注釋和普通代碼,“#”就是注釋符。所謂的注釋就是給我們自己做備注用的,解釋器在解釋代碼的時候遇到“#”就會自動略過它后面的全部代碼。舉一個例子吧,下面的代碼看起來有三行,但解釋器只會執行第二行和第三行的“print("hello world")”,因為“#”后面不管寫了什么,Python解釋器都不會關心。代碼如下:

這行是注釋,不會被執行
print("hello world")  # 111從這里開始是注釋,不會被執行
print("hello world")  # 222從這里開始是注釋,不會被執行

雖然注釋符很簡單,但我也建議盡量寫得優雅一點。根據PEP8編程規范,“#”號注釋的標準寫法是:“#”距離左邊代碼2個空格,距離右邊注釋的內容1個空格。當然這只是一種規范不是規則,你不遵守也是可以的。

如果要把注釋寫在多行,那么一行一行加“#”似乎有點麻煩,所以一般IDE都會提供注釋代碼的快捷鍵,比如說pycharm和vscode的注釋快捷鍵都是“Ctrl+/”。你可以同時選中多行代碼按一次“Ctrl”鍵和“/”鍵,這樣就能同時注釋多行了,再按一次“Ctrl”鍵和“/”鍵則取消注釋,這個操作你可以先自己練習一下,以后可能會經常用到。

1.5.2 輸出

上面那行“print("hello world")”已經成為你的第一行代碼了,它是什么意思呢?我們知道“print”是打印的意思,它的作用就像我們看到的那樣,會把括號里的東西打印到控制臺上。實際上,“print”是一個函數,括號里的是參數,注意這與數學課本上的函數不是一回事,現在你只需要記住這么用就可以了,關于函數的知識點我會在第3章講到。

上面我們說了“print”的作用很簡單,雖然簡單,但開發過程中它的必要性也很明顯的,我們可以通過它知道程序在運行過程中的某些信息,比如說執行到哪個函數、執行了哪個分支、處理了幾個文檔等,不然一個程序運行之后你啥也不知道就結束了,似乎不利于我們了解執行情況。

我們再回過頭看一下“print”函數,括號內寫的是一個用引號括起來的文本,這種用引號括起來的文本我們把它叫作字符串,字符串是Python六大數據類型之一,下一章我們會學習數據類型。我們試著打印數字類型,代碼如下:

print(11, 22)  # 輸出:11 22
print(1 + 2)  # 輸出:3

從上面的代碼可以看出,“print”除了可以打印字符串,也支持打印其他的數據類型,而且你可以傳入多個輸入值,每個輸入值之間使用逗號(半角)隔開即可,打印結果是用空格隔開的每個輸出值。

再來看下面的代碼,如果同時打印多個值,它默認是使用空格來隔開每個值,我們可以通過sep參數把分隔符改為逗號,輸出的結果就是用逗號連接每個值了。代碼如下:

print("hello", "world", "!")  # 輸出:hello world !
print("hello", "world", "!", sep=",")  # 輸出:hello,world,!

再看下面的代碼,print函數指定了一個控制結尾輸出的end參數,它默認值是“\n”,“\n”表示換行,所以你看到每次print之后都會換行。這里我們將end參數值改為嘆號,那么它打印結束后就不會換行而是用一個嘆號結束。代碼如下:

print("hello")
print("world")
print("hello", end="!")
print("world", end="!")

打印結果如下面代碼所示,前兩個打印完之后會換行,但后面兩個不換行。

hello
world
hello!world!

“print”函數還有一個f i le參數可以把輸出的結果保存為一個文件,但這個功能我們不怎么常用,如果你還記得的話,等后面學到文件操作的時候大家再回過頭來用一下。

1.5.3 輸入

上面演示了如何把打印結果輸出到控制臺方便我們查看信息,有很多時候我們還需要輸入數據,我們可以使用“input”函數獲取輸入的文本。當你運行代碼的時候,它會一直卡在等待輸入狀態,直到你輸入完并按下回車鍵,代碼才會繼續往下執行。代碼如下:

input()

如果只有上面那行代碼,我們按完回車鍵之后就結束了,那么我們輸入的值怎么被接收呢?而且如果只是一個輸入光標在閃,用戶也不清楚需要輸入什么呀,是不是給點提示文字會更好?我們把代碼改成這樣下面會更好;

num = input("請輸入你的學號:")
print("你輸入的學號是:", num)
# 執行結果如下
# 請輸入你的學號:5
# 你輸入的學號是:5

上面代碼的意思是把用戶輸入的內容保存到一個叫作“num”的變量中,相當于給用戶輸入的文本內容起了一個名字叫作“num”,名字而已,你也可以叫其他名,但是你要遵守一定的命名規則,Python的命令規則有哪些呢?請伸個懶腰然后繼續往下閱讀。

1.5.4 變量

變量就是一個可以改變的量。運行程序的過程中所有的數據都會占用內存,即在內存中開辟一塊空間進行存儲,每塊內存空間都會有一個內存地址,但地址很長。Python是一門高級語言,在我們寫代碼的時候都用地址去訪問數據顯然不太友好,所以我們給數據取一個名字,就像我們生活中與人交流,我們會用名字指代他而不是念他家地址,這個名字就是變量名。變量名是不能亂取的,要遵守以下規則:

· 只能由字母、數字或下畫線組成,例如“give_me_5”合法,“they_&”非法。

· 不能以數字開頭,例如“name1”合法,“2b”非法。

· 區分大小寫,例如pan、PAN、Pan都不是同一個變量。

· 不能與系統關鍵字一樣,例如if、when等,這些都是關鍵字,不能用作變量名。

上面的是命名規則,既然是規則,就是必須要遵守的,不遵守規則程序就會罷工不干。

下面還有一些規范,可不遵守,但為了代碼可讀性,建議遵守:

· 普通變量全部小寫,固定數值的變量全部大寫。

· 多個單詞用下畫線分隔,例如“is_general”,也可以使用駝峰式命名,例如“isGeneral”。

· 變量名盡量顧名思義,例如“input_age”就比“abc”容易閱讀。

· 當變量過長時可以適當縮寫,例如“image_expire_time”可以寫成“img_exp_time”。

知道了變量的意義和規則之后,我們來看看怎么使用變量。好吧,其實上面已經用過變量了,沒錯,就是使用一個“=”,注意這個等號與數學中的等號意義完全不一樣,在編程語言中我們把等號叫作賦值號,作用是把等號右邊的值賦值給左邊的變量,即給右邊的數據取了一個名字。另外根據規范,賦值號左右兩邊應該各有一個空格。我們可以用圖1-37簡單表示數據在內存中與變量名的關系(實際上更復雜)。

圖1-37  Python的變量與內存關系

假設圖1-37表示的是內存中的某一塊區域,上面有很多數據,并且每個數據都有對應的內存地址,除此之外還有變量名指向數據,比如說將“9527”這個數據取名為“course_id”,將“Python”這個數據取名為course_name和select_curse,沒錯,一個數據可以起多個變量名,就像一個人可以有多個名字一樣。我們把圖1-37用代碼表示:

course_id = 9527
course_name = "Python"
select_name = "Python"
# 起多個變量名也可以連寫, select_name = course_name = "Python"
print(id(course_id))  # 打?。?914990655408
print(id(course_name), id(select_name))  # 打?。?348198622768
2348198622768

我們可以使用id()這個函數獲取某個變量的內存地址,分別打印出這三個變量的地址,不難發現,“course_name”和“select_name”的地址是一樣的,證明這兩個變量實際上是同一個。提示一下,由于Python底層設計的原因,用id()函數獲取到的并非真實的內存地址,而是經過一些處理之后得到的值,不過如果你沒有獲取真實地址的需求,用它表示內存地址也沒什么問題。

補充一個知識點,Python的變量是弱類型,你不需要指定該變量是字符串還是數字類型,后期也可以隨意更改類型。有些語言,例如Java的變量是強類型,在使用前就要聲明變量類型,后期變量也只能被賦值該類型的變量值,例如Java中代碼寫法“private int age= 18;”,用Python寫就是“age = 18”, 是不是感覺Python的語法簡潔明了多了?

主站蜘蛛池模板: 博罗县| 吴旗县| 兴国县| 南丰县| 留坝县| 海盐县| 子洲县| 台安县| 吉水县| 永靖县| 西城区| 伊春市| 渭源县| 濉溪县| 舞阳县| 磐石市| 奉化市| 马龙县| 金川县| 新蔡县| 青海省| 石城县| 南宁市| 石屏县| 名山县| 岑溪市| 乐亭县| 马尔康县| 兴文县| 南通市| 仁布县| 屏山县| 长治市| 西城区| 类乌齐县| 武汉市| 滦南县| 永康市| 东乌| 湾仔区| 伊吾县|