欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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ù)對象的復(fù)制,而是創(chuàng)建新的變量引用
    del li[0]  # 列表本身包含的是變量,del 刪除的是變量。
    print (li)      #輸出[2, 3, 4, 5]
    print(first)   #輸出 1

3.from

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

from sys import argv
# 從sys中導(dǎo)入argv
from sys import *
# 將sys中所有東西都導(dǎo)入
import sys 
# 導(dǎo)入sys,當需要sys中內(nèi)容時,需sys.argv而from sys import *
#不用每次都重復(fù)輸入'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()語句將恢復(fù)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)
'''
學(xué)習(xí)中遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:489111204 
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和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使用mysqldb連接數(shù)據(jù)庫操作方法示例詳解

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

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

    python獲取文件路徑、文件名、后綴名的實例

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

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

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

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

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

    Django REST framework 限流功能的使用

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

    Python用來做Web開發(fā)的優(yōu)勢有哪些

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

    Python 實現(xiàn)自動導(dǎo)入缺失的庫

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

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

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

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

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

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

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

最新評論