亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2023年02月04日 09:06:38   作者:小小程序員ol  
這篇文章主要介紹了Python中有哪些關(guān)鍵字及關(guān)鍵字的用法,分享python中常用的關(guān)鍵字,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(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)系用語(yǔ),Python具有短路邏輯,F(xiàn)alse and 返回 False
不執(zhí)行后面的語(yǔ)句, True or 直接返回True,不執(zhí)行后面的語(yǔ)句

2.del

刪除變量

if __name__=='__main__':
    a=1       # 對(duì)象 1 被 變量a引用,對(duì)象1的引用計(jì)數(shù)器為1
    b=a       # 對(duì)象1 被變量b引用,對(duì)象1的引用計(jì)數(shù)器加1
    c=a       #1對(duì)象1 被變量c引用,對(duì)象1的引用計(jì)數(shù)器加1
    del a     #刪除變量a,解除a對(duì)1的引用
    del b     #刪除變量b,解除b對(duì)1的引用
    #print a   #運(yùn)行此句出錯(cuò),name 'a' is not defined,說(shuō)明 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]     #拷貝列表,也不會(huì)有數(shù)據(jù)對(duì)象的復(fù)制,而是創(chuàng)建新的變量引用
    del li[0]  # 列表本身包含的是變量,del 刪除的是變量。
    print (li)      #輸出[2, 3, 4, 5]
    print(first)   #輸出 1

3.from

from引用模塊時(shí)會(huì)用到,例:

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

4.golbal

golbal為全局變量,但當(dāng)單個(gè)函數(shù)中出現(xiàn)同一變量名時(shí),在單個(gè)函數(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被用來(lái)處理異常

  • 不用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后面的語(yǔ)句被求值后,返回對(duì)象的enter()方法被調(diào)用,這個(gè)方法的返回值將被賦值給as后面的變量,此處為file
當(dāng)with后面的代碼塊全部被執(zhí)行完后,將調(diào)用前面返回對(duì)象的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__()方法返回的值 - 這個(gè)例子中是"Foo",賦值給變量'sample'
#3. 執(zhí)行代碼塊,打印變量"sample"的值為 "Foo"
#4. __exit__()方法被調(diào)用

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

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()

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

6.while, for…in…

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

7.assert

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

assert 1==1
assert 1 == 2# 會(huì)報(bào)錯(cuò)  Asserterror
assert expression , 'arguments'
#assert 表達(dá)式 [, 參數(shù)]用來(lái)解釋斷言并更好知道哪里錯(cuò)了

8.pass

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

def no_idea():
   pass

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

9.yield

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

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

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

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

c = h()
# >>>c.next()# 在IDE 中不用print c.next(),直接c.next()。
# next()語(yǔ)句將恢復(fù)Generator執(zhí)行,并直到下一個(gè)yield表達(dá)式處
# Wen Chuan 
# 5 
# 當(dāng)再次運(yùn)行c.next()時(shí)由于沒(méi)有yield了報(bào)錯(cuò)
# >>>c.next()
#  Fighting 
#  Traceback (most recent call last):
#  File "/home/evergreen/Codes/yidld.py", line 11, in <module>
#   c.next()
# StopIteration

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

#使用isgeneratorfunction判斷一個(gè)函數(shù)是否是一個(gè)特殊的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表達(dá)式的值進(jìn)去,而next()不能傳遞特定的值,只能傳遞None進(jìn)去。
因此,我們可以看做c.next() 和 c.send(None) 作用是一樣的
注意!??!第一次調(diào)用時(shí),請(qǐng)使用next()語(yǔ)句或是send(None),不能使用send發(fā)送一個(gè)非None的值,否則會(huì)出錯(cuò)的,因?yàn)闆](méi)有yield語(yǔ)句來(lái)接收這個(gè)值

10.break 與 contiue

Python break語(yǔ)句用來(lái)終止循環(huán),用在while和for循環(huán)中?。≈苯犹?整個(gè) 循環(huán)
嵌套循環(huán),break語(yǔ)句將停止執(zhí)行最深層的循環(huán),并開(kāi)始執(zhí)行下一行代碼

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

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

break是跳出整個(gè)循環(huán),continue是跳出當(dāng)前循環(huán)

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

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

11.try except finally

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

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

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

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

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

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

12.raise

觸發(fā)異常

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

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

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

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

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

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

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

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

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

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

def die(error_massage):
    raise Exception(error_massage)

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

13.exec–eval–execfile

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

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

execfile(filename)函數(shù)可以用來(lái)執(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ù)沒(méi)有顯示return,默認(rèn)返回None

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

15.lambda—filter—map—reduce—

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

info = [lambda a:a**3 , lambda b:b**3]
g = lambda x:x+1
g(1) #2 等價(jià)于 lambda x:x+1(1)
g(3) #4
#其中 x 為入口參數(shù),x+1 為函數(shù)體
#用的函數(shù)來(lái)同樣表示
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表達(dá)式
# 上面函數(shù)也可直接寫(xiě)成下式
b = lambda x:lambda y:x+y
a = b(3)
a(2) # 也可直接 (b(3))(2)


# lambda 可以一個(gè)、多個(gè)參數(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 并不會(huì)帶來(lái)程序運(yùn)行效率的提高,只會(huì)使代碼更簡(jiǎn)潔。
#如果可以使用for...in...if來(lái)完成的,堅(jiān)決不用lambda。
#如果使用lambda,lambda內(nèi)不要包含循環(huán),如果有,我寧愿定義函數(shù)來(lái)完成,
#使代碼獲得可重用性和更好的可讀性。
# lambda 是為了減少單行函數(shù)的定義而存在的。


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

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

map(function, sequence)
對(duì)sequence中的item 依次執(zhí)行 function,將執(zhí)行結(jié)果組成list返回
單個(gè)參數(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']

多個(gè)參數(shù),要求函數(shù)接受多個(gè)參數(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)
對(duì)sequence中的item順序迭代調(diào)用function,如果有starting_value,
還可以作為初始值調(diào)用,例如可以用來(lái)對(duì)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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用mysqldb連接數(shù)據(jù)庫(kù)操作方法示例詳解

    python使用mysqldb連接數(shù)據(jù)庫(kù)操作方法示例詳解

    這篇文章主要介紹了python mysqldb使用方法,大家參考使用
    2013-12-12
  • python獲取文件路徑、文件名、后綴名的實(shí)例

    python獲取文件路徑、文件名、后綴名的實(shí)例

    下面小編就為大家分享一篇python獲取文件路徑、文件名、后綴名的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 基于Python實(shí)現(xiàn)微信自動(dòng)回復(fù)功能

    基于Python實(shí)現(xiàn)微信自動(dòng)回復(fù)功能

    這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò)WechatPCAPI來(lái)實(shí)現(xiàn)微信自動(dòng)回復(fù)的功能,文中的示例代碼講解詳細(xì),快跟隨小編一起動(dòng)手嘗試一下
    2022-06-06
  • 一行代碼實(shí)現(xiàn)Python動(dòng)態(tài)加載依賴

    一行代碼實(shí)現(xiàn)Python動(dòng)態(tài)加載依賴

    本文主要介紹了Python動(dòng)態(tài)加載依賴,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Django REST framework 限流功能的使用

    Django REST framework 限流功能的使用

    DRF常用功能的案例基本用法都有講解,關(guān)于限流(Throttling)這個(gè)功能其實(shí)在真實(shí)的業(yè)務(wù)場(chǎng)景中能真正用到的其實(shí)不算多。今天說(shuō)這個(gè)話題其實(shí)一方面是討論功能,另一方面也是希望換個(gè)角度去審視我們的開(kāi)發(fā)過(guò)程,希望大家可以在使用DRF功能的同時(shí),也了解一下功能背后的實(shí)現(xiàn)
    2021-06-06
  • Python用來(lái)做Web開(kāi)發(fā)的優(yōu)勢(shì)有哪些

    Python用來(lái)做Web開(kāi)發(fā)的優(yōu)勢(shì)有哪些

    這篇文章主要介紹了Python用來(lái)做Web開(kāi)發(fā)的優(yōu)勢(shì)有哪些,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)Python,感興趣的朋友可以了解下
    2020-08-08
  • Python 實(shí)現(xiàn)自動(dòng)導(dǎo)入缺失的庫(kù)

    Python 實(shí)現(xiàn)自動(dòng)導(dǎo)入缺失的庫(kù)

    這篇文章主要介紹了Python 實(shí)現(xiàn)自動(dòng)導(dǎo)入缺失的庫(kù),解決導(dǎo)入 Python 庫(kù)失敗的問(wèn)題,本文分三種情況給大家介紹,需要的朋友可以參考下
    2019-10-10
  • Python使用ElementTree美化XML格式的操作

    Python使用ElementTree美化XML格式的操作

    這篇文章主要介紹了Python使用ElementTree美化XML格式的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Django使用jinja2模板的實(shí)現(xiàn)

    Django使用jinja2模板的實(shí)現(xiàn)

    本文主要介紹了Django使用jinja2模板的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python 元組和列表的區(qū)別

    python 元組和列表的區(qū)別

    這篇文章主要介紹了python 元組和列表的區(qū)別,幫助大家更好的理解和學(xué)習(xí)python 數(shù)據(jù)類(lèi)型的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-11-11

最新評(píng)論