Python 基本語法

veelion發表於2018-12-18

Python 作為一門計算機語言自然有它自己的語法規則,就像英語、漢語都有自己的語法規則一樣。Python的語法以簡潔著稱,它以行、縮排、註釋、識別符號、保留關鍵字等幾方面來規定了自己的語法。

下面我們先看一段Python程式碼:
Python語法

Python 的行

在Python裡面,行分為邏輯行物理行。物理行就是以行結束符(\n)結尾算作一行,通常一個物理行也就是一個邏輯行。但有時候,一個邏輯行可以包含多個物理行,比如下面的程式碼,一個表示式太長我們就用多行來寫,用斜槓(\)連線:

whole = 'This is a example of too long string' + \
        ' which should be splited into multi-lines' + \
        ' to show it'
print(whole)

如果語句中含有(), [], {}這些括號,就不需要用斜槓做連線符,比如:

# list元素可以多行書寫
months = ['January', 'Februray', 'March', 'April',
          'June', 'July', 'August', 'September',
          'October', 'November', 'December']

# 字串太長也可以通過()來多行書寫。
# 這個特性在寫很長的字串(如SQL語句)時很有用
sql = ('select id, name, age, height from '
       'students where id > 100')

空行
空行也是一種行(內容為空),也是程式碼的一部分。常用於分割程式碼塊,便於程式碼維護,這種程式碼規範中有詳細定義。

單行多條語句
Python 語法允許一行中有多條語句存在,語句之間用分號(;)分割,但是編碼規範中強烈不建議這樣做,還是一行一條語句更清晰。

# 合法但不提倡的單行多語句寫法
print('hi'); a = 10; b = 20; print(a+b)

縮排

Python語法與其它語言的一個明顯區別就是:通過縮排來表示程式碼塊,而不是像C/C++、Java等用大括號{}

不過,縮排並沒有嚴格限制字元,可以是Tab鍵,也可以是多個空格。但是同一個原始檔(.py檔案)中縮排必須相同,也就是說,要麼都用Tab鍵,要麼都用2個空格,要麼都用4個空格。官方的編碼規範(PEP 8)中規定用4個空格作為一個縮排。

如果縮排不一致,就會報錯: IndentationError。比如以下程式碼:

#!/usr/bin/env python3
# coding:utf-8
# File: demo.py

# 縮排混亂,執行時報錯
  a = 10
if a > 10:
    print('a > 10')
else:
    print('a <= 10')

執行上面程式碼,就會出現如下錯誤:

python3 demo.py
  File "demo.py", line 6
    a = 10
    ^
IndentationError: unexpected indent

註釋

註釋是對程式碼的解釋,是給讀程式碼的人看的文字,不是給Python直譯器執行的程式碼。
行內註釋以#開頭,即一行中#後面的文字都是註釋內容。
多行註釋使用三個單引號(''')或三個雙引號(""")引起來,多用於docstring(對模組、類、和函式進行說明)

# 這是註釋
print('hi, 猿人學')  # 這也是註釋

def myadd(a, b):
    '''my add() function
    param: a, int or float
    param: b, int or float
    return a + b
    '''
    return a + b

識別符號(Identifiers)

識別符號,也就是名稱,即變數名、函式名、類名。Python給起名字做了相關的規定。
可以用在名稱中的字元有:

  • 大寫字母: A-Z
  • 小寫字母: a-z
  • 阿拉伯數字: 0-9
  • 下劃線: _
  • 更多的Unicode字元:你可以用中文給變數起名字

識別符號(起名字)可以包括以上字元,但是不能以數字開頭,同時名稱是區分大小寫的。
Python2只支援ASCII碼作為識別符號的字符集, 而Python 3 擴充套件了識別符號字符集,我們可以在程式中起中文名字,但是打中文會累死人的哦。

def 加法(加數, 被加數):
    return 加數 + 被加數

計算機 = 1
程式設計 = 2

print(加法(計算機, 程式設計))

保留關鍵字

雖然Python程式中可以使用那麼多的字元,但是它也保留了一些字(如下表所示)作為語言本身的關鍵字,你給你的變數、函式、類起名字的時候不能使用這些關鍵字:

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

這些單詞是Python語言裡面的單詞,一共不到40個,跟我們人類的語言(比如,英語)比起來單詞量少之又少啊,計算機語言真簡單!雖然計算機語言單詞量很少,但是它講邏輯,這麼少的詞彙加上運算子、變數和類等就可以構建出複雜的計算機程式。

保留的類識別符號

這些類的識別符號有特殊的含義,它們都是以下劃線_開頭和結尾的形式:

  • _* 不會被語句from module import *匯入。
  • __*__ 系統定義的名稱。
  • __* 類的私有名稱。

總結

Python語法最大的特點就是:嚴格縮排。正是這樣嚴格的縮排規定,簡化並清晰了它的格式,體現了Python讓開發者“用一種方法,最好是隻有一種方法來做一件事”的哲學。

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***