1. 程式人生 > >python之程式結構

python之程式結構

1、控制結構

if a>b: #註釋  ,多行註釋可以用 '''多行註釋'''   
    result=a-b     
elif a<b:     
    result=b-a     
else:     
    result=0    
  
while a<100:
    if a==30:
        continue
    if a>50:
        break
    print(a)
    pass #nop
  
while a<100:  
    print(a)   
  
for eachnum in [1,2,3]:  
    print(eachnum)   
  
def add(a=1,b=2):     
    return (a+b)   

2、函式結構
def addnum (a,b=1,*c,**d): #位置引數,預設引數,元組引數,字典引數,順序不能改變  
    print "a is "+str(a)+" b is "+str(b)  
    sum=a+b;  
  
    print "para in c"         
    for every_para in c:  
        print every_para  
        sum=sum+every_para  
  
    print "para in d"  
    for every_key in d.keys():  
        print every_key+" value "+str(d[every_key])  
        sum=sum+d[every_key]  
  
    return sum  
          
#print addnum(1,2,3,4,key1=5,key2=6)  
  
#單行函式可以用表示式表示  
mulnum=lambda a,b=2:a*b  
print mulnum(10)  

3、類組織
class person:  
    "this is a person" #類文件  
      
    country="china" #類屬性  
  
    def __init__ (self,name,age=28): #建構函式,用預設引數來實現函式過載  
        self.name=name #例項屬性不用預先定義,實際上可以隨時新增 
        self.age=age  
      
    def sayhello (self):例項方法,注意有self引數  
        print "hello,i am a person"  
         
 
    @classmethod  
    def sayhello (cls):  
        print "hello word "+cls.country  
         
    @staticmethod  
    def sayhello ():  
        print "hi word"  
          
person1=person("justsong")  
  
  
class student(person):  
    def __init__ (self,name,age=28,grade=3):  
        person.__init__(self,name,age)  
        self.grade=grade  
          
student1=student("cy") #靜態方法和類方法,屬性都被繼承  
student1.sayhello()  
      
  
#方法的查詢順序是 靜態方法---類方法---例項方法  
#屬性的查詢順序是 例項屬性---類屬性---基類屬性 

4、模組組織

python的模組就是字尾為py或者pyc的python檔案,python的包就是目錄。

import sys  
import mod2 #一個模組對應著一個檔案,mod2.py必須位於搜尋路徑中的一個  
#因為模組名和檔名相同,所以就依賴於檔案系統來保證全域性名稱空間中模組名的唯一性  
from mod3 import mod3_b#引入名稱空間  
import mod4 as m4 #模組別名,m4=mod4也可以  
from subdir import mod5 #匯入一個包實際上是匯入了__init__.py  
  
print "import path:"  
for import_path in sys.path:  
    print import_path  
  
print mod2.mod2_a  
print mod3_b #已經把mod3匯入到當前模組的名稱空間  
print m4.mod4_a  
print mod5.mod5_a  

5、異常處理
try:  
    #a=2/0  
    raise RuntimeError,"myfirsterror"  
  
except ZeroDivisionError,err:#err為錯誤資訊,之前為錯誤型別  
    print ZeroDivisionError,err  
  
except RuntimeError,err:  
    print RuntimeError,err  
  
finally:  
    print "good!"