從零開始學 Python 之基礎語法

前言

大家好狮鸭,這里是首發(fā)于「癡海」公眾號從零開始學習 Python 系列教程多搀。學習一門語言最好的辦法歧蕉,就是教懂別人。在這公眾號康铭,我會從 Python 最基礎的教程寫起惯退,慢慢一步步進階。寫這教程同時也是我自己對于 Python 知識的復習鞏固从藤。喜歡的朋友可以點擊關注催跪,一到周五每天更新 Python 相關知識锁蠕,周六周日則會寫關于認識一些的文章。話不多說懊蒸,開始今天的知識荣倾。

Python3 基礎語法

編碼

默認情況下,Pyhton3 源碼文件以 UTF-8 編碼骑丸,所有字符串都是 unicode 字符串舌仍。UTF-8 編碼相比大家都經(jīng)常接觸通危,但 UTF-8 到底是什么推姻?卻很少有人去思考忍燥,只是懂的在編程中想要不出現(xiàn)中文亂碼厂捞,就需要使用 UTF-8 編碼格式机久。

UTF-8(8-bit Unicode Transformation Format)是一種針對 Unicode 的可變長度字符編碼胧弛,也是一種前綴碼软棺。它可以用來表示 Unicode 標準中的任何字符斥黑,且其編碼中的第一個字節(jié)仍與 ASCII 兼容憾股,這使得原來處理 ASCII 字符的軟件無須或只須做少部分修改斩熊,即可繼續(xù)使用霸株。因此,它逐漸成為電子郵件扰路、網(wǎng)頁及其他存儲或發(fā)送文字的應用中尤溜,優(yōu)先采用的編碼。

1992 年初汗唱,為創(chuàng)建良好的字節(jié)串編碼系統(tǒng)以供多字節(jié)字符集使用宫莱,開始了一個正式的研究。ISO/IEC 10646的初稿中有一個非必須的附錄哩罪,名為 UTF梢睛。當中包含了一個供 32 比特的字符使用的字節(jié)串編碼系統(tǒng)。這個編碼方式的性能并不令人滿意识椰,但它提出了將 0-127 的范圍保留給 ASCII 以兼容舊系統(tǒng)的概念绝葡。

發(fā)展到 1996 年起,微軟的 CAB(MS Cabinet)規(guī)格在 UTF-8 標準正式落實前就明確容許在任何地方使用 UTF-8 編碼系統(tǒng)腹鹉。但有關的編碼器實際上從來沒有實現(xiàn)這方面的規(guī)格藏畅。

標識符

標識符(英文對應詞:identifier,縮寫為 ID ),又稱為識別碼愉阎,是一個用來識別物件的名稱绞蹦,識別對象可能是概念、具體可數(shù)的物體或是不可數(shù)的物質(zhì)榜旦。標識符可能是字幽七、編號、字母溅呢、符號澡屡,也可能是由上述元素所組成。

而在 Python 中標識符的使用需要遵守一些規(guī)則:

  • 第一個字符必須是字母表中字母或下劃線_咐旧。
  • 標識符的其他的部分由字母驶鹉、數(shù)字和下劃線組成。
  • 標識符對大小寫敏感铣墨。

在 Python 3 中室埋,非 ASCII 標識符也是允許的了。

python 保留字

保留字即關鍵字伊约,我們不能把它們用作任何標識符名稱姚淆。Python 的標準庫提供了一個 keyword 模板,可以輸出當前版本的所有關鍵字:

>>> import keyword>>> keword.kwlist

輸出的結果:

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

注釋

在計算機語言中屡律,注釋是計算機語言的一個重要組成部分肉盹,用于在源代碼中解釋代碼的功用,可以增強程序的可讀性疹尾,可維護性上忍,或者用于在源代碼中處理不需運行的代碼段,來調(diào)試程序的功能執(zhí)行纳本。

注釋在隨源代碼進入預處理器或編譯器處理后會被移除窍蓝,不會在目標代碼中保留其相關信息。

Python 中單行以 # 開頭

#!/usr/bin/python3# 第一個注釋print("Hello, Python!") # 第二個注釋

多行注釋可以用多個 # 號還有 ''' 和 """:

#!/usr/bin/python3# 第一個注釋# 第二個注釋'''第三注釋第四注釋'''"""第五注釋第六注釋"""print ("Hello, Python!") 

行與縮進

python 最具特色的就是使用縮進來表示代碼塊繁成,不需要使用大括號 {}吓笙。

縮進的空格數(shù)是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數(shù)巾腕。實例如下:

if True:    print ("True")else:    print ("False")

以下代碼最后一行語句縮進數(shù)的空格數(shù)不一致面睛,會導致運行錯誤:

if True:    print ("Answer")    print ("True")else:    print ("Answer")  print ("False")    # 縮進不一致,會導致運行錯誤

以上程序由于縮進不一致尊搬,執(zhí)行后會出現(xiàn)類似以下錯誤:

 File "test.py", line 6    print ("False")    # 縮進不一致叁鉴,會導致運行錯誤                                      ^IndentationError: unindent does not match any outer indentation level

多行語句

Python 通常是一行寫完一條語句,但如果語句很長佛寿,我們可以使用反斜杠(\)來實現(xiàn)多行語句幌墓。

total = item_one + \        item_two + \        item_three

在 []、{}、或()中的多行語句常侣,不需要使用反斜杠(\)蜡饵。

total = ['item_one', 'item_two', 'item_three',        'item_four', 'item_five']

數(shù)字(Number)類型

python 中數(shù)字有四種類型:整數(shù)、長整數(shù)胳施、浮點數(shù)和復數(shù)溯祸。

  • int(整數(shù)),如 1舞肆,只有一種整數(shù)類型 int焦辅,表示為長整形,沒有 python2 中的 Long胆绊。
  • bool(布爾),如 true
  • float(浮點數(shù))欧募,如1.25压状、3E - 2
  • complex(復數(shù)),如 1 + 2j跟继、1.1 + 2.2j

字符串(String)

  • python 中單引號和雙引號使用完全相同
  • 使用三引號('''或""")可以指定一個多行字符串种冬。
  • 轉義符 ""
  • 反斜杠可以用來轉義,使用 r 可以讓反斜桿不發(fā)生轉義舔糖。如 r"this is a line with \n"娱两。
  • 按字面意義級聯(lián)字符串,如“this”"is" "string" 會被自動轉換為 this is string金吗。
  • 字符串可以用 + 運算符連接在一起十兢,用 * 運算符重復。
  • Python 中的字符串有兩種索引方式摇庙,從左往右以 0 開始旱物,從右往左以 -1 開始。
  • Python 中的字符串不能改變卫袒。
  • Python 沒有單獨的字符類型宵呛,一個字符就是長度為 1 的字符串。
  • 字符串的截取的語法格式如下:變量[頭下標:尾下標]
word =  '字符串'sentence = "這是一個句子"paragraph = """這是一個段落夕凝,可以由多行組成"""

實例

str='KeepOnCode'print(str)                 # 輸出字符串print(str[0:-1])           # 輸出第一個到倒數(shù)第二個的所有字符print(str[0])              # 輸出字符串第一個字符print(str[2:5])            # 輸出從第三個開始到第五個的字符print(str[2:])             # 輸出從第三個開始的后的所有字符print(str * 2)             # 輸出字符串兩次print(str + '你好')        # 連接字符串print('------------------------------')print('hello\Koc')      # 使用反斜杠(\)+n轉義特殊字符print(r'hello\Koc')     # 在字符串前面添加一個 r宝穗,表示原始字符串,不會發(fā)生轉義

空行

函數(shù)之間或類的方法之間用空行分隔码秉,表示一段新的代碼的開始逮矛。

類和函數(shù)入口之間也用一行空行分隔,以突出函數(shù)入口的開始转砖。

空行與代碼縮進不同橱鹏,空行并不是 Python 語法的一部分。書寫時不插入空行,python 解釋器運行也不會出錯莉兰。但是空行的作用在于分隔兩段不同功能或含義的代碼挑围,便于日后代碼的維護或重構。

記滋腔摹: 空行也是程序代碼的一部分杉辙。

等待用戶輸入

執(zhí)行下面的程序在按回車鍵后就會等待用戶輸入:

input("\n\n按下 enter 鍵后退出")

以上代碼中 ,"\n\n"在結果輸出前會輸出兩個新的空行捶朵。一旦用戶按下 enter 鍵時蜘矢,程序?qū)⑼顺觥?/p>

同一行顯示多條語句

Python 可以在同一行中使用多條語句,語句之間使用分號(;)分割综看,以下是一個簡單的實例:

import sys;x = 'Koc';sys.stdout.writ(x + '\n')

執(zhí)行以上代碼品腹,輸出結果為:

Koc7

多個語句構成代碼組

縮進相同的一組語句構成一個代碼塊,我們稱之為代碼組红碑。

像 if舞吭、while、def 和 class 這樣的復合語句析珊,首行以關鍵字開始羡鸥,以冒號(:)結束,該行之后的一行或多行代碼構成代碼組忠寻。

我們將首行及后面的代碼組稱為一個子句(clause)惧浴。

實例:

if expression :    suiteelif expression :    suite else :    suite

Print 輸出

print 默認輸出是換行的,如果要實現(xiàn)不換行需要在變量末尾加上 end="":

x = "a"y = "b"print( x )print( y )print('-------')print( x, end=" ")print( y, end=" ")

import 與 from…import

在 python 用 import 或者 from..import 用來導入相應的模塊奕剃。

將整個模塊(somemodule)導入衷旅,格式為:import somemodule

從某個模塊中導入某個函數(shù),格式為:from somemodule import somefunction

從某個模塊中導入多個函數(shù)纵朋,格式為:from somemodule import firstfunc芜茵,secondfunc,thirdfunc

將某個模塊中的全部函數(shù)導入倡蝙,格式為:from somemodule import *

導入 sys 模塊

import sysprint('================Python import mode==========================');print ('命令行參數(shù)為:')for i in sys.argv:    print (i)print ('\n python 路徑為',sys.path)

導入 sys 模塊的 argv,path 成員

from sys import argv,path  #  導入特定的成員print('================python from import===================================')print('path:',path) # 因為已經(jīng)導入path成員九串,所以此處引用時不需要加sys.path

命令行參數(shù)

很多程序可以執(zhí)行一些操作來查看一些基本信息,Python 可以使用 -h 參數(shù)查看各參數(shù)幫助信息

$ python -husage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...Options and arguments (and corresponding environment variables):-c cmd : program passed in as string (terminates option list)-d     : debug output from parser (also PYTHONDEBUG=x)-E     : ignore environment variables (such as PYTHONPATH)-h     : print this help message and exit[ etc. ]

寫在最后

至此「從零開始學習 Python 之基礎語法」就已結束寺鸥。今天這篇文章大多是一些概念性的介紹猪钮,但在編程中是屬于非常重要的內(nèi)容。給自己三分鐘的時間胆建,閉上眼來回想下烤低,今天這篇你都學習到了什么。

如果你按我說的去做笆载,你會發(fā)現(xiàn)你只能回憶起一些內(nèi)容扑馁,很難把全部的知識都記住涯呻。這是非常正常的情況,所以需要你溫故而知新腻要,時掣垂蓿回顧。在最后我把今天的知識點做出思維導圖送給大家雄家。

20180326
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末效诅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子趟济,更是在濱河造成了極大的恐慌乱投,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顷编,死亡現(xiàn)場離奇詭異戚炫,居然都是意外死亡,警方通過查閱死者的電腦和手機媳纬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門双肤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人层宫,你說我怎么就攤上這事杨伙∑浼啵” “怎么了萌腿?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抖苦。 經(jīng)常有香客問我毁菱,道長,這世上最難降的妖魔是什么锌历? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任贮庞,我火速辦了婚禮,結果婚禮上究西,老公的妹妹穿的比我還像新娘窗慎。我一直安慰自己,他們只是感情好卤材,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布遮斥。 她就那樣靜靜地躺著,像睡著了一般扇丛。 火紅的嫁衣襯著肌膚如雪术吗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天帆精,我揣著相機與錄音较屿,去河邊找鬼隧魄。 笑死,一個胖子當著我的面吹牛隘蝎,可吹牛的內(nèi)容都是我干的购啄。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼末贾,長吁一口氣:“原來是場噩夢啊……” “哼闸溃!你這毒婦竟也來了?” 一聲冷哼從身側響起拱撵,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤辉川,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拴测,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乓旗,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年集索,在試婚紗的時候發(fā)現(xiàn)自己被綠了屿愚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡务荆,死狀恐怖妆距,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情函匕,我是刑警寧澤娱据,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站盅惜,受9級特大地震影響中剩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抒寂,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一结啼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屈芜,春花似錦郊愧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至毅糟,卻和暖如春红选,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姆另。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工喇肋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坟乾,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親木柬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容