诛仙3树妖怎么飞升:[Python]python随笔

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 04:37:48

1、如何获取当前python文件所在的目录?import oscurrpath = os.path.dirname(__file__)


2、动态载入模块import impimp.load_source('test', 'test.py')


3、组合目录使用os.sep,而不是 / 或 \pathname = currpath + os.sep + filenamepathname = os.path.join(currpath, path1, path2, filename)


4、比较两个对象相等

class Class1:    

  def __init__(self, value):        

    self.value = value    

  def __eq__(self, other):        

    try:            

      return self.value == other.value        

    except AttributeError:            

      return False


class Class2:    

  def __init__(self, value):        

    self.value = value

  def __eq__(self, other):        

    try:            

      return self.value == other.value        

    except AttributeError:            

      return False


x = Class1(3)

y = Class2(3)

z = Class2(5)

print x == y #True

print x == z #False


5、获取当前系统的默认字符集import localelocale.getdefaultlocale()


6、python如何做国际化在代码中给需要转换的字符串增加特殊的标记filename = 'log.txt'message = _('write a log') #使用 _() 来标记需要翻译的字符串fp = open(filename, 'w')fp.write(message)fp.close()使用pygettext.py对py文件进行处理pygettext.py在python的安装目录下,应该是放在Tools\i18n目录下处理后生成后缀为pot的文件将pot文件复制成po文件,然后翻译其中的字符串注意将CHARSET修改为utf-8,文件的编码也用utf-8使用msgfmt.py对po文件进行处理msgfmt.py应该也在Tool\i18n目录下。处理后生成后缀为mo的文件,假设为spam.mo创建locale目录目录结构为locale\\LC_MESSAGESLocale Alias:zh_CN, en_US等将spam.mo文件放在该目录下修改程序的主函数import gettextt = gettext.translation('spam', '/usr/share/locale', lang='zh_CN')__buildins__.__dict__["_"] = t.ugettext


7、比较时你可以这样写: 3.143.14 and pi<3.15)是一样的


8、Int类型不会在超过31bit或32bit后溢出,它们会变成long型。在python里,long并非就是64位,他就是"长"类型,(python的长类型可以容纳数万位大的整数),效率会降低一点。在python 3000中,甚至连int与long的区别都没有了。


9、默认值只会在编译时被赋值一次,而非运行时。试试这个: def func(a=[]): a.append(42); 返回值a会随调用不断加入42。


10、连接多个字符串时,"".join(list)会比 for x in list: s+=x快得多。实际上 join调用复杂度是o(n),而+=是o(n2)。


11、你可以通过(x,)来创建只有一个元素的tuple,通常你只能建立如(x,y,z)那样的tuple,如果你想通过(x)来建立一个tuple,得到的只是x


12、如果你想看看整数类的帮助文档,你可以写(5).__str__; 你不能简化成5.__str__,因为解释器会把5.认作是浮点数,然后出错了。


13、一个紧跟在for循环后的else语句只有在循环不通过break退出时才会被调用。这对查找循环很有用处,通常这样的循环都会需要在退出后作额外的检查判断。