python tips

29 篇文章 0 订阅

s

指定文件编码

方法一:
# coding=utf-8
print 'hello world哈'


方法二:
# -*- coding: utf-8 -*-
print 'hello world哈'

str(),repr()

内建函数str()和repr()或反引号操作符(``)可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。str()函数得到的字符串可读性好,而repr()函数得到的字符串通常可以用来重新获得该对象,通常情况下obj == eval(repr(obj)) 这个等式是成立的。这两个函数接受一个对象作为其参数,返回适当的字符串。在下面的例子里,我们会随机取一些Python对象来查看他们的字符串表示。

>>> str(4.53-2j)
'(4.53-2j)'
>>>
>>> str(1)
'1'
>>>
>>> str(2e10)
'20000000000.0'
>>>
>>> str([0, 5, 9, 9])
'[0, 5, 9, 9]'
>>>
>>> repr([0, 5, 9, 9])
'[0, 5, 9, 9]'
>>>
>>> `[0, 5, 9, 9]`
'[0, 5, 9, 9]'


尽管str(),repr()和``运算在特性和功能方面都非常相似,事实上repr()和``做的是完全一样的事情,它们返回的是一个对象的“官方”字符串表示,也就是说绝大多数情况下可以通过求值运算(使用内建函数eval())重新得到该对象,但str()则有所不同。str()致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值,但很适合用于print语句输出。需要再次提醒的是,并不是所有repr()返回的字符串都能够用 eval()内建函数得到原来的对象。

>>> eval(`type(type))`) 
File "<stdin>", line 1
eval(`type(type))`)

SyntaxError:invalid syntax

也就是说 repr() 输出对 Python比较友好,而str()的输出对用户比较友好。虽然如此,很多情况下这三者的输出仍然都是完全一样的。


python web框架

http://wiki.python.org/moin/WebFrameworks


python 扩展包管理



http://jiayanjujyj.iteye.com/blog/1409819






distribute是setuptools的取代,pip是easy_install的取代。




关于这些包工具可以参考 http://guide.python-distribute.org/installation.html#installing-pip
 
下面简单的介绍一下:
Distribute是对标准库disutils模块的增强,我们知道disutils主要是用来更加容易的打包和分发包,特别是对其他的包有依赖的包。
Distribute被创建是因为Setuptools包不再维护了。


安装Distribute

可以通过distribute_setup.py 脚本来安装Distribute,也可以通过easy_install, pip,源文件来安装,不过使用distribute_setup.py来安装是最简单和受欢迎的方式
$ curl -0 http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py

 

或者:

$ wget http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py


Pip 是安装python包的工具,提供了安装包,列出已经安装的包,升级包以及卸载包的功能。
Pip 是对easy_install的取代,提供了和easy_install相同的查找包的功能,因此可以使用easy_install安装的包也同样可以使用pip进行安装。
 

安装Pip

Pip的安装可以通过源代码包,easy_install或者脚本。
下面介绍一下各种安装方法:


源代码方式:
$ wget http://pypi.python.org/packages/source/p/pip/pip-0.7.2.tar.gz (替换为最新的包)
$ tar xzf pip-0.7.2.tar.gz
$ cd pip-0.7.2
$ python setup.py install


easy_install:
$ easy_install pip


get_pip.py 脚本:
$ curl -0 https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ sudo python get-pip.py

 



OK, 下面来看一下Pip的使用

安装package
$ pip install Markdown
列出安装的packages
$ pip freeze
安装特定版本的package
通过使用==, >=, <=, >, <来指定一个版本号。
$ pip install 'Markdown<2.0'
$ pip install 'Markdown>2.0,<2.0.3'
升级包
升级包到当前最新的版本,可以使用-U 或者 --upgrade
$ pip install -U Markdown
卸载包
$ pip uninstall Markdown
查询包
pip search "Markdown"
 
PS -- 包安装后的py文件路径:/usr/local/lib/python2.7/dist-packages

s


pythonic

print

#字符串
value = {'what': 'hello, world', 'language': 'python'}
print '%(what)s, %(language)s' % value
#也可以包含int的
value = {'name': 'jianpx', 'age': 23}
print '%(name)s 's age is  %(age)i' % value

用两个元素之间有对应关系的list构造一个dict

运用zip可以非常简单的实现:首先zip生成的是一个tuple组成的list

names = ['jianpx', 'yue']
ages = [23, 40]
m = dict(zip(names,ages))

3.  交换两个值:

a,b = b,a

join

#以前是这样写的
fruits = ['apple', 'banana']
result = ''
for f in fruits:
    result += f

#现在可以这样:
fruits = ['apple', 'banana']
result = ''.join(fruits)


去掉list中的重复元素

old_list = [1,1,1,3,4]
new_list = list(set(old_list))


用with关键字读文件

from __future__ import with_statement
with open('filename','r') as f:
    for line in f:
        print line

输出数组的index和值

l = [1,3, 4]
for index, value in enumerate(l):
    print '%d, %d' % (index, value)

分隔一个字符串,去里面的元素,但是空白字符串不要:

names = 'jianpx, yy, mm, , kk'
result = [name for name in names.split(',') if name.strip()]

模拟c语言中的  a?b:c

return_value = True if a == 1 else False

用Decorator抽离公用代码或者解耦

例如要对一个函数做cache,对一个操作限制权限,如果需求随时可能变化,就是说有可能不需要做cache或者不需要做权限的时候,你如果把实现放到这些函数体里面,那么这时你必须把这些代码删除,而且要很小心。但是如果你用Decorator去做的话, 只要删除函数头顶上的@那一行就可以了。Django经常用这种方法做权限控制。

熟悉decorator的应该都很容易理解。



s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值