每日学习笔记(5)

#coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
myDict = {}
myList = []
global_var = 0
def changeVar():
global global_var
myDict['1001'] = 'hello'
myDict['1002'] = 'world'
myList.append(1)
myList.append(2)
global_var += 1
def printVar():
for key in myDict.keys():
print "key is %s" % key
print myDict[key]
print global_var
for item in myList:
print "item is %s" % item
if __name__ == '__main__':
for i in range(1,4):
myDict = {}
changeVar()
printVar()
2,我个人处理python中文编码的一个基本流程是:
1)首先声明:
#coding=utf-8
这样确保中文字符可以在代码文件中显示,然后代码文件也保存为utf8(无BOM头结构)
2)为处理方便,将系统的默认编码处理方式也改成utf8
reload(sys)
sys.setdefaultencoding('utf8')
3)然后对代码中处理的变量var,一个基本原则就是:如果你明确知道变量的自身编码,那么就根据其编码decode为unicode,此时可以通过type(var) is unicode是否为true来确定是否已经转成unicode了,然后你可以再将其encode为utf8格式,当然,如果你一开始就不知道变量var是什么编码,那么建议采用chardet库来进行检测,这个库Mozilla也在用的,准确度还是不错的。
4)如果你不担心存储的性能问题,强烈建议全部存储为utf8吧,别再啥gb2312,gbk之类,烦死了
3,python的日志模块非常简练,方便,实例如下:

Logger = None
LogFile = "c://test.log"
def initLogger():
global Logger
Logger = logging.getLogger()
handler = logging.FileHandler(LogFile)
formatter = logging.Formatter('%(asctime)s ********* %(message)s')
handler.setFormatter(formatter)
Logger.addHandler(handler)
Logger.setLevel(logging.INFO)
if __name__ == '__main__':
initLogger()
Logger.info("hello,world")
4,在判断一个变量是否在一个List或Dictionary中存在时,一定要小心变量的类型是否和List或Dictionary中存储的变量类型是否一致,否则就悲剧了,我最近就碰到这样一个bug,
如果类型不一致,那么这个判断会始终都是false的
5,脚本进入生产环境后,一定记得把debug置为false,从而将debugs时使用的print信息都屏蔽掉,最好还是结合Logger来进行调试吧
6,Python脚本开头都加入下面这两句
#coding=utf-8
如果为了可移植性考虑,你也可以将第一句写成
不过我还是建议你用第一种,毕竟自己指定python的版本才放心,要是依靠系统来查找,若存在多个python版本,那就悲剧了
作者:洞庭散人
出处:http://phinecos.cnblogs.com/
posted on 2010-06-08 11:50 Phinecos(洞庭散人) 阅读(1001) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
2008-06-08 《windows核心编程》笔记(三)
2007-06-08 OnDraw()和OnPaint()的区别
2006-06-08 《Java编程思想》读书笔记(11)
2006-06-08 TOJ_1002解题报告
2006-06-08 TOJ_1001解题报告
2006-06-08 《Java编程思想》读书笔记(10)