- 论坛徽章:
- 0
|
有P友提出怎样才能写出比较好的Python代码呢?我有一点经验,大家讨论讨论。真理越辩越明。
1. 每个python文件至少包含一个class, 所有的逻辑算法都包含在类的函数中。
2. 函数间传递的参数最好用全局变量,就是在init中定义self.xxx. 对外输出的结果一般也保存在全局变量中。
3. 每个文件必须有一个main函数,如果是库文件则测试代码可以写在main函数中方便调试。
==example==
#!/usr/bin/python
import smtplib,sys
from email.Message import Message
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.MIMEImage import MIMEImage
import getopt
class dogmail:
def __init__(self):
self.subject = ""
self.fromAdd = ""
self.toAdd = ""
self.CcAdd = ""
self.mailText = ""
self.imagePath = []
self.exchange = "rnd-mx01.hello.com"
self.internet = "mail.gamil.com"
self.mailtype = 1
def htmlMail(self):
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = self.subject
msgRoot['From'] = self.fromAdd
msgRoot['To'] = self.toAdd
msgRoot['Cc'] = self.CcAdd
msgRoot.preamble = 'This is a multi-part message in MIME format.'
msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)
msgText = MIMEText('This is the alternative plain text message.')
msgAlternative.attach(msgText)
msgText = MIMEText(self.mailText, _subtype='html',_charset='gb2312')
msgAlternative.attach(msgText)
if len(self.imagePath) != 0:
for x in self.imagePath:
fp = open(x, 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
imageId = "<image%s>" % str(self.imagePath.index(x)+1)
msgImage.add_header('Content-ID', imageId)
msgRoot.attach(msgImage)
return msgRoot.as_string()
def plainMail(self):
msgRoot = Message()
msgRoot['Subject'] = self.subject
msgRoot['From'] = self.fromAdd
msgRoot['To'] = self.toAdd
msgRoot['Cc'] = self.CcAdd
msgText = MIMEText(self.mailText, _subtype='plain', _charset='gb2312')
return msgRoot.as_string()[:-1]+msgText.as_string()
def send(self,msg = ""):
#body=MIMEText(body, _subtype='plain', _charset='gb2312')
server = 0
if self.mailtype == 1:
server = smtplib.SMTP(self.exchange)
else:
server = smtplib.SMTP(sefl.internet)
print "hello"
#server.set_debuglevel(1)
server.sendmail(self.fromAdd, self.toAdd, msg)
server.quit()
def usage(self):
print 'toAdd = aa,bb,cc'
def main():
aa = dogmail()
aa.subject = "just a test mail"
aa.fromAdd = "dog@dogmail.com"
aa.toAdd = "onmyway.q@google.com"
aa.mailText = 'Hello, I am there'
aa.imagePath = ["aa.jpg","bb.jpg"]
aa.send(aa.plainMail())
if __name__ == "__main__":
main()
我觉得这个帖子很有实际意义 一直自己写的东西太随意了 怎么快怎么写 一味追求快速 怎么方便这么写 写出的代码有些混乱 不知道大家有没有这样的问题 转过来一起看看 学习一下 也可以讨论一下更好的代码风格
[ 本帖最后由 guijia8427 于 2009-1-14 10:57 编辑 ] |
|