最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中有哪些關(guān)鍵字及關(guān)鍵字的用法

 更新時間:2023年02月04日 09:06:38   作者:小小程序員ol  
這篇文章主要介紹了Python中有哪些關(guān)鍵字及關(guān)鍵字的用法,分享python中常用的關(guān)鍵字,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Python有哪些關(guān)鍵字

Python常用的關(guān)鍵字

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

1.and , or

and , or 為邏輯關(guān)系用語,Python具有短路邏輯,F(xiàn)alse and 返回 False
不執(zhí)行后面的語句, True or 直接返回True,不執(zhí)行后面的語句

2.del

刪除變量

if __name__=='__main__':
    a=1       # 對象 1 被 變量a引用,對象1的引用計數(shù)器為1
    b=a       # 對象1 被變量b引用,對象1的引用計數(shù)器加1
    c=a       #1對象1 被變量c引用,對象1的引用計數(shù)器加1
    del a     #刪除變量a,解除a對1的引用
    del b     #刪除變量b,解除b對1的引用
    #print a   #運行此句出錯,name 'a' is not defined,說明 del 刪除變量a
    print(c)  #最終變量c仍然引用1
    print (c) 

而列表本身包含的是變量,例:

list = [1,2,3]
# 包含list[0],list[1],list[2]
# 并不包含數(shù)字1,2,3

所以

if __name__=='__main__':
    li=[1,2,3,4,5]  #列表本身不包含數(shù)據(jù)1,2,3,4,5,而是包含變量:li[0] li[1] li[2] li[3] li[4] 
    first=li[0]     #拷貝列表,也不會有數(shù)據(jù)對象的復制,而是創(chuàng)建新的變量引用
    del li[0]  # 列表本身包含的是變量,del 刪除的是變量。
    print (li)      #輸出[2, 3, 4, 5]
    print(first)   #輸出 1

3.from

from引用模塊時會用到,例:

from sys import argv
# 從sys中導入argv
from sys import *
# 將sys中所有東西都導入
import sys 
# 導入sys,當需要sys中內(nèi)容時,需sys.argv而from sys import *
#不用每次都重復輸入'sys.'

4.golbal

golbal為全局變量,但當單個函數(shù)中出現(xiàn)同一變量名時,在單個函數(shù)中為局部變量

golbal q
q = 66
print ("q=", q) #q = 66
def function():
    q = 3
    print ('q =',q)
function() # q = 3
print ('q =',q) # q = 66

5.with

with被用來處理異常

  • 不用with 處理文件異常
file = open("/tmp/foo.txt")
try:
    data = file.read()
finally:
    file.close()
  • 用with
with open("/tmp/foo.txt")
 as file:
    data = file.read()

緊跟with后面的語句被求值后,返回對象的enter()方法被調(diào)用,這個方法的返回值將被賦值給as后面的變量,此處為file
當with后面的代碼塊全部被執(zhí)行完后,將調(diào)用前面返回對象的exit()方法

#with 的工作      
class Sample:
    def __enter__(self):
        print ("In __enter__()")
        return "Foo"

    def __exit__(self, type, value, trace):
        print ("In __exit__()")


def get_sample():
    return Sample()

with get_sample() as sample:
    print ("sample:", sample)
#1. __enter__()方法被執(zhí)行
#2. __enter__()方法返回的值 - 這個例子中是"Foo",賦值給變量'sample'
#3. 執(zhí)行代碼塊,打印變量"sample"的值為 "Foo"
#4. __exit__()方法被調(diào)用

with真正強大之處是它可以處理異常。
可能你已經(jīng)注意到Sample類的__exit__方法有三個參數(shù)- val, type 和 trace。
這些參數(shù)在異常處理中相當有用。

class Sample:
    def __enter__(self):
        return self

    def __exit__(self, type,
 value, trace):
        print ("type:", type)
        print ("value:",value)
        print ("trace:",trace)

    def do_something(self):
        bar = 1/0
        return bar + 10

with Sample() as sample:
    sample.do_something()

實際上,在with后面的代碼塊拋出任何異常時,exit()方法被執(zhí)行。
正如例子所示,異常拋出時,與之關(guān)聯(lián)的type,value和stack trace傳給exit()方法,
因此拋出的ZeroDivisionError異常被打印出來了。
開發(fā)庫時,清理資源,關(guān)閉文件等等操作,都可以放在exit方法當中。

6.while, for…in…

均為循環(huán)語句,使用while時要注意成立條件,防止陷入死循環(huán)
for in 遍歷

7.assert

斷言,聲明其布爾值必須為真的判定,如果發(fā)生異常就說明表達示為假。
可以理解assert斷言語句為raise-if-not,用來測試表示式,其返回值為假,就會觸發(fā)異常。

assert 1==1
assert 1 == 2# 會報錯  Asserterror
assert expression , 'arguments'
#assert 表達式 [, 參數(shù)]用來解釋斷言并更好知道哪里錯了

8.pass

pass是空語句,為了保證程序結(jié)構(gòu)的完整性,
pass不做任何事情,一般用作 占位語句
當你編寫程序部分內(nèi)容還沒想好,可用pass語句占位

def no_idea():
   pass

#實例
for letter in 'python':
    if letter == 'h':
        pass
        print (u'這是pass塊')
    print (u'當前字母:', letter)
print ('bye,bye')

9.yield

yield的意思是生產(chǎn),返回了一個生成器對象,每個生成器只能使用一次

def h():
    print ('To be brave')
    yield 5
h() 

看到某個函數(shù)包含了yield,這意味著這個函數(shù)已經(jīng)是一個Generator
調(diào)用h()函數(shù)后,print 語句并未執(zhí)行,執(zhí)行yield用.next()方法

def h():
    print 'Wen Chuan'
    yield 5
    print 'Fighting!'

c = h()
# >>>c.next()# 在IDE 中不用print c.next(),直接c.next()。
# next()語句將恢復Generator執(zhí)行,并直到下一個yield表達式處
# Wen Chuan 
# 5 
# 當再次運行c.next()時由于沒有yield了報錯
# >>>c.next()
#  Fighting 
#  Traceback (most recent call last):
#  File "/home/evergreen/Codes/yidld.py", line 11, in <module>
#   c.next()
# StopIteration

一個帶有 yield的函數(shù)就是一個generation,他和普通函數(shù)不同,生成一個generator看起來像函數(shù)調(diào)用,但不會執(zhí)行任何函數(shù)代碼,直到對其調(diào)用.next()(在 for 循環(huán)中會自動調(diào)用 next())才開始執(zhí)行
雖然執(zhí)行流程仍按函數(shù)的流程執(zhí)行,但每執(zhí)行到一個 yield 語句就會中斷,并返回一個迭代值,下次執(zhí)行時從 yield 的下一個語句繼續(xù)執(zhí)行??雌饋砭秃孟褚粋€函數(shù)在正常執(zhí)行的過程中被 yield 中斷了數(shù)次,每次中斷都會通過 yield 返回當前的迭代值。

#使用isgeneratorfunction判斷一個函數(shù)是否是一個特殊的generator 函數(shù)
from inspect import isgeneratorfunction 
isgeneratorfunction(h) 
# True

send() 與next()

def h():
    print 'Wen Chuan',
    m = yield 5  # Fighting!
    print m
    d = yield 12
    print 'We are together!'

c = h()
m = c.next()  #m 獲取了yield 5 的參數(shù)值 5
d = c.send('Fighting!')  #d 獲取了yield 12 的參數(shù)值12
print 'We will never forget the date', m, '.', d

send()可以傳遞yield表達式的值進去,而next()不能傳遞特定的值,只能傳遞None進去。
因此,我們可以看做c.next() 和 c.send(None) 作用是一樣的
注意?。。〉谝淮握{(diào)用時,請使用next()語句或是send(None),不能使用send發(fā)送一個非None的值,否則會出錯的,因為沒有yield語句來接收這個值

10.break 與 contiue

Python break語句用來終止循環(huán),用在while和for循環(huán)中??!直接跳出 整個 循環(huán)
嵌套循環(huán),break語句將停止執(zhí)行最深層的循環(huán),并開始執(zhí)行下一行代碼

for letter in 'python':# 第一個例子
    if letter == 'h'
        break 
    print (u'當期字母:',letter)
#輸出到'p''y''t'    

var= 10 # 第二個例子
while var > 0:
    print (u'當期字母:',var )
    var = var -1
    if var == 5
       break
#輸出到6       
print ('bye')

break是跳出整個循環(huán),continue是跳出當前循環(huán)

#例1
for letter in 'pyhton':
    if letter == 'h':
        continue
    print (u'當前字母:', letter)
#打印出 pyton

#例2
var = 10
while var > 0:
    var -= 1
    if var == 5:
        continue
    print (u'當前字母:', var)
#結(jié)果 98764321

11.try except finally

try:
<語句>        #運行別的代碼
except <名字>:
<語句>        #如果在try部份引發(fā)了'name'異常
except <名字>,<數(shù)據(jù)>:
<語句>        #如果引發(fā)了'name'異常,獲得附加的數(shù)據(jù)
else:
<語句>        #如果沒有異常發(fā)生

如果當try后的語句執(zhí)行時發(fā)生異常,python就跳回到try并執(zhí)行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發(fā)新的異常)。
如果在try后的語句里發(fā)生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結(jié)束程序,并打印缺省的出錯信息)。
如果在try子句執(zhí)行時沒有發(fā)生異常,python將執(zhí)行else語句后的語句(如果有else的話),然后控制流通過整個try語句。

try:
    try:
        raise NameError
    except TypeError:
        print ('as')
except NameError:
    print ('e')

e,try后語句raise觸發(fā)異常,except沒有匹配字句,被拋到上層try匹配,print 'e'

try:    
     1/0
except Exception , e:    
     print e 
#以上傳統(tǒng)的異常處理,加入!!!traceback后會打印出詳細的錯誤信息
import traceback
try:   
      1/0
except Exception: 
     traceback.print_exc()
try:
<語句>
finally:
<語句>    #退出try時總會執(zhí)行
raise

try:
    1 / 0
except Exception as e:
    '''異常的父類,可以捕獲所有的異常'''
    print "0不能被除"
else:
    '''保護不拋出異常的代碼'''
    print "沒有異常"
finally:
    print "最后總是要執(zhí)行我"

12.raise

觸發(fā)異常

raise [Exception[,args[,traceback]]]

語句中Exception是異常的類型(例如,NameError)參數(shù)是一個異常參數(shù)值。
該參數(shù)是可選的,如果不提供,異常的參數(shù)是”None”。
最后一個參數(shù)是可選的(在實踐中很少使用),如果存在,是跟蹤異常對象。

def mye( level ):
    if level &lt; 1:
        raise Exception("Invalid level!", level)

raise 觸發(fā)異常后,后面的代碼就不會再執(zhí)行

try:
     s = None
     if s is None:
         print ("s 是空對象")
         raise NameError     #如果引發(fā)NameError異常,后面的代碼將不能執(zhí)行
     print (len(s)  #這句不會執(zhí)行,但是后面的except還是會走到
except TypeError:
     print ("空對象沒有長度") #由于錯誤類型并不是TypeError,不執(zhí)行print

try:
     s = None
     if s is None:
         print (u"s 是空對象")
         raise NameError('name is wrong','is')     #如果引發(fā)NameError異常,后面的代碼將不能執(zhí)行
     print (len(s))  #這句不會執(zhí)行,但是后面的except還是會走到
except NameError,argvment:
     print (u"空對象沒有長度",argvment)
'''
學習中遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:489111204 
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
s = None
if s is None:
    raise NameError

 print ('is here?') #如果不使用try......except這種形式,那么直接拋出異常,不會執(zhí)行到這里

def mye( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 觸發(fā)異常后,后面的代碼就不會再執(zhí)行

try:
    mye(0)                # 觸發(fā)異常
except "Invalid level!":
    print (1)
else:
    print (2)

die函數(shù),打印錯誤信息

def die(error_massage):
    raise Exception(error_massage)

a = 'wer'
if a == None:
    print ('None')
else:
    die()

13.exec–eval–execfile

exec 用來執(zhí)行儲存在字符串或文件中的Python語句
exec是一條語句將字符串str當成有效的python代碼來執(zhí)行
eval與execfile是pytho內(nèi)置函數(shù)
eval(str[globals[locals]])函數(shù)將字符串str當成有效的python表達式來求值,并提供返回計算值

exec 'print"hello world"'
exec 'a=100'
# 執(zhí)行后 a = 100
print (a) #100
eval('3+5')# 8
b = eval('5+6')#eval 返回計算值
print (b + 1) #12

execfile(filename)函數(shù)可以用來執(zhí)行文件

execfile(r'F:\learn\ex1.py')
# 若你位于文件所在目錄直接執(zhí)行
execfile(r'ex1.py')

from os.path import exists
exists(file)將文件名字符串作為參數(shù),如果文件存在返回True,否則返回False

14.return

return 是函數(shù)返回值

def fun():
    print ('asd')
# fun() 函數(shù)沒有顯示return,默認返回None

def fan(a):
    return a
#有返回值

15.lambda—filter—map—reduce—

lambda 只是一個表達式,定義了一個匿名函數(shù),起到函數(shù)速寫的作用
由于lambda只是一個表達式,它可以直接作為python 列表或python 字典的成員,比如

info = [lambda a:a**3 , lambda b:b**3]
g = lambda x:x+1
g(1) #2 等價于 lambda x:x+1(1)
g(3) #4
#其中 x 為入口參數(shù),x+1 為函數(shù)體
#用的函數(shù)來同樣表示
def g(x):
    return x+1


#lambda 也可以用在函數(shù)中
def action(x):
    return lambda y:x+y

a = action(3)# a是action函數(shù)的返回值,
a(22) # 24 ,a(22) ,調(diào)用了action返回的lambda表達式
# 上面函數(shù)也可直接寫成下式
b = lambda x:lambda y:x+y
a = b(3)
a(2) # 也可直接 (b(3))(2)


# lambda 可以一個、多個參數(shù)
g = lambda x:x*2 #one
print (g(3))

m = lambda x,y,z: (x-y)*z # mutiple
print (m(3,1,2))

#lambda 并不會帶來程序運行效率的提高,只會使代碼更簡潔。
#如果可以使用for...in...if來完成的,堅決不用lambda。
#如果使用lambda,lambda內(nèi)不要包含循環(huán),如果有,我寧愿定義函數(shù)來完成,
#使代碼獲得可重用性和更好的可讀性。
# lambda 是為了減少單行函數(shù)的定義而存在的。


# --filter(function or None, sequence) -> list, tuple, or string
# function是一個謂詞函數(shù),接受一個參數(shù),返回布爾值True或False。
# filter函數(shù)會對序列參數(shù)sequence中的每個元素調(diào)用function函數(shù),
# 最后返回執(zhí)行結(jié)果為True的
# 返回值的類型和參數(shù)sequence(list, tuple, string)的類型相同
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

print (filter(lambda x: x % 3 == 0, foo))# filter 是 過濾/篩選 函數(shù)
print([x for x in foo if x % 3==0]) #[18, 9, 24, 12, 27] 篩選foo中能被3整除的

map(function, sequence)
對sequence中的item 依次執(zhí)行 function,將執(zhí)行結(jié)果組成list返回
單個參數(shù)

str = ['a', 'b','c', 'd'] 

def fun2(s): 
    return s + ".txt"

ret = map(fun2, str)
print (ret) # ['a.txt', 'b.txt', 'c.txt', 'd.txt']

多個參數(shù),要求函數(shù)接受多個參數(shù)

def add(x,y):
    return x+y

print (map(add,range(5),range(5)))
#[0,2,4,6,8]

foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
print (map(lambda x: x * 2 + 10, foo)) 
#[14, 46, 28, 54, 44, 58, 26, 34, 64]

reduce(function, sequence, starting_value)
對sequence中的item順序迭代調(diào)用function,如果有starting_value,
還可以作為初始值調(diào)用,例如可以用來對List求和

def add1(x,y):
    return x+y

print reduce(add1,range(1,100))
# 4950 注:1+2+...+99
print reduce(add1,range(1,100),20)
# 4970 注:1+2+...+99+20,20為初始值

到此這篇關(guān)于Python中有哪些關(guān)鍵字及關(guān)鍵字的用法的文章就介紹到這了,更多相關(guān)python關(guān)鍵字用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Python中dbm模塊和shelve模塊的使用

    詳解Python中dbm模塊和shelve模塊的使用

    這篇文章主要為大家詳細介紹了Python中dbm模塊和shelve模塊的具體用法,文中的示例代碼簡潔易懂,對我們深入學習Python有一定的幫助,需要的可以參考下
    2023-10-10
  • 如何利用PyQt5美化你的GUI界面

    如何利用PyQt5美化你的GUI界面

    python的腳本開發(fā)簡單,有時候只需幾行代碼就能實現(xiàn)豐富的功能,而且python本身是跨平臺的,所以深受程序員的喜愛,下面這篇文章主要給大家介紹了關(guān)于如何利用PyQt5美化你的GUI界面的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • python利用ffmpeg進行錄制屏幕的方法

    python利用ffmpeg進行錄制屏幕的方法

    今天小編就為大家分享一篇python利用ffmpeg進行錄制屏幕的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python實現(xiàn)簡繁體轉(zhuǎn)換

    Python實現(xiàn)簡繁體轉(zhuǎn)換

    很多時候簡繁體轉(zhuǎn)換,掌握了簡體與繁體的轉(zhuǎn)換,往往能夠事半功倍,本文主要介紹了Python實現(xiàn)簡繁體轉(zhuǎn)換,感興趣的可以了解一下
    2021-06-06
  • Django框架序列化與反序列化操作詳解

    Django框架序列化與反序列化操作詳解

    這篇文章主要介紹了Django框架序列化與反序列化操作,結(jié)合實例形式詳細分析了Django框架Serializer類操作對象序列化及反序列化相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-11-11
  • python實現(xiàn)內(nèi)存監(jiān)控系統(tǒng)

    python實現(xiàn)內(nèi)存監(jiān)控系統(tǒng)

    這篇文章主要為大家詳細介紹了python實現(xiàn)內(nèi)存監(jiān)控系統(tǒng),通過系統(tǒng)命令或操作系統(tǒng)文件獲取到內(nèi)存信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python實現(xiàn)圖片指定位置加圖片水印(附Pyinstaller打包exe)

    Python實現(xiàn)圖片指定位置加圖片水?。ǜ絇yinstaller打包exe)

    這篇文章主要介紹了Python實現(xiàn)圖片指定位置加圖片水印,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • python2和python3的輸入和輸出區(qū)別介紹

    python2和python3的輸入和輸出區(qū)別介紹

    這篇文章主要介紹了python2和python3的輸入和輸出區(qū)別介紹,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • CentOS 7 安裝python3.7.1的方法及注意事項

    CentOS 7 安裝python3.7.1的方法及注意事項

    這篇文章主要介紹了CentOS 7 安裝python3.7.1的方法,文中給大家提到了注意事項,需要的朋友可以參考下
    2018-11-11
  • Python+Appium自動化操作微信的教程分享

    Python+Appium自動化操作微信的教程分享

    Appium?是一個開源的自動化測試工具,支持?Android、iOS?平臺上的原生應用,支持?Java、Python、PHP?等多種語言。本文主要介紹了Python+Appium自動化操作微信的教程,希望對大家有所幫助
    2023-01-01

最新評論

阿克陶县| 井研县| 红河县| 随州市| 榆林市| 滨海县| 九台市| 罗城| 遂溪县| 密云县| 凤庆县| 阿合奇县| 阜新市| 綦江县| 万安县| 勐海县| 兴化市| 临沭县| 民权县| 锦屏县| 叶城县| 潼关县| 张家川| 光山县| 西峡县| 望都县| 慈溪市| 东宁县| 卢龙县| 高尔夫| 泾源县| 油尖旺区| 内黄县| 祥云县| 金堂县| 桐柏县| 郧西县| 皮山县| 福贡县| 家居| 和龙市|