python之程序结构

时间:2022-03-04 10:33:57

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!"