本教程提供有關Python中使用的所有關鍵字的簡要信息。
關鍵字是Python中的保留字。我們不能將關鍵字用作變量名,函數名或任何其他標識符。
這是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中更改??赡軙砑右恍╊~外內容或將某些內容刪除。您始終可以通過以下方法來獲取當前版本中的關鍵字列表。
>>> import keyword >>> print(keyword.kwlist) ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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']
True和False是Python中的真假值。它們是Python中比較操作或邏輯(布爾)操作的結果。例如:
>>> 1 == 1 True >>> 5 > 3 True >>> True or False True >>> 10 <= 1 False >>> 3 > 7 False >>> True and False False
在這里我們可以看到前三個語句是正確的,因此解釋器返回True,其余三個語句返回False。True和False在python中與1和0相同??梢酝ㄟ^以下示例證明這一點:
>>> True == 1 True >>> False == 0 True >>> True + True 2
None 是Python中的一個特殊常量,表示不存在值或空值。
它是自己的數據類型NoneType的對象。我們不能創(chuàng)建多個None對象,但可以將其分配給變量。這些變量是相等的。
我們必須特別注意,None并不表示False,0或任何空列表,字典,字符串等。例如:
>>> None == 0 False >>> None == [] False >>> None == False False >>> x = None >>> y = None >>> x == y True
不返回任何內容的虛函數將自動返回一個None對象。程序流未遇到return語句的函數也返回None。例如:
def a_void_function(): a = 1 b = 2 c = a + b x = a_void_function() print(x)
輸出結果
None
該程序盡管在內部執(zhí)行了一些操作,但其函數不返回值。因此,當我們打印x時,我們得到的是自動(隱式)返回的None。同樣,這是另一個示例:
def improper_return_function(a): if (a % 2) == 0: return True x = improper_return_function(3) print(x)
輸出結果
None
盡管此函數有一個return聲明,但并非在每種情況下都可以實現。該函數僅在輸入為偶數時返回True。
如果我們給函數一個奇數,則隱式返回None。
and,or,not是Python中的邏輯運算符。 并且只有兩個操作數都為True時,結果才為True。 and的True,False表如下:
A | B | A and B |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
or如果任何一個操作數為True,將結果為True。or 真值表如下:
A | B | A or B |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
not運算符用于反轉真值。not真值表如下:
A | not A |
---|---|
True | False |
False | True |
下面給出了一些用法示例
>>> True and False False >>> True or False True >>> not False True
as用于在導入模塊時創(chuàng)建別名。這意味著在導入模塊時給模塊一個不同的名稱(用戶定義)。
例如,Python有一個稱為的標準模塊math。假設我們要使用別名來計算余弦pi。我們可以使用以下方法做到這一點as:
>>> import math as myAlias >>>myAlias.cos(myAlias.pi) -1.0
在這里,我們math通過給模塊命名來導入該模塊myAlias?,F在,我們可以math使用該名稱引用該模塊。使用該名稱,我們計算了cos(pi)并得到-1.0了答案。
assert 用于調試目的。
在編程時,有時我們希望了解內部狀態(tài)或檢查我們的假設是否正確。assert幫助我們做到這一點并更方便地發(fā)現錯誤。assert后面跟一個條件。
如果條件為真,則什么也不會發(fā)生。但是如果條件為假,則引發(fā)AssertionError。例如:
>>> a = 4 >>> assert a < 5 >>> assert a > 5 Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module> AssertionError
為了使我們更好地理解,我們還可以提供一條消息,該消息將與AssertionError一起打印。
>>> a = 4 >>> assert a > 5, "The value of a is too small" Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module> AssertionError: The value of a is too small
在這一點上,我們可以注意到,
assert condition, message
等價于
if not condition: raise AssertionError(message)
Python中的asyncio庫提供了async和await關鍵字。它們用于在Python中編寫并發(fā)代碼。例如,
import asyncio async def main(): print('Hello') await asyncio.sleep(1) print('world')
要運行該程序,我們使用
asyncio.run(main())
在以上程序中,async關鍵字指定該函數將異步執(zhí)行。
在這里,首先打印Hello。await關鍵字使得程序等待1秒。然后再打印world。
break和continue在for和while循環(huán)內使用以更改其正常行為。
break將結束它所在的最小循環(huán),而控制流將直接流到循環(huán)下的語句。continue導致結束循環(huán)的當前迭代,而不是整個循環(huán)。
這可以通過以下兩個示例進行說明:
for i in range(1,11): if i == 5: break print(i)
輸出結果
1 2 3 4
在這里,for循環(huán)打算打印從1到10的數字。但是如果當i等于5 時就滿足了條件,我們從循環(huán)中中斷了。因此,僅打印范圍1到4。
for i in range(1,11): if i == 5: continue print(i)
輸出結果
1 2 3 4 6 7 8 9 10
在這里,我們使用continue相同的程序。因此,當滿足條件時,將跳過該迭代。但是我們不會退出循環(huán)。因此,將打印出除5以外的所有值。
了解有關Python break and Continue語句的更多信息。
class 用于在Python中定義新的用戶定義類。
類是試圖表示現實情況的相關屬性和方法的集合。將數據和函數放在一個類中的想法對于面向對象編程(OOP)的概念至關重要。
可以在程序中的任何位置定義類。但是在模塊中定義單個類是一個好習慣。以下是示例用法:
class ExampleClass: def function1(parameters): … def function2(parameters): …
了解有關Python對象和類的更多信息。
def 用于定義用戶定義的函數。
函數是一組相關語句,它們一起執(zhí)行某些特定任務。它幫助我們將代碼組織成可管理的塊,并完成一些重復的任務。
def的用法如下所示:
def function_name(parameters): …
了解有關Python函數的更多信息。
del用于刪除對對象的引用。一切都是Python中的對象。我們可以使用以下方式刪除變量,通過引用del
>>> a = b = 5 >>> del a >>> a Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module> NameError: name 'a' is not defined >>> b 5
在這里我們可以看到該變量的引用a已刪除。因此,不再定義。但是b仍然存在。
del 也用于從列表或字典中刪除項目:
>>> a = ['x','y','z'] >>> del a[1] >>> a ['x', 'z']
if, else, elif 用于條件分支或決策。
當我們要測試某個條件并僅在條件為真時才執(zhí)行塊時,我們使用if和elif。elif是else if的縮寫。else是條件為假時執(zhí)行的塊。通過以下示例將很清楚:
def if_example(a): if a == 1: print('One') elif a == 2: print('Two') else: print('Something else') if_example(2) if_example(4) if_example(1)
輸出結果
Two Something else One
在此,該函數檢查輸入的數字(如果是1或2),并輸出結果。否則,任何輸入都會導致else部分代碼執(zhí)行。
了解有關Python if and if ... else語句的更多信息。
except, raise, try 與Python中的異常一起使用。
異?;旧鲜清e誤,表明在執(zhí)行我們的程序時出現了問題。在Python異常的幾個實例IOError,ValueError,ZeroDivisionError,ImportError,NameError,TypeError等。try...except塊用于捕獲Python中的異常。
我們可以使用raise關鍵字顯式引發(fā)異常。以下是一個示例:
def reciprocal(num): try: r = 1/num except: print('Exception caught') return return r print(reciprocal(10)) print(reciprocal(0))
輸出結果
0.1 Exception caught None
在此,該函數reciprocal()返回輸入數字的倒數。
輸入10時,正常輸出為0.1。 但是,當我們輸入0時,會自動引發(fā) ZeroDivisionError異常。
這是被我們的try…except塊捕獲的,我們返回None。 我們還可以通過檢查輸入并按如下所示在其他地方處理它來顯式引發(fā)ZeroDivisionError:
if num == 0: raise ZeroDivisionError('cannot divide')
finally與try…except塊一起使用以關閉資源或文件流。
使用finally確保即使其中有未處理的異常,其內部的代碼塊也可以執(zhí)行。例如:
try: Try-block except exception1: Exception1-block except exception2: Exception2-block else: Else-block finally: Finally-block
此處,如果中存在異常Try-block,則在except或else塊中對其進行處理。但是,無論執(zhí)行順序如何,即使有錯誤,我們也可以放心執(zhí)行Finally-block。這對于清理資源很有用。
了解有關Python編程中異常處理的更多信息。
for用于循環(huán)。通常,我們for在知道要循環(huán)的次數時使用。
在Python中,我們可以將其與任何類型的序列(例如列表或字符串)一起使用。這是一個for用于遍歷names列表的示例:
names = ['John','Monica','Steven','Robin'] for i in names: print('Hello '+i)
輸出結果
Hello John Hello Monica Hello Steven Hello Robin
了解有關Python for loop的更多信息。
import關鍵字用于將模塊導入當前命名空間。from…import用于將特定屬性或函數導入當前命名空間。例如:
import math
將導入math模塊?,F在我們可以將其中的cos()函數用作math.cos()。但是,如果我們只想導入cos()函數,則可以使用from來完成
from math import cos
現在我們可以簡單地使用該函數cos(),無需編寫math.cos()。
global 用于聲明函數內部的變量是全局變量(函數外部)。
如果我們需要讀取全局變量的值,則不必將其定義為global。這是需要的地方。
如果需要在函數內部修改全局變量的值,則必須使用進行聲明global。否則,將創(chuàng)建一個具有該名稱的局部變量。
以下示例將幫助我們闡明這一點。
globvar = 10 def read1(): print(globvar) def write1(): global globvar globvar = 5 def write2(): globvar = 15 read1() write1() read1() write2() read1()
輸出結果
10 5 5
在這里,read1()函數只是讀取globvar的值。因此,我們不需要將其聲明為global。但是write1()函數正在修改值,因此我們需要將變量聲明為global。
我們可以在輸出中看到確實進行了修改(將10更改為5)。write2()還試圖修改此值。但我們尚未將其聲明為global。
因此,將globvar創(chuàng)建一個新的局部變量,該局部變量在該函數外部不可見。盡管我們將此局部變量修改為15,但全局變量保持不變。這在我們的輸出中清晰可見。
in用于測試序列(列表,元組,字符串等)是否包含值。如果該值存在,它返回True,否則返回False。例如:
>>> a = [1, 2, 3, 4, 5] >>> 5 in a True >>> 10 in a False
in的次要用途是遍歷for循環(huán)中的序列。
for i in 'hello': print(i)
輸出結果
h e l l o
is在Python中用于測試對象身份。==運算符用于測試兩個變量是否相等,而運算符is用于測試兩個變量是否引用同一對象。
如果對象相同則返回True,否則返回False。
>>> True is True True >>> False is False True >>> None is None True
我們知道在Python中只有一個True、False和None的實例,所以它們是相同的。
>>> [] == [] True >>> [] is [] False >>> {} == {} True >>> {} is {} False
一個空列表或字典等于另一個空列表或字典。但是它們不是相同的對象,因為它們分別位于內存中。這是因為列表和字典是可變的(可以更改值)。
>>> '' == '' True >>> '' is '' True >>> () == () True >>> () is () True
與列表和字典不同,字符串和元組是不可變的(值一旦定義就不能更改)。因此,兩個相等的字符串或元組也相同。它們引用相同的存儲位置。
lambda用于創(chuàng)建匿名函數(無名稱的函數)。它是不包含return語句的內聯函數。它由一個求值并返回的表達式組成。例如:
a = lambda x: x*2 for i in range(1,6): print(a(i))
輸出結果
2 4 6 8 10
在這里,我們創(chuàng)建了一個內聯函數,使用lambda語句將值加倍。我們使用它來將包含1到5的列表中的值加倍。
了解有關Python lamda函數的更多信息。
nonlocal關鍵字的使用與關鍵字global非常相似。nonlocal用于聲明嵌套函數內部的變量(函數內部的函數)不是局部變量,這意味著它位于外部封閉函數中。如果需要在嵌套函數中修改非局部變量的值,則必須使用進行聲明nonlocal。否則,將在嵌套函數內創(chuàng)建具有該名稱的局部變量。以下示例將幫助我們闡明這一點。
def outer_function(): a = 5 def inner_function(): nonlocal a a = 10 print("Inner function: ",a) inner_function() print("Outer function: ",a) outer_function()
輸出結果
Inner function: 10 Outer function: 10
在此,inner_function()嵌套在outer_function中。
變量a位于outer_function()中。因此,如果要在inner_function()中進行修改a,則必須將其聲明為nonlocal。請注意,這a不是全局變量。
因此,我們從輸出中看到,該變量已在嵌套的inner_function()內部成功修改。 不使用nonlocal關鍵字的結果如下:
def outer_function(): a = 5 def inner_function(): a = 10 print("Inner function: ",a) inner_function() print("Outer function: ",a) outer_function()
輸出結果
Inner function: 10 Outer function: 5
在這里,我們不聲明嵌套函數中的變量a是非本地的。因此,將創(chuàng)建一個具有相同名稱的新局部變量,但不修改非局部變量a,如我們的輸出所示。
pass是Python中的空語句。它執(zhí)行時什么也沒有發(fā)生。它用作占位符。
假設我們有一個尚未實現的功能,但我們想在將來實現。簡單地寫,
def function(args):
在程序中間將給我們IndentationError。 取而代之的是,我們使用pass語句構造一個空白主體。
def function(args): pass
我們也可以空class著做同樣的事情。
class example: pass
return 語句在函數內部用于退出并返回值。
如果我們沒有顯式返回值,則會自動返回None。下面的示例對此進行了驗證。
def func_return(): a = 10 return a def no_return(): a = 10 print(func_return()) print(no_return())
輸出結果
10 None
while 用于Python中的循環(huán)。
while循環(huán)內的語句一直執(zhí)行,直到while循環(huán)條件求值結果為False或遇到一條break語句為止。下面的程序對此進行了說明。
i = 5 while(i): print(i) i = i – 1
輸出結果
5 4 3 2 1
請注意,0等于False。
了解有關Python while循環(huán)的更多信息。
with 語句用于在上下文管理器定義的方法中包裝代碼塊的執(zhí)行。
上下文管理器是實現__enter__和__exit__方法的類。使用with語句可確保__exit__在嵌套塊的末尾調用該方法。這個概念類似于try…finally塊的使用。這里是一個實例。
with open('example.txt', 'w') as my_file: my_file.write('Hello world!')
本示例將文本Hello world!寫入example.txt文件。文件對象在其中定義了__enter__和__exit__方法,因此它們充當自己的上下文管理器。
首先__enter__調用該方法,然后執(zhí)行語句中的with代碼,最后__exit__調用該方法。__exit__即使有錯誤,也會調用方法。它基本上會關閉文件流。
yield在像return語句這樣的函數中使用。但是yield返回一個生成器。
生成器是一次生成一個項的迭代器。大量的值將占用大量內存。生成器在這種情況下非常有用,因為它一次只生成一個值,而不是將所有值存儲在內存中。例如,
>>> g = (2**x for x in range(100))
將創(chuàng)建一個生成器g,生成一個2的冪,直到生成加到99的2的冪。我們可以使用next()如下所示的函數生成這些數。
>>> next(g) 1 >>> next(g) 2 >>> next(g) 4 >>> next(g) 8 >>> next(g) 16
依此類推...這種類型的生成器由yield函數的語句返回。這是一個實例。
def generator(): for i in range(6): yield i*i g = generator() for i in g: print(i)
輸出結果
0 1 4 9 16 25
在此,函數generator()返回一個生成器,該生成器生成從0到5的數字平方。將其打印在for循環(huán)中。