Pythonの方法 エラー処理



すべての人に良い一日を! 年末年始は遅れており、みんな休んでいた。 それにもかかわらず、休日でも仕事が現れることがあります。 たとえば、Pythonで他の誰かのコードを掘り下げる機会がありました。 コードは優れており、十分に文書化されていますが、読書中、著者がPythonでドックを読んでCのような言語からコードを移植しているという感覚は消えませんでした。 これにより、Cに似た言語からPythonに切り替えるときに必然的に発生するエラーを示す記事を書くことになりました。



この記事は、最近この言語で書いている人や、詳細を気にせずに小さなスクリプトを書いている人に役立ちます。



リストを反復処理する



for i in range(len(a)):
    print "  %d   %s" % (i, a[i])
      
      





, : , a. xrange, . , enumerate.



for i, item in enumerate(a):
    print "  %d   %s" % (i, item)
      
      





enumerate(a) , (<>, <>). .



, . . , , , bool(a). : , bool(a) True, list(a) .





«» : , , , JS (myobject.myelement), :



class mydict(dict):
    def __getattr__(self, key):
        return self[key]
    def __setattr__(self, key, value)
        self[key] = value
      
      





.



a = mydict(no = "way", bad = "code")
print a.no
#  "way"
      
      







! :



a.update({1:"one", 2:"two"})
a.1
#!      
      
      







, , , , , :



def __getattr__(self, key):
    try:
        return self.key
    except:
        return self[key]
      
      





, , : self.key self.__getattr__(key).



, .



.

.



def formatName(name):
    if len(name)<40:
        if " " in name:
            if name[0]!="?":
                return name.split(" ")
    return False
	
def formatName(name):
    if len(name)>=40:
        return False
    if " " not in name:
        return False
    if name[0]=="?"
        return False
		
  return name.split(" ")
      
      





, :

— . , .

— . .





a=range(10);
for item in a:
    if item<5:
        a.remove(item)
print a 
#  [1, 3, 5, 6, 7, 8, 9]
      
      







? , . , . , :



i=0
while i<len(a):
    if i<5:
        del a[i]
    else:
        i += 1
      
      





filter(func, a). , func(item) .



filter(lambda x:x>=5, a)
#  [6, 7, 8, 9]
[i for i in a if i>=5]
#  [6, 7, 8, 9],    .
print a
#  a  
      
      





. c lambda-.

Python . : , .



All Articles