Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
pythonÉîÈëÖ®Òì³£ºÍ´íÎó´¦Àí£¨ÖØµã£©
 
  2959  次浏览      32
 2019-9-4
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcsdn,±¾Îļòµ¥½éÉÜÁËpythonÉîÈëÖ®Òì³£ºÍ´íÎó´¦Àí£¬ÒÔ¼°Òì³£µÄ½â¾ö˼·£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£

¹ØÓÚ´íÎóºÍÒì³£

£¨1£©¸ÅÄ´íÎóÊÇÎÞ·¨Í¨¹ýÆäËû´úÂë½øÐд¦ÀíÎÊÌ⣬ÈçÓï·¨´íÎóºÍÂß¼­´íÎó£¬Óï·¨´íÎóÊǵ¥´Ê»ò¸ñʽµÈд´í£¬Ö»Äܸù¾ÝϵͳÌáʾȥÐÞ¸ÄÏàÓ¦µÄ´úÂ룬Âß¼­´íÎóÊÇ´úÂëʵÏÖ¹¦ÄܵÄÂß¼­ÓÐÎÊÌ⣬ϵͳ²»»á±¨´í£¬Ò²ÊÇÖ»ÄÜÕÒµ½ÏàÓ¦µÄ´úÂë½øÐÐÐ޸ģ»Òì³£ÊdzÌÐòÖ´Ðйý³ÌÖУ¬³öÏÖµÄδ֪ÎÊÌ⣬ÕâÀïÓï·¨ºÍÂß¼­¶¼ÊÇÕýÈ·µÄ£¬¿ÉÒÔͨ¹ýÆäËû´úÂë½øÐд¦ÀíÐÞ¸´£¬Èç¿ÉÒÔͨ¹ýifÅж¨Óï¾äÀ´±ÜÃâ¶ÔÄêÁä½øÐи³ÖµÊ±ÊäÈëÁË×Ö·û¶ø³öÏÖÒì³£µÄÇé¿ö£¬ÈçʹÓò¶×½Òì³£¿ÉÒÔ±ÜÃâ³ýÁãÒì³£µÈ

£¨2£©¹ØÓÚ³£¼ûµÄϵͳÒì³££º

³ýÁãÒì³£(ZeroDiviceError)£º±»³ýÊýд³ÉÁË0

Ãû³ÆÒì³£(NameError)£º±äÁ¿Î´¶¨Òå

ÀàÐÍÒì³£(TypeError)£º²»Í¬ÀàÐÍÊý¾Ý½øÐÐÏà¼Ó

Ë÷ÒýÒì³£(IndexError)£º³¬³öË÷Òý·¶Î§

¼üÒì³£(KeyError)£ºÃ»ÓжÔÓ¦Ãû³ÆµÄ¼ü

ÖµÒì³£(ValueError)£º½«×Ö·ûÐÍÊý¾Ýת»»³ÉÕûÐÍÊý¾Ý

ÊôÐÔÒì³£(AttributeError)£º¶ÔÏóûÓжÔÓ¦Ãû³ÆµÄÊôÐÔ

µü´úÆ÷Òì³£(StopIteration)£ºµü´ú´ÎÊý³¬³öµü´úÆ÷ÄÚÈݸöÊý

£¨3£©¹ØÓÚpythonÒì³£µÄ¼Ì³Ð¹ØÏµÊ÷ͼ

£¨4£©Òì³£µÄ½â¾ö˼·

ϵͳÄÚÖÃÁ˺ܶàÓ¦Óó¡¾°£¬ÎÒÃÇÔÚÔËÐгÌÐò¹ý³ÌÖУ¬Ò»µ©´¥·¢Ïà¹Ø³¡¾°£¬ÏµÍ³¾Í»áÏòÍâÅ׳öÏàÓ¦µÄÎÊÌ⣬Õâ¾ÍÊÇϵͳÅ׳öµÄÒì³£

Ô¤·À£ºÌí¼ÓÈÝ´í´¦Àí£¬´úÂëËä»á´¥·¢Òì³££¬µ«Ê¹ÓÃÈÝ´í´¦Àí¿ÉÒÔ²»ÈÃÒì³£±»´¥·¢

½â¾ö£ºÈç¹ûÈÝ´í´úÂë¹ý¶àʱ£¬»áʹµÃÕû¸ö³ÌÐò·Ç³£»ìÂÒ£¬Õâʱ¿ÉÒÔʹÓò¶×½Òì³£½øÐд¦Àí

½â¾ö·½°¸1--²¶×½Òì³£µÄÍêÕû»ú¹¹ÈçÏ£º

try:
1 / 0
print(name)
except ZeroDivisionError as z:
print("³ýÁã´íÎó")
except NameError as n:
print("Ãû×Ö´íÎó")
else:
print("´úÂëû´í")
finally:
print("ºóÐø´úÂëÖ´ÐÐ")

ÕâÀïµ±1 / 0 Ö´ÐÐʱ£¬³öÏÖÒì³££¬»áÌø¹ýprint(name)È¥Ö´ÐÐexcept ZeroDivisionError as z:½øÐв¶×½£¬´Ó¶ø²»»áÈ¥Ö´ÐÐprint(name)£¬¹ÊºóÃæ¶ÔÆäµÄ²¶×½Ò²ÊÇÎÞЧµÄ

×¢Òâ2£º

try:
# 1 / 0
print(name)
except (ZeroDivisionError, NameError) as z:
print("Òì³£")
else:
print("´úÂëû´í")
finally:
print("ºóÐø´úÂëÖ´ÐÐ")

ÕâÀïÈç¹û¶Ô¶à¸öÒì³£µÄ´¦ÀíÊÇÏàͬµÄ£¬Ôò¿ÉÒÔ½«ÕâЩÒì³£½øÐкϲ¢´¦Àí

×¢Òâ3£º

try:
# 1 / 0
print(name)
except Exception as z:
print("Òì³£")
else:
print("´úÂëû´í")
finally:
print("ºóÐø´úÂëÖ´ÐÐ")

Èç¹û²»ÖªµÀ¾ßÌåÊÇʲôÒì³££¬¿ÉÒÔÖ±½ÓʹÓÃException½øÐв¶×½£¬ÒòΪÕâЩ³£¼ûµÄÒì³£¶¼ÊǼ̳Ð×ÔExceptionµÄ

½â¾ö·½°¸2--withÓï¾ä

ʵÏÖ²½Ö裺

1.ÉÏÏÂÎıí´ïʽcontext_expressionÒª·µ»ØÒ»¸öÉÏÏÂÎĹÜÀíÆ÷

2. Ö´ÐÐÉÏÏÂÎĹÜÀíÆ÷µÄ__enter__()·½·¨£¬Èç¹ûдÁËas target£¬Ôò°Ñ__enter__()·½·¨µÄ·µ»ØÖµ¸³Öµ¸øtarget

3.Ö´ÐÐbodyÓï¾äÌå

4.Ö´ÐÐÉÏÏÂÎĹÜÀíÆ÷¶ÔÏóµÄ__exit__()·½·¨

×¢Ò⣺ÉÏÏÂÎıí´ïʽcontext_expression±ØÐëÒª·µ»ØÒ»¸öÉÏÏÂÎĹÜÀíÆ÷£¬ÉÏÏÂÎĹÜÀíÆ÷ÊÇʵÏÖÁËÉÏÏÂÎĹÜÀíЭÒéµÄ¶ÔÏ󣬶øÉÏÏÂÎĹÜÀíЭÒéÖбØÐë°üº¬__enter__()·½·¨ºÍ__exit__()·½·¨¡£Àý×Ó£º

with open("a.txt", "r") as f:
f.readlines()

ÕâÀïÏÈÓÉopen("a.txt", "r")Éú³ÉÉÏÏÂÎĹÜÀíÆ÷£¬¶ø¸ÃÉÏÏÂÎĹÜÀíÆ÷µÄ__enter__()·½·¨¾ÍÊÇ´ò¿ªÎļþ£¬ÔÙ½«Îļþ¾ä±ú¸³Öµ¸øf£¬Ö´ÐÐÍêf.readlines()£¬»á×Ô¶¯Ö´ÐÐÉÏÏÂÎĹÜÀíÆ÷µÄ__exit__()·½·¨£¬ÕâÀï¼´¹Ø±ÕÎļþ¡£ÕâÖÖд·¨±ÜÃâÁËÔÚÎļþ´¦Àí¹ý³ÌÖгöÏÖÒ쳣ʱµ¼ÖµĺóÐøclose()·½·¨ÎÞ·¨Ö´ÐеÄÎÊÌ⣬ͬʱҲ¼ò»¯ÁË´úÂ룬±ÜÃâ¶à¸öÎļþµÄ´ò¿ªºÍ¹Ø±Õ´úÂëÖØ¸´ÎÊÌâ

£¨5£©×Ô¶¨ÒåÉÏÏÂÎĹÜÀíÆ÷

·½·¨Ò»£ºÀûÓÃÀàÀ´´´½¨ÉÏÏÂÎĹÜÀíÆ÷¡£Ô­Òò--ÉÏÏÂÎĹÜÀíÆ÷ÊÇÒ»¸ö°üº¬__enter__()·½·¨ºÍ__exit__()·½·¨µÄ¶ÔÏó

import traceback
class Test:
def __enter__(self):
print("enter")
return "xxx"
def __exit__(self, exc_type, exc_val, exc_tb):
print(self, exc_type, exc_val, exc_tb)
print(traceback.extract_tb(exc_tb))
print("exit")
return True
with Test() as t:
print("²âÊÔ", t)
1 / 0

ÆäÖÐ__enter__()·½·¨µÄ·µ»ØÖµ½«»á¸³Öµ¸øt£¬¼´xxx£»Ö´ÐÐwithÓï¾äÌåºó³öÏÖµÄÒì³£»áÅ׸ø__exit__()·½·¨£¬Æä²ÎÊý·Ö±ð´ú±íµÄʱÒì³£µÄÀàÐÍ£¬Òì³£µÄÖµ£¨ÄÚÈÝ£©ºÍÒì³£µÄ×·×ÙÐÅÏ¢£¬Òì³£×·×ÙÐÅÏ¢¿ÉÒÔʹÓÃtracebackÄ£¿éµÄextract_tb·½·¨µ¥¶À³éÈ¡³öÀ´£»__exit__()·½·¨µÄ·µ»ØÖµ¾ö¶¨Òì³£µÄÅ׳öÓë·ñ£¬Èç¹û·µ»ØTrue£¬ÔòÒì³£ÔÚÄÚ²¿Ïû»¯£¬²»»áÅ׳ö£¬³ÌÐòÕý³£ÔËÐУ¬Èç¹ý·µ»ØFalse£¬Ôò¶ÔÍâÅ׳öÒì³££¬³ÌÐòÖÕÖ¹

·½·¨¶þ£ºÀûÓÃÉú³ÉÆ÷º¯ÊýÀ´´´½¨ÉÏÏÂÎĹÜÀíÆ÷

import contextlib
@contextlib.contextmanager
def shengchengqi():
print(1)
yield 6
print(2)
with shengchengqi() as scq:
print(3, scq)

ÕâÀïÐèҪʹÓÃcontextlibÄ£¿éÖеÄcontextlib.contextmanager×°ÊÎÆ÷¶ÔÉú³ÉÆ÷º¯Êý½øÐÐ×°ÊΣ¬Ê¹µÃÆä±à³ÌÒ»¸öÉÏÏÂÎĹÜÀíÆ÷£¬ÕâÀïʵÏÖµÄÊǽ«print(1)µ±×÷__enter__()·½·¨Ö´ÐУ¬½«print(2)µ±×÷__exit__()·½·¨Ö´ÐУ¬¶øyieldºóÃæµÄÖµµ±×÷__enter__()·½·¨µÄ·µ»ØÖµ£¬¸³Öµ¸øscq

ʹÓÃÕâÖÖ·½·¨µÄºÃ´¦Êǽ«ÒµÎñÂß¼­´úÂ벿·ÖÓëÒì³£´¦Àí´úÂ벿·Ö½øÐзÖÀ룬´ïµ½´úÂëµÄ½âñîÄ¿µÄ£¬ÀýÈ磺

import contextlib
@contextlib.contextmanager
def ze():
try:
yield
except Exception as e:
print("error", e)
a = 1
b = 0
with ze():
a / b
x = 1
y = 0
with ze():
x / y

¶øÆäÔ­±¾µÄ´úÂëÖØ¸´ÐԱȽϸߣ¬²¢ÇÒÒì³£´¦Àí´úÂëºÍÒµÎñÂß¼­´úÂë»ìÔÚÒ»Æð£º

a = 1
b = 0
try:
a / b
except Exception as e:
print("error", e)
x = 1
y = 0
try:
x / y
except Exception as e:
print("error", e)

·½·¨Èý£ºÀûÓú¬ÓÐclose()·½·¨µÄÀà´´½¨ÉÏÏÂÎĹÜÀíÆ÷

1.Ò»¸öº¬ÓÐclose()·½·¨µÄÀ࣬¸ù¾ÝÂß¼­£¬¿ÉÒÔÕâÑùʵÏÖÉÏÏÂÎĹÜÀíÆ÷

class A(object):
def t(self):
print("t")
def close(self):
print("ÊÍ·Å´úÂë")
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
self.close()
with A() as a:
a.t()

ÏÈÖ´ÐÐ__enter__()·½·¨£¬·µ»ØAÀàµÄʵÀý¶ÔÏó¸øa£¬ÔÙÖ´ÐÐÓï¾äÌ壬ʹÓÃaµ÷Ó÷½·¨t()£¬×îºó×Ô¶¯Ö´ÐÐ__exit__()·½·¨£¬ÔÚÆäÖе÷ÓÃclose()·½·¨£¬ÊÍ·Å´úÂë

2.ʹÓÃcontextlibÄ£¿éµÄclosing()º¯Êý£¬¿ÉÒÔÊǺ¬ÓÐclose()·½·¨µÄÀàÖ±½Ó±ä³ÉÉÏÏÂÎĹÜÀíÆ÷

import contextlib
class A(object):
def t(self):
print("t")
def close(self):
print("ÊÍ·Å´úÂë")
with contextlib.closing(A()) as a:
a.t()

£¨6£©¶à¸öÉÏÏÂÎıí´ïʽµÄ²Ù×÷

import contextlib
with contextlib.nested(open("a.txt", "r") , open("a1.txt", "w")) as (from_file, to_file):
content = from_file.read()
to_file.write(content)

£¨7£©ÊÖ¶¯Å׳öÒì³£--raise ExceptionType(content)

def ageSet(age):
if age <= 0 or age > 200:
raise ValueError("²»·ûºÏ")
else:
print("СÃ÷µÄÄêÁäÊÇ%d" % age)
ageSet(18)

ÐèҪעÒâµÄÊÇ£¬ÔÚÕâ¸öÒì³£ÑÏÖØÓ°Ïì³ÌÐòÕûÌ幦ÄÜʵÏÖµÄʱºò£¬¾Í±ØÐëÒª½øÐÐÊÖ¶¯Å׳ö£¬¶ÔÒì³£½øÐÐÐ޸ģ¬Èç¹ûÒì³£ÎÞÉË´óÑÅ£¬¿ÉÒÔÖ±½Ó¶ÔÆä½øÐдòÓ¡£¬ÕâÑù±ÜÃâÒòΪСµÄÒì³£¶øÖÕÖ¹ºóÐø³ÌÐòµÄÔËÐÐ

£¨8£©×Ô¶¨ÒåÒì³£

class Xerror(Exception):
def __init__(self, mag, code_error):
self.mag = mag
self.code_error = code_error
pass
def __str__(self):
return self.mag + str(self.code_error)
def ageSet(age):
if age <= 0 or age > 200:
raise Xerror("²»·ûºÏ", 404)
else:
print("СÃ÷µÄÄêÁäÊÇ%d" % age)
try:
ageSet(-18)
except Exception as x:
print("cunwu", x)

ÓÉÓÚ³£¼ûÒì³£¶¼ÊǼ̳Ð×ÔExceptionÀàµÄ£¬×ùÒÎÕâÀï¿ÉÒÔ×Ô¶¨ÒåÒ»¸ö¼Ì³ÐÁËExceptionµÄ×ÓÀ࣬ÔÚÏòÍâÅ׳öÒ쳣ʱ£¬¼´raise Xerror("²»·ûºÏ", 404) £¬¿ÉÒÔ¿´³ÉÊÇ´´½¨Ò»¸öXerrorʵÀý¶ÔÏ󣬲¢¶ÔÆä³õʼ»¯ÊôÐÔ½øÐи³Öµ£¬È»ºóÀûÓÃ__str__()·½·¨¶ÔʵÀý¶ÔÏó½øÐÐÃèÊö£¬Õâ¾ÍÊÇ×Ô¶¨ÒåÒì³£µÄ·½·¨£¬ÔÚ×îºó¿ÉÒÔ¶ÔÅ׳öµÄÒì³£½øÐв¶×½

 
   
2959 ´Îä¯ÀÀ       32
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ