我們?cè)谖难晕闹薪?jīng)常會(huì)看到注釋,注釋可以幫助讀者對(duì)文章的理解。代碼中的注釋也是一樣,優(yōu)秀的代碼注釋可以幫助讀者對(duì)代碼的理解。當(dāng)然在代碼編寫(xiě)過(guò)程中,注釋的使用不一定只是描述一段代碼,也可能的是對(duì)代碼的調(diào)試。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供孝感網(wǎng)站建設(shè)、孝感做網(wǎng)站、孝感網(wǎng)站設(shè)計(jì)、孝感網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、孝感企業(yè)網(wǎng)站模板建站服務(wù),十載孝感做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Python注釋一共有# 、''' ''' 、""" """三種方式。我們?cè)诰帉?xiě)代碼中,一般用#進(jìn)行單行注釋,''' '''或""" """進(jìn)行多行注釋。如下代碼所示:
# 這是一段注釋
'''
這是多行注釋,使用英文單引號(hào)。
這是多行注釋,使用英文單引號(hào)。
這是多行注釋,使用英文單引號(hào)。
'''
"""
這是多行注釋,使用英文雙引號(hào)。
這是多行注釋,使用英文雙引號(hào)。
這是多行注釋,使用英文雙引號(hào)。
"""
# 單行注釋 這是一個(gè)加法
def add(a, b):
return a + b
# 先把print(add(1, 2))注釋掉,下次如果用到print(add(1, 2))把#去掉
# print(add(1, 2))
我們右擊運(yùn)行,發(fā)現(xiàn)不會(huì)輸出任何內(nèi)容,雖然我們定義了一個(gè)add函數(shù),但是并沒(méi)有調(diào)用add函數(shù),當(dāng)我們把# print(add(1, 2))的#去掉時(shí),再右擊運(yùn)行,打印臺(tái)會(huì)輸出3。關(guān)于函數(shù)的使用,會(huì)在后面內(nèi)容進(jìn)行介紹。
變量的概念和數(shù)學(xué)方程式變量是一致的。比如一元一次方程 x+1>5 ,x就是一個(gè)變量。
在計(jì)算機(jī)程序中,變量不僅可以是數(shù)字,還可以是任意數(shù)據(jù)類型。變量在程序中用一個(gè)變量名表示,變量名必須是大小寫(xiě)英文、數(shù)字和_的組合,且不能用數(shù)字開(kāi)頭,不能使用關(guān)鍵字作為變量。如下代碼所示:
a = [1, 'test', '你好', 1 + 2, False, [2, 3, 'CHINA']]
A = 1.1
b = '1'
B = 'test'
c = True
_C = False
d1 = 'test'
name = {'testDog', 'Jim', 'Mary', 'Jim', 'Jack', 'Rose'}
Python中關(guān)鍵字如下所示: and | Exec | not |
---|---|---|
assert | Finally | or |
break | For | pass |
class | From | |
continue | Global | raise |
def | If | return |
del | Import | try |
elif | In | while |
else | Is | with |
except | lambda | yield |
一般當(dāng)我們定義一個(gè)函數(shù)、使用if…else、while等時(shí),第二行都必需要進(jìn)行縮進(jìn)。使用四個(gè)空格或鍵盤(pán)上的tab鍵表示縮進(jìn)。如下代碼所示:
def add(a, b):
return a + b
if 0 < 1:
print("True")
如果我們縮進(jìn)位置不對(duì)時(shí),運(yùn)行下面這段代碼一般會(huì)報(bào)IndentationError: expected an indented block錯(cuò)誤。如下代碼所示:
def add(a, b):
return a + b
print(add(1, 2))
input意思是等待用戶輸入,print我們之前也已經(jīng)用過(guò),表示打印的意思。我們運(yùn)行下面這段代碼,會(huì)發(fā)現(xiàn)Pycharm打印臺(tái)需要我們輸入2個(gè)數(shù),當(dāng)我們輸入第一個(gè)數(shù)字時(shí),按下Enter,會(huì)讓我們輸入第二個(gè)數(shù),輸完第二個(gè)數(shù),按Enter,程序運(yùn)行結(jié)束。當(dāng)然下面這段代碼是有Bug的,猜猜Bug在哪里呢?如下代碼所示:
a = input("請(qǐng)輸入第一個(gè)數(shù):")
b = input("請(qǐng)輸入第二個(gè)數(shù):")
print("輸入的2個(gè)數(shù)和為:", (a + b)
上面代碼將輸出如下內(nèi)容:
請(qǐng)輸入第一個(gè)數(shù):1
請(qǐng)輸入第二個(gè)數(shù):2
輸入的2個(gè)數(shù)和為:3
python 用 import 或者 from...import 來(lái)導(dǎo)入相應(yīng)的模塊。
將整個(gè)模塊(somemodule)導(dǎo)入,格式為: import somemodule
從某個(gè)模塊中導(dǎo)入某個(gè)函數(shù),格式為: from somemodule import somefunction
從某個(gè)模塊中導(dǎo)入多個(gè)函數(shù),格式為:from somemodule import firstfunc, secondfunc, thirdfunc
將某個(gè)模塊中的全部函數(shù)導(dǎo)入,格式為:from somemodule import *
import time
print(time.strftime('%Y.%m.%d',time.localtime(time.time())))
上面代碼將輸出如下內(nèi)容:
2019.02.01
from...import
模塊導(dǎo)入函數(shù)
from datetime import datetime print(datetime.now())
上面代碼將輸出如下內(nèi)容:
2019-02-01 10:14:45.614800
已知目錄結(jié)構(gòu)如下:
test1.py代碼如下:
def add(a, b):
return a + b
test2.py代碼如下:
from test1 import add
print(add(1,2))
運(yùn)行test2.py打印如下內(nèi)容:
3
注意,該目錄結(jié)構(gòu)有一個(gè)init.py文件,這個(gè)init.py文件聲明該目錄是一個(gè)python模塊。小伙伴可以試試去掉init.py后是否可以執(zhí)行。
def 函數(shù)名(參數(shù)列表):
函數(shù)體
def hello():
print("hello world")
class People():
"""
定義一個(gè)人類
"""
def __init__(self, name):
self.name = name
def my_name(self):
print("我的名字是:"+self.name)
bobby = People('bobby') # 創(chuàng)建一個(gè)對(duì)象
bobby.my_name()
上面代碼將輸出如下內(nèi)容:
我的名字是:bobby
注意:
我們創(chuàng)建了一個(gè)People類,People類有一個(gè)構(gòu)造函數(shù),當(dāng)我們創(chuàng)建一個(gè)People類的對(duì)象時(shí)需要傳入一個(gè)參數(shù),創(chuàng)建的對(duì)象可以調(diào)用People類中的方法
我們?cè)诰帉?xiě)Python程序時(shí),經(jīng)常會(huì)因?yàn)橐恍╁e(cuò)誤導(dǎo)致剩下的代碼無(wú)法執(zhí)行,為了解決這個(gè)問(wèn)題,Python內(nèi)置了一套try...except...finally...的錯(cuò)誤處理機(jī)制。我們先看一段會(huì)拋出異常的代碼
a = 10
if a > 0:
b = a / 0
else:
b = a + 1
print(b)
上面代碼將輸出如下內(nèi)容:
Traceback (most recent call last):
File "F:/新建文件夾/blogApiTest/test5.py", line 42, in
b = a/0
ZeroDivisionError: division by zero
上面代碼比較簡(jiǎn)單,我們發(fā)現(xiàn),我們的當(dāng)a>0時(shí),我們將執(zhí)行 b = a / 0,除數(shù)為0。我們都知道除數(shù)不能為0,所以Python程序會(huì) 拋出異常,那么我們?cè)趺床拍芙邮苓@個(gè)異常并使程序繼續(xù)執(zhí)行下去呢?我們可以使用try...except...finally. 如下代碼所示:
try:
a = 10
if a > 0:
b = a / 0
else:
b = a + 1
print(b)
except ZeroDivisionError as e:
print(e)
finally:
print("end")
上面代碼將輸出如下內(nèi)容:
division by zero
end
我們將我們的程序放在try里面,如果發(fā)生錯(cuò)誤拋出ZeroDivisionError 異常,這里為了簡(jiǎn)便,把ZeroDivisionError 重命名為e,當(dāng)然,我們也可以不使用finally,可以直接使用try...except
。這里有個(gè)問(wèn)題,我是怎么知道會(huì)拋出ZeroDivisionError 異常的呢?我將給大家羅列一些常見(jiàn)異常,如下表格所示:
異常 | 描述 |
---|---|
AttributeError | 試圖訪問(wèn)一個(gè)對(duì)象沒(méi)有的樹(shù)形,比如foo.x,但是foo沒(méi)有屬性x |
IOError | 輸入/輸出異常;基本上是無(wú)法打開(kāi)文件 |
ImportError | 無(wú)法引入模塊或包;基本上是路徑問(wèn)題或名稱錯(cuò)誤 |
IndentationError | 語(yǔ)法錯(cuò)誤(的子類) ;代碼沒(méi)有正確對(duì)齊 |
IndexError | 下標(biāo)索引超出序列邊界,比如當(dāng)x只有三個(gè)元素,卻試圖訪問(wèn)x[5] |
KeyError | 試圖訪問(wèn)字典里不存在的鍵 |
NameError | 使用一個(gè)還未被賦予對(duì)象的變量 |
SyntaxError | 語(yǔ)法錯(cuò)誤 |
TypeError | 傳入對(duì)象類型與要求的不符合 |
ValueError | 傳入一個(gè)調(diào)用者不期望的值,即使值的類型是正確的 |
當(dāng)然如果我們不知道會(huì)拋出什么異常,我們可以使用BaseException
,因?yàn)樗械腻e(cuò)誤類型都繼承自BaseException
,所以在使用except時(shí)需要注意的是,它不但捕獲該類型的錯(cuò)誤,還把其子類也“一網(wǎng)打盡”。比如:
try:
a = 10
if a > 0:
b = a / 0
else:
b = a + 1
print(b)
except BaseException as e:
print(e)
上面代碼將輸出如下內(nèi)容:
division by zero
歡迎關(guān)注微信公眾號(hào):軟件測(cè)試汪。軟件測(cè)試交流群:809111560