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