Python 基礎(chǔ)語法

2022-07-04 14:32 更新

Python 基礎(chǔ)語法

Python 語言與 Perl,C 和 Java 等語言有許多相似之處。但是,也存在一些差異。

在本章中我們將來學(xué)習(xí) Python 的基礎(chǔ)語法,讓你快速學(xué)會(huì) Python 編程。


用一張圖概況 Python 學(xué)習(xí)



第一個(gè) Python程序

交互式編程

交互式編程不需要?jiǎng)?chuàng)建腳本文件,是通過 Python 解釋器的交互模式進(jìn)來編寫代碼。

linux 上你只需要在命令行中輸入 Python 命令即可啟動(dòng)交互式編程,提示窗口如下:

$ python
Python 2.4.3 (#1, Nov 11 2010, 13:34:43)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Window 上在安裝 Python 時(shí)已經(jīng)安裝了默認(rèn)的交互式編程客戶端,提示窗口如下:

python27

在 Python 提示符中輸入以下文本信息,然后按 Enter 鍵查看運(yùn)行效果:

>>> print "Hello, Python!";

在 Python 2.7.13 版本中,以上事例輸出結(jié)果如下:

Hello, Python!

如果您運(yùn)行的是新版本的 Python,那么你就需要在 print 語句中使用括號(hào)如:

>>>  print ("Hello, Python!");

腳本式編程

通過腳本參數(shù)調(diào)用解釋器開始執(zhí)行腳本,直到腳本執(zhí)行完畢。當(dāng)腳本執(zhí)行完成后,解釋器不再有效。

讓我們寫一個(gè)簡(jiǎn)單的 Python 腳本程序。所有 Python 文件將以 .py 為擴(kuò)展名。將以下的源代碼拷貝至 test.py 文件中。

print "Hello, Python!";

這里,假設(shè)你已經(jīng)設(shè)置了 Python 解釋器 PATH 變量。使用以下命令運(yùn)行程序:

$ python test.py

輸出結(jié)果:

Hello, Python!

讓我們嘗試另一種方式來執(zhí)行 Python 腳本。修改 test.py 文件,如下所示:

#!/usr/bin/python
print "Hello, Python!";

這里,假定您的 Python 解釋器在 /usr/bin 目錄中,使用以下命令執(zhí)行腳本:

$ chmod +x test.py     # 腳本文件添加可執(zhí)行權(quán)限
$./test.py

輸出結(jié)果:

Hello, Python!

Python2.x 中使用 Python3.x 的 print 函數(shù)

如果 Python2.x 版本想使用使用 Python3.x 的 print 函數(shù),可以導(dǎo)入 __future__ 包,該包禁用 Python2.x 的 print 語句,采用 Python3.x 的 print 函數(shù):

python2方式打印:
#coding=utf-8

list =["a", "b", "c"]
print list    # python2.x 的 print 語句
導(dǎo)入 __future__ 包后使用python2方式打?。?nbsp;
#coding=utf-8
from __future__ import print_function  # 導(dǎo)入 __future__ 包
list =["a", "b", "c"]
print list    # python2.x 的 print 語句
會(huì)報(bào)錯(cuò):

 File "<stdin>", line 1

print list

         ^

SyntaxError: invalid syntax

原因是因?yàn)閜ython3的print與python2的不同,python3的print應(yīng)該使用如下方式:

#coding=utf-8
from __future__ import print_function  # 導(dǎo)入 __future__ 包
list =["a", "b", "c"]
print (list)    # python2.x 的 print 語句

Python標(biāo)識(shí)符

在 Python 里,標(biāo)識(shí)符由字母、數(shù)字、下劃線組成。

在 Python 中,所有標(biāo)識(shí)符可以包括字母、數(shù)字以及下劃線(_),但不能以數(shù)字開頭。

Python 中的標(biāo)識(shí)符是區(qū)分大小寫的。

以下劃線開頭的標(biāo)識(shí)符是有特殊意義的。以單下劃線開頭(?_foo?)的代表不能直接訪問的類屬性,需通過類提供的接口進(jìn)行訪問,不能用"?from xxx import *?"而導(dǎo)入;

以雙下劃線開頭的(?__foo?)代表類的私有成員;以雙下劃線開頭和結(jié)尾的(?__foo__?)代表python 里特殊方法專用的標(biāo)識(shí),如?__init__()?代表類的構(gòu)造函數(shù)。

Python 可以同一行顯示多條語句,方法是用分號(hào) ; 分開,如:

>>> print 'hello';print 'Python';
hello
Python
但這并不是一種好的編程習(xí)慣,這樣的代碼是比較難以閱讀的,而且python以縮進(jìn)區(qū)分代碼塊,以換行代表語句結(jié)束,使用分號(hào)來進(jìn)行強(qiáng)制的語句結(jié)束是不合理的。

Python 保留字符

下面的列表顯示了在 Python 中的保留字。這些保留字不能用作常數(shù)或變數(shù),或任何其他標(biāo)識(shí)符名稱。

所有 Python 的關(guān)鍵字只包含小寫字母。

and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield

行和縮進(jìn)

學(xué)習(xí) Python 與其他語言最大的區(qū)別就是,Python 的代碼塊不使用大括號(hào)({})包裹,而是以縮進(jìn)來區(qū)分代碼塊。常見的代碼塊出現(xiàn)在函數(shù)、循環(huán)以及邏輯判斷等地方。Python 最具特色的就是用縮進(jìn)來寫代碼塊。

縮進(jìn)的空白數(shù)量是可變的,但是所有同一級(jí)別的代碼塊語句必須包含相同的縮進(jìn)空白數(shù)量,這個(gè)必須嚴(yán)格執(zhí)行。如下所示:

if True:
    print "True"
else:
  print "False"

以下代碼將會(huì)執(zhí)行錯(cuò)誤(if前面有一個(gè)空格):

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py

 if True:
    print "Answer"
    print "True"
else:
    print "Answer"
    # 沒有嚴(yán)格縮進(jìn),在執(zhí)行時(shí)報(bào)錯(cuò)
  print "False"

執(zhí)行以上代碼,會(huì)出現(xiàn)如下錯(cuò)誤提醒:

$ python test.py  
  File "test.py", line 5
    if True:
    ^
IndentationError: unexpected indent

?IndentationError: unexpected indent錯(cuò)誤是 Python 編譯器是在告訴你"Hi,老兄,你的文件里格式不對(duì)了,可能是 tab 和空格沒對(duì)齊的問題",所有 Python 對(duì)格式要求非常嚴(yán)格。

 python的的最外層代碼不能帶有空格或縮進(jìn)?。?!

如果是 ?IndentationError: unindent does not match any outer indentation level?錯(cuò)誤表明,你使用的縮進(jìn)方式不一致,有的是 tab 鍵縮進(jìn),有的是空格縮進(jìn),改為一致即可。

因此,在 Python 的代碼塊中必須使用相同數(shù)目的行首縮進(jìn)空格數(shù)。

建議你在每個(gè)縮進(jìn)層次使用 單個(gè)制表符 或 兩個(gè)空格 或 四個(gè)空格 , 切記不能混用。

 在PEP8中規(guī)定了python一次縮進(jìn)最好是四格。另外,有些代碼編輯器會(huì)幫助你進(jìn)行代碼對(duì)齊,因?yàn)榫腿缟鲜龅拇a展示一樣,有時(shí)候多打了一個(gè)空格實(shí)際上也不是很明顯。

最后,雖然并沒有強(qiáng)制規(guī)定沒每一級(jí)的代碼塊縮進(jìn)的空格數(shù)一定要固定四格,就像第一個(gè)縮進(jìn)示例一樣。但是這樣的縮進(jìn)會(huì)破壞整體代碼的美觀,影響代碼的閱讀。



多行語句

Python 語句中一般以換行作為語句的結(jié)束符。

但是我們可以使用斜杠( ?\?)將一行的語句分為多行顯示,如下所示:

total = item_one + \ 
        item_two + \
        item_three  

語句中包含?[]?,? {} ?或 ?()? 括號(hào)就不需要使用多行連接符。如下實(shí)例:

days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']

Python 引號(hào)

Python 使用單引號(hào)(?' ?),雙引號(hào)(?" ?),三引號(hào)(?''' """?) 來表示字符串,引號(hào)的開始與結(jié)束必須是相同類型的。

其中三引號(hào)可以由多行組成,編寫多行文本的快捷語法,常用于文檔字符串,一般用在代碼文件的特定地點(diǎn),被當(dāng)做多行注釋使用。

#coding=utf-8
word = 'word'
sentence = "這是一個(gè)句子"
paragraph = """這是一個(gè)段落
包含了多個(gè)語句"""

Python注釋

Python中單行注釋采用 ??開頭。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py

# 第一個(gè)注釋
print "Hello, Python!";  # 第二個(gè)注釋

輸出結(jié)果:

Hello, Python!

注釋可以在語句或表達(dá)式行末:

name = "Madisetti" # 這是一個(gè)注釋

Python 中多行注釋使用三個(gè)單引號(hào)(?'''?)或三個(gè)雙引號(hào)(?"""?)。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py


'''
這是多行注釋,使用單引號(hào)。
這是多行注釋,使用單引號(hào)。
這是多行注釋,使用單引號(hào)。
'''

"""
這是多行注釋,使用雙引號(hào)。
這是多行注釋,使用雙引號(hào)。
這是多行注釋,使用雙引號(hào)。
"""

Python 空行

函數(shù)之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數(shù)入口之間也用一行空行分隔,以突出函數(shù)入口的開始。

空行與代碼縮進(jìn)不同,空行并不是 Python 語法的一部分。書寫時(shí)不插入空行,Python 解釋器運(yùn)行也不會(huì)出錯(cuò)。但是空行的作用在于分隔兩段不同功能或含義的代碼,便于日后代碼的維護(hù)或重構(gòu)。

記?。嚎招幸彩浅绦虼a的一部分。

 在PEP8中規(guī)定,函數(shù)塊之間需要空兩行。


等待用戶輸入

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

#!/usr/bin/python
# -*- coding: UTF-8 -*-

raw_input("按下 enter 鍵退出,其他任意鍵顯示...\n")
#本代碼在在線工具展現(xiàn)效果不佳,建議使用自己的python環(huán)境

以上代碼中 ,?\n? 實(shí)現(xiàn)換行。一旦用戶按下 enter(回車) 鍵退出,其它鍵顯示。


同一行顯示多條語句

#!/usr/bin/python
import sys; x = 'w3cschool'; sys.stdout.write(x + '\n')

執(zhí)行以上代碼,輸入結(jié)果為:

$ python test.py
w3cschool
不推薦使用這樣的代碼書寫方式

Print 輸出

?print ?默認(rèn)輸出是換行的,如果要實(shí)現(xiàn)不換行需要在變量末尾加上逗號(hào) ,

#!/usr/bin/python
# -*- coding: UTF-8 -*-

x="a"
y="b"
# 換行輸出
print x
print y

print '---------'
# 不換行輸出
print x,
print y,

# 不換行輸出
print x,y

以上實(shí)例執(zhí)行結(jié)果如下:

a
b
---------
a b a b

多個(gè)語句構(gòu)成代碼組

縮進(jìn)相同的一組語句構(gòu)成一個(gè)代碼塊,我們稱之代碼組。

像 ?if?、?while?、?def ?和 ?class? 這樣的復(fù)合語句,首行以關(guān)鍵字開始,以冒號(hào)(? :? )結(jié)束,該行之后的一行或多行代碼構(gòu)成代碼組。

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

如下實(shí)例:

if expression : 
   suite 
elif expression :  
   suite  
else :  
   suite 

命令行參數(shù)

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

$ python -h 
usage: 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. ] 

我們?cè)谑褂媚_本形式執(zhí)行 Python 時(shí),可以接收命令行輸入的參數(shù),具體使用可以參照  Python 命令行參數(shù)


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)