Python 基礎(chǔ)教程

Python 流程控制

Python 函數(shù)

Python 數(shù)據(jù)類(lèi)型

Python 文件操作

Python 對(duì)象和類(lèi)

Python 日期和時(shí)間

Python 高級(jí)知識(shí)

Python 參考手冊(cè)

Python 關(guān)鍵字列表及示例

本教程提供有關(guān)Python中使用的所有關(guān)鍵字的簡(jiǎn)要信息。

關(guān)鍵字是Python中的保留字。我們不能將關(guān)鍵字用作變量名,函數(shù)名或任何其他標(biāo)識(shí)符。

這是Python編程中所有關(guān)鍵字的列表

Python編程語(yǔ)言中的關(guān)鍵字
Falseawaitelseimportpass
Nonebreakexceptinraise
Trueclassfinallyisreturn
andcontinueforlambdatry
asdeffromnonlocalwhile
assertdelglobalnotwith
asyncelififoryield

上述關(guān)鍵字可能會(huì)在不同版本的Python中更改??赡軙?huì)添加一些額外內(nèi)容或?qū)⒛承﹥?nèi)容刪除。您始終可以通過(guò)以下方法來(lái)獲取當(dāng)前版本中的關(guān)鍵字列表。

>>> 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']

Python中關(guān)鍵字的示例說(shuō)明

True, False

True和False是Python中的真假值。它們是Python中比較操作或邏輯(布爾)操作的結(jié)果。例如:

>>> 1 == 1
True
>>> 5 > 3
True
>>> True or False
True
>>> 10 <= 1
False
>>> 3 > 7
False
>>> True and False
False

在這里我們可以看到前三個(gè)語(yǔ)句是正確的,因此解釋器返回True,其余三個(gè)語(yǔ)句返回False。True和False在python中與1和0相同??梢酝ㄟ^(guò)以下示例證明這一點(diǎn):

>>> True == 1
True
>>> False == 0
True
>>> True + True
2

None

None 是Python中的一個(gè)特殊常量,表示不存在值或空值。

它是自己的數(shù)據(jù)類(lèi)型NoneType的對(duì)象。我們不能創(chuàng)建多個(gè)None對(duì)象,但可以將其分配給變量。這些變量是相等的。

我們必須特別注意,None并不表示False,0或任何空列表,字典,字符串等。例如:

>>> None == 0
False
>>> None == []
False
>>> None == False
False
>>> x = None
>>> y = None
>>> x == y
True

不返回任何內(nèi)容的虛函數(shù)將自動(dòng)返回一個(gè)None對(duì)象。程序流未遇到return語(yǔ)句的函數(shù)也返回None。例如:

def a_void_function():
    a = 1
    b = 2
    c = a + b

x = a_void_function()
print(x)

輸出結(jié)果

None

該程序盡管在內(nèi)部執(zhí)行了一些操作,但其函數(shù)不返回值。因此,當(dāng)我們打印x時(shí),我們得到的是自動(dòng)(隱式)返回的None。同樣,這是另一個(gè)示例:

def improper_return_function(a):
    if (a % 2) == 0:
        return True

x = improper_return_function(3)
print(x)

輸出結(jié)果

None

盡管此函數(shù)有一個(gè)return聲明,但并非在每種情況下都可以實(shí)現(xiàn)。該函數(shù)僅在輸入為偶數(shù)時(shí)返回True。

如果我們給函數(shù)一個(gè)奇數(shù),則隱式返回None。

and, or , not

and,or,not是Python中的邏輯運(yùn)算符。 并且只有兩個(gè)操作數(shù)都為T(mén)rue時(shí),結(jié)果才為T(mén)rue。 and的True,F(xiàn)alse表如下:

 and
ABA and B
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

or如果任何一個(gè)操作數(shù)為T(mén)rue,將結(jié)果為T(mén)rue。or 真值表如下:

or真值表
ABA or B
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

not運(yùn)算符用于反轉(zhuǎn)真值。not真值表如下:

not真值表
Anot A
TrueFalse
FalseTrue

下面給出了一些用法示例

>>> True and False
False
>>> True or False
True
>>> not False
True

as

as用于在導(dǎo)入模塊時(shí)創(chuàng)建別名。這意味著在導(dǎo)入模塊時(shí)給模塊一個(gè)不同的名稱(chēng)(用戶(hù)定義)。

例如,Python有一個(gè)稱(chēng)為的標(biāo)準(zhǔn)模塊math。假設(shè)我們要使用別名來(lái)計(jì)算余弦pi。我們可以使用以下方法做到這一點(diǎn)as:

>>> import math as myAlias
>>>myAlias.cos(myAlias.pi)
-1.0

在這里,我們math通過(guò)給模塊命名來(lái)導(dǎo)入該模塊myAlias?,F(xiàn)在,我們可以math使用該名稱(chēng)引用該模塊。使用該名稱(chēng),我們計(jì)算了cos(pi)并得到-1.0了答案。

assert

assert 用于調(diào)試目的。

在編程時(shí),有時(shí)我們希望了解內(nèi)部狀態(tài)或檢查我們的假設(shè)是否正確。assert幫助我們做到這一點(diǎn)并更方便地發(fā)現(xiàn)錯(cuò)誤。assert后面跟一個(gè)條件。

如果條件為真,則什么也不會(huì)發(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

在這一點(diǎn)上,我們可以注意到,

assert condition, message

等價(jià)于

if not condition:
    raise AssertionError(message)

async, await

Python中的asyncio庫(kù)提供了async和await關(guān)鍵字。它們用于在Python中編寫(xiě)并發(fā)代碼。例如,

import asyncio

async def main():
    print('Hello')
    await asyncio.sleep(1)
    print('world')

要運(yùn)行該程序,我們使用

asyncio.run(main())

在以上程序中,async關(guān)鍵字指定該函數(shù)將異步執(zhí)行。

在這里,首先打印Hello。await關(guān)鍵字使得程序等待1秒。然后再打印world。

break, continue

break和continue在for和while循環(huán)內(nèi)使用以更改其正常行為。

break將結(jié)束它所在的最小循環(huán),而控制流將直接流到循環(huán)下的語(yǔ)句。continue導(dǎo)致結(jié)束循環(huán)的當(dāng)前迭代,而不是整個(gè)循環(huán)。

這可以通過(guò)以下兩個(gè)示例進(jìn)行說(shuō)明:

for i in range(1,11):
    if i == 5:
        break
    print(i)

輸出結(jié)果

1
2
3
4

在這里,for循環(huán)打算打印從1到10的數(shù)字。但是如果當(dāng)i等于5 時(shí)就滿(mǎn)足了條件,我們從循環(huán)中中斷了。因此,僅打印范圍1到4。

for i in range(1,11):
    if i == 5:
        continue
    print(i)

輸出結(jié)果

1
2
3
4
6
7
8
9
10

在這里,我們使用continue相同的程序。因此,當(dāng)滿(mǎn)足條件時(shí),將跳過(guò)該迭代。但是我們不會(huì)退出循環(huán)。因此,將打印出除5以外的所有值。

了解有關(guān)Python break and Continue語(yǔ)句的更多信息。

class

class 用于在Python中定義新的用戶(hù)定義類(lèi)。

類(lèi)是試圖表示現(xiàn)實(shí)情況的相關(guān)屬性和方法的集合。將數(shù)據(jù)和函數(shù)放在一個(gè)類(lèi)中的想法對(duì)于面向?qū)ο缶幊蹋∣OP)的概念至關(guān)重要。

可以在程序中的任何位置定義類(lèi)。但是在模塊中定義單個(gè)類(lèi)是一個(gè)好習(xí)慣。以下是示例用法:

class ExampleClass:
    def function1(parameters):
        …
    def function2(parameters):
        …

了解有關(guān)Python對(duì)象和類(lèi)的更多信息。

def

def 用于定義用戶(hù)定義的函數(shù)。

函數(shù)是一組相關(guān)語(yǔ)句,它們一起執(zhí)行某些特定任務(wù)。它幫助我們將代碼組織成可管理的塊,并完成一些重復(fù)的任務(wù)。

def的用法如下所示:

def function_name(parameters):
    …

了解有關(guān)Python函數(shù)的更多信息。

del

del用于刪除對(duì)對(duì)象的引用。一切都是Python中的對(duì)象。我們可以使用以下方式刪除變量,通過(guò)引用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 也用于從列表或字典中刪除項(xiàng)目:

>>> a = ['x','y','z']
>>> del a[1]
>>> a
['x', 'z']

if, else, elif

if, else, elif 用于條件分支或決策。

當(dāng)我們要測(cè)試某個(gè)條件并僅在條件為真時(shí)才執(zhí)行塊時(shí),我們使用if和elif。elif是else if的縮寫(xiě)。else是條件為假時(shí)執(zhí)行的塊。通過(guò)以下示例將很清楚:

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)

輸出結(jié)果

Two
Something else
One

在此,該函數(shù)檢查輸入的數(shù)字(如果是1或2),并輸出結(jié)果。否則,任何輸入都會(huì)導(dǎo)致else部分代碼執(zhí)行。

了解有關(guān)Python if and if ... else語(yǔ)句的更多信息。

except, raise, try

except, raise, try 與Python中的異常一起使用。

異常基本上是錯(cuò)誤,表明在執(zhí)行我們的程序時(shí)出現(xiàn)了問(wèn)題。在Python異常的幾個(gè)實(shí)例IOError,ValueError,ZeroDivisionError,ImportError,NameError,TypeError等。try...except塊用于捕獲Python中的異常。

我們可以使用raise關(guān)鍵字顯式引發(fā)異常。以下是一個(gè)示例:

def reciprocal(num):
    try:
        r = 1/num
    except:
        print('Exception caught')
        return
    return r

print(reciprocal(10))
print(reciprocal(0))

輸出結(jié)果

0.1
Exception caught
None

在此,該函數(shù)reciprocal()返回輸入數(shù)字的倒數(shù)。

輸入10時(shí),正常輸出為0.1。 但是,當(dāng)我們輸入0時(shí),會(huì)自動(dòng)引發(fā) ZeroDivisionError異常。

這是被我們的try…except塊捕獲的,我們返回None。 我們還可以通過(guò)檢查輸入并按如下所示在其他地方處理它來(lái)顯式引發(fā)ZeroDivisionError:

if num == 0:
    raise ZeroDivisionError('cannot divide')

finally

finally與try…except塊一起使用以關(guān)閉資源或文件流。

使用finally確保即使其中有未處理的異常,其內(nèi)部的代碼塊也可以執(zhí)行。例如:

try:
    Try-block
except exception1:
    Exception1-block
except exception2:
    Exception2-block
else:
    Else-block
finally:
    Finally-block

此處,如果中存在異常Try-block,則在except或else塊中對(duì)其進(jìn)行處理。但是,無(wú)論執(zhí)行順序如何,即使有錯(cuò)誤,我們也可以放心執(zhí)行Finally-block。這對(duì)于清理資源很有用。

了解有關(guān)Python編程中異常處理的更多信息。

for

for用于循環(huán)。通常,我們for在知道要循環(huán)的次數(shù)時(shí)使用。

在Python中,我們可以將其與任何類(lèi)型的序列(例如列表或字符串)一起使用。這是一個(gè)for用于遍歷names列表的示例:

names = ['John','Monica','Steven','Robin']
for i in names:
    print('Hello '+i)

輸出結(jié)果

Hello John
Hello Monica
Hello Steven
Hello Robin

了解有關(guān)Python for loop的更多信息。

from, import

import關(guān)鍵字用于將模塊導(dǎo)入當(dāng)前命名空間。from…import用于將特定屬性或函數(shù)導(dǎo)入當(dāng)前命名空間。例如:

import math

將導(dǎo)入math模塊?,F(xiàn)在我們可以將其中的cos()函數(shù)用作math.cos()。但是,如果我們只想導(dǎo)入cos()函數(shù),則可以使用from來(lái)完成

from math import cos

現(xiàn)在我們可以簡(jiǎn)單地使用該函數(shù)cos(),無(wú)需編寫(xiě)math.cos()。

了解有關(guān)Python模塊和import語(yǔ)句的更多信息。

global

global 用于聲明函數(shù)內(nèi)部的變量是全局變量(函數(shù)外部)。

如果我們需要讀取全局變量的值,則不必將其定義為global。這是需要的地方。

如果需要在函數(shù)內(nèi)部修改全局變量的值,則必須使用進(jìn)行聲明global。否則,將創(chuàng)建一個(gè)具有該名稱(chēng)的局部變量。

以下示例將幫助我們闡明這一點(diǎn)。

globvar = 10
def read1():
    print(globvar)
def write1():
    global globvar
    globvar = 5
def write2():
    globvar = 15

read1()
write1()
read1()
write2()
read1()

輸出結(jié)果

10
5
5

在這里,read1()函數(shù)只是讀取globvar的值。因此,我們不需要將其聲明為global。但是write1()函數(shù)正在修改值,因此我們需要將變量聲明為global。

我們可以在輸出中看到確實(shí)進(jìn)行了修改(將10更改為5)。write2()還試圖修改此值。但我們尚未將其聲明為global。

因此,將globvar創(chuàng)建一個(gè)新的局部變量,該局部變量在該函數(shù)外部不可見(jiàn)。盡管我們將此局部變量修改為15,但全局變量保持不變。這在我們的輸出中清晰可見(jiàn)。

in

in用于測(cè)試序列(列表,元組,字符串等)是否包含值。如果該值存在,它返回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)

輸出結(jié)果

h
e
l
l
o

is

is在Python中用于測(cè)試對(duì)象身份。==運(yùn)算符用于測(cè)試兩個(gè)變量是否相等,而運(yùn)算符is用于測(cè)試兩個(gè)變量是否引用同一對(duì)象。

如果對(duì)象相同則返回True,否則返回False。

>>> True is True
True
>>> False is False
True
>>> None is None
True

我們知道在Python中只有一個(gè)True、False和None的實(shí)例,所以它們是相同的。

>>> [] == []
True
>>> [] is []
False
>>> {} == {}
True
>>> {} is {}
False

一個(gè)空列表或字典等于另一個(gè)空列表或字典。但是它們不是相同的對(duì)象,因?yàn)樗鼈兎謩e位于內(nèi)存中。這是因?yàn)榱斜砗妥值涫强勺兊模梢愿闹担?/p>

>>> '' == ''
True
>>> '' is ''
True
>>> () == ()
True
>>> () is ()
True

與列表和字典不同,字符串和元組是不可變的(值一旦定義就不能更改)。因此,兩個(gè)相等的字符串或元組也相同。它們引用相同的存儲(chǔ)位置。

lambda

lambda用于創(chuàng)建匿名函數(shù)(無(wú)名稱(chēng)的函數(shù))。它是不包含return語(yǔ)句的內(nèi)聯(lián)函數(shù)。它由一個(gè)求值并返回的表達(dá)式組成。例如:

a = lambda x: x*2
for i in range(1,6):
    print(a(i))

輸出結(jié)果

2
4
6
8
10

在這里,我們創(chuàng)建了一個(gè)內(nèi)聯(lián)函數(shù),使用lambda語(yǔ)句將值加倍。我們使用它來(lái)將包含1到5的列表中的值加倍。

了解有關(guān)Python lamda函數(shù)的更多信息。

nonlocal

nonlocal關(guān)鍵字的使用與關(guān)鍵字global非常相似。nonlocal用于聲明嵌套函數(shù)內(nèi)部的變量(函數(shù)內(nèi)部的函數(shù))不是局部變量,這意味著它位于外部封閉函數(shù)中。如果需要在嵌套函數(shù)中修改非局部變量的值,則必須使用進(jìn)行聲明nonlocal。否則,將在嵌套函數(shù)內(nèi)創(chuàng)建具有該名稱(chēng)的局部變量。以下示例將幫助我們闡明這一點(diǎn)。

def outer_function():
    a = 5
    def inner_function():
        nonlocal a
        a = 10
        print("Inner function: ",a)
    inner_function()
    print("Outer function: ",a)

outer_function()

輸出結(jié)果

Inner function:  10
Outer function:  10

在此,inner_function()嵌套在outer_function中。

變量a位于outer_function()中。因此,如果要在inner_function()中進(jìn)行修改a,則必須將其聲明為nonlocal。請(qǐng)注意,這a不是全局變量。

因此,我們從輸出中看到,該變量已在嵌套的inner_function()內(nèi)部成功修改。 不使用nonlocal關(guān)鍵字的結(jié)果如下:

def outer_function():
    a = 5
    def inner_function():
        a = 10
        print("Inner function: ",a)
    inner_function()
    print("Outer function: ",a)

outer_function()

輸出結(jié)果

Inner function:  10
Outer function:  5

在這里,我們不聲明嵌套函數(shù)中的變量a是非本地的。因此,將創(chuàng)建一個(gè)具有相同名稱(chēng)的新局部變量,但不修改非局部變量a,如我們的輸出所示。

pass

pass是Python中的空語(yǔ)句。它執(zhí)行時(shí)什么也沒(méi)有發(fā)生。它用作占位符。

假設(shè)我們有一個(gè)尚未實(shí)現(xiàn)的功能,但我們想在將來(lái)實(shí)現(xiàn)。簡(jiǎn)單地寫(xiě),

def function(args):

在程序中間將給我們IndentationError。 取而代之的是,我們使用pass語(yǔ)句構(gòu)造一個(gè)空白主體。

def function(args):
    pass

我們也可以空class著做同樣的事情。

class example:
    pass

return

return 語(yǔ)句在函數(shù)內(nèi)部用于退出并返回值。

如果我們沒(méi)有顯式返回值,則會(huì)自動(dòng)返回None。下面的示例對(duì)此進(jìn)行了驗(yàn)證。

def func_return():
    a = 10
    return a

def no_return():
    a = 10

print(func_return())
print(no_return())

輸出結(jié)果

10
None

while

while 用于Python中的循環(huán)。

while循環(huán)內(nèi)的語(yǔ)句一直執(zhí)行,直到while循環(huán)條件求值結(jié)果為False或遇到一條break語(yǔ)句為止。下面的程序?qū)Υ诉M(jìn)行了說(shuō)明。

i = 5
while(i):
    print(i)
    i = i – 1

輸出結(jié)果

5
4
3
2
1

請(qǐng)注意,0等于False。

了解有關(guān)Python while循環(huán)的更多信息。

with

with 語(yǔ)句用于在上下文管理器定義的方法中包裝代碼塊的執(zhí)行。

上下文管理器是實(shí)現(xiàn)__enter__和__exit__方法的類(lèi)。使用with語(yǔ)句可確保__exit__在嵌套塊的末尾調(diào)用該方法。這個(gè)概念類(lèi)似于try…finally塊的使用。這里是一個(gè)實(shí)例。

with open('example.txt', 'w') as my_file:
    my_file.write('Hello world!')

本示例將文本Hello world!寫(xiě)入example.txt文件。文件對(duì)象在其中定義了__enter__和__exit__方法,因此它們充當(dāng)自己的上下文管理器。

首先__enter__調(diào)用該方法,然后執(zhí)行語(yǔ)句中的with代碼,最后__exit__調(diào)用該方法。__exit__即使有錯(cuò)誤,也會(huì)調(diào)用方法。它基本上會(huì)關(guān)閉文件流。

yield

yield在像return語(yǔ)句這樣的函數(shù)中使用。但是yield返回一個(gè)生成器。

生成器是一次生成一個(gè)項(xiàng)的迭代器。大量的值將占用大量?jī)?nèi)存。生成器在這種情況下非常有用,因?yàn)樗淮沃簧梢粋€(gè)值,而不是將所有值存儲(chǔ)在內(nèi)存中。例如,

>>> g = (2**x for x in range(100))

將創(chuàng)建一個(gè)生成器g,生成一個(gè)2的冪,直到生成加到99的2的冪。我們可以使用next()如下所示的函數(shù)生成這些數(shù)。

>>> next(g)
1
>>> next(g)
2
>>> next(g)
4
>>> next(g)
8
>>> next(g)
16

依此類(lèi)推...這種類(lèi)型的生成器由yield函數(shù)的語(yǔ)句返回。這是一個(gè)實(shí)例。

def generator():
    for i in range(6):
        yield i*i

g = generator()
for i in g:
    print(i)

輸出結(jié)果

0
1
4
9
16
25

在此,函數(shù)generator()返回一個(gè)生成器,該生成器生成從0到5的數(shù)字平方。將其打印在for循環(huán)中。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清