<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CsharpGame的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CsharpGame</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CsharpGame]]></copyright><item><title><![CDATA[Python装饰器学习]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24877861</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24877861</guid><author>CsharpGame</author><pubDate>Fri, 02 May 2014 15:56:16 +0800</pubDate><description><![CDATA[这是在Python学习小组上介绍的内容，现学现卖、多练习是好的学习方式。



第一步：最简单的函数，准备附加额外功能







1

2

3

4

5

6

7

8




#
 -*- coding:gbk -*-

'''示例1:
 最简单的函数,表示调用了两次'''

 

def myfunc():]]></description><category></category></item><item><title><![CDATA[Python装饰器与面向切面编程]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24877759</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24877759</guid><author>CsharpGame</author><pubDate>Fri, 02 May 2014 15:51:19 +0800</pubDate><description><![CDATA[今天来讨论一下装饰器。装饰器是一个很著名的设计模式，经常被用于有切面需求的场景，较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计，有了装饰器，我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲，装饰器的作用就是为已经存在的对象添加额外的功能。

1. 装饰器入门

1.1. 需求是怎么来的？

装饰器的定义很是抽象，我们来看一个小例子。]]></description><category></category></item><item><title><![CDATA[Python装饰器学习]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24877573</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24877573</guid><author>CsharpGame</author><pubDate>Fri, 02 May 2014 15:47:24 +0800</pubDate><description><![CDATA[在《Core Python Programming 2nd》中学习到了装饰器，这对我来说是个完全陌生的语法，第一遍愣是没看懂，很有必要记一下。

 

第一眼看到这个词Decorator，我联想到了DP中的Decorator模式，后来才知道完全不是这么一回事。（再次鄙视一下国内浮躁的博客，我google了一下，几乎千篇一律都是什么锁同步装饰器、超时装饰器，我对原作者表达敬仰，可是大家都是转]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[12]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24145169</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24145169</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:14:08 +0800</pubDate><description><![CDATA[贪婪 vs 不贪婪

当重复一个正则表达式时，如用 a*，操作结果是尽可能多地匹配模式。当你试着匹配一对对称的定界符，如 HTML
 标志中的尖括号时这个事实经常困扰你。匹配单个 HTML 标志的模式不能正常工作，因为 .* 的本质是“贪婪”的

#!python

>>> s = 'Title'

>>> len(s)

32

>>> print re.match(']]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[11]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24145115</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24145115</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:13:21 +0800</pubDate><description><![CDATA[在下面的例子里，替换函数将十进制翻译成十六进制：

#!python

>>> def hexrepl(
 match ):

 "Return
 the hex string for a decimal number"

 value = int(
 match.group() )

 return hex(value)



>>> p = re.compil]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[10]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24145055</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24145055</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:12:39 +0800</pubDate><description><![CDATA[搜索和替换

其他常见的用途就是找到所有模式匹配的字符串并用不同的字符串来替换它们。sub() 方法提供一个替换值，可以是字符串或一个函数，和一个要被处理的字符串。

sub(replacement,
 string[, count = 0])

返回的字符串是在字符串中用 RE 最左边不重复的匹配来替换。如果模式没有发现，字符将被没有改变地返回。


可选参数 count 是]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[9]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24145015</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24145015</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:11:43 +0800</pubDate><description><![CDATA[将字符串分片

`RegexObject` 的 split() 方法在 RE 匹配的地方将字符串分片，将返回列表。它同字符串的 split() 方法相似但提供更多的定界符；split()只支持空白符和固定字符串。就象你预料的那样，也有一个模块级的 re.split() 函数。

split(string
 [, maxsplit = 0])

通过正则表达式将字符串分片。如果捕获括号]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[8]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24144951</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24144951</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:10:52 +0800</pubDate><description><![CDATA[前向界定符

另一个零宽界定符（zero-width assertion）是前向界定符。前向界定符包括前向肯定界定符和後向肯定界定符，所下所示：

(?=...)

前向肯定界定符。如果所含正则表达式，以 ... 表示，在当前位置成功匹配时成功，否则失败。但一旦所含表达式已经尝试，匹配引擎根本没有提高；模式的剩馀部分还要尝试界定符的右边。

(?!...)

前向否定界定符。与]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[7]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24144913</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24144913</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:10:02 +0800</pubDate><description><![CDATA[无捕获组和命名组

精心设计的 REs 也许会用很多组，既可以捕获感兴趣的子串，又可以分组和结构化 RE 本身。在复杂的 REs 里，追踪组号变得困难。有两个功能可以对这个问题有所帮助。它们也都使用正则表达式扩展的通用语法，因此我们来看看第一个。


Perl 5 对标准正则表达式增加了几个附加功能，Python 的
 re 模块也支持其中的大部分。选择一个新的单按键元字符或一个以 "]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[6]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24144835</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24144835</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:08:56 +0800</pubDate><description><![CDATA[分组

你经常需要得到比 RE 是否匹配还要多的信息。正则表达式常常用来分析字符串，编写一个 RE 匹配感兴趣的部分并将其分成几个小组。举个例子，一个
 RFC-822 的头部用 ":" 隔成一个头部名和一个值，这就可以通过编写一个正则表达式匹配整个头部，用一组匹配头部名，另一组匹配头部值的方式来处理。


组是通过 "(" 和 ")" 元字符来标识的。 "(" 和 ")" 有很多在数]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[5]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24144777</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24144777</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:08:16 +0800</pubDate><description><![CDATA[更多的元字符

还有一些我们还没展示的元字符，其中的大部分将在本节展示。


剩下来要讨论的一部分元字符是零宽界定符（zero-width assertions）。它们并不会使引擎在处理字符串时更快;相反，它们根本就没有对应任何字符，只是简单的成功或失败。举个例子， "b 是一个在单词边界定位当前位置的界定符（assertions），这个位置根本就不会被 "b 改变。这意味着零宽界定符（]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[4]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24144719</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24144719</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:07:31 +0800</pubDate><description><![CDATA[#!python

>>> iterator = p.finditer('12
 drummers drumming, 11  10 ')

>>> iterator

callable-iterator
 object at 0x401833ac>

>>> for match in iterator:

 print match.span()



(0, 2)]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[3]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24144657</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24144657</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:06:40 +0800</pubDate><description><![CDATA[现在，你可以试着用 RE 的 [a-z]+ 去匹配不同的字符串。一个空字符串将根本不能匹配，因为 + 的意思是 “一个或更多的重复次数”。在这种情况下 match() 将返回 None，因为它使解释器没有输出。你可以明确地打印出 match() 的结果来弄清这一点。

#!python

>>> p.match("")

>>> print p.match("")

None
]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[2]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24144311</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24144311</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 23:02:51 +0800</pubDate><description><![CDATA[使用正则表达式
现在我们已经看了一些简单的正则表达式，那么我们实际在 Python 中是如何使用它们的呢？ re 模块提供了一个正则表达式引擎的接口，可以让你将 REs 编译成对象并用它们来进行匹配。
编译正则表达式
正则表达式被编译成 `RegexObject` 实例，可以为不同的操作提供方法，如模式匹配搜索或字符串替换。
#!python

>>> import re

>>>]]></description><category></category></item><item><title><![CDATA[比较详细Python正则表达式操作指南(re使用)[1]]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24143981</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24143981</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 22:57:58 +0800</pubDate><description><![CDATA[Python 自1.5版本起增加了re 模块，它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式。Emacs 风格模式可读性稍差些，而且功能也不强，因此编写新代码时尽量不要再使用 regex 模块，当然偶尔你还是可能在老代码里发现其踪影。

 

就其本质而言，正则表达式（或 RE）是一种小型的、高度专业化的编程语言，]]></description><category></category></item><item><title><![CDATA[Python 代码调试技巧使用 PyDev 进行调试]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/24090489</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/24090489</guid><author>CsharpGame</author><pubDate>Sat, 19 Apr 2014 09:30:21 +0800</pubDate><description><![CDATA[使用 pdb 进行调试

pdb 是 python 自带的一个包，为 python 程序提供了一种交互的源代码调试功能，主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令，详情见表 1。

表 1. pdb 常用命令




命令

解释





break 或 b 设置断点

设置断]]></description><category></category></item><item><title><![CDATA[MongoDB忘记密码、批量插入等命令]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/23623429</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/23623429</guid><author>CsharpGame</author><pubDate>Sun, 13 Apr 2014 22:14:55 +0800</pubDate><description><![CDATA[下午刚设置的密码，当时忘记保存，晚上去吃了个晚饭回来就忘记了。研究了一会发现也不难，不过网上没有直接搜到就记录一下,按照以下步骤操作即可

操作步骤：


复制代码代码如下:


vim /etc/mongodb.conf          # 修改 mongodb 配置，将 auth = true 注释掉，或者改成 false
service mongodb restart  ]]></description><category></category></item><item><title><![CDATA[mongo的常用操作]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/23621305</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/23621305</guid><author>CsharpGame</author><pubDate>Sun, 13 Apr 2014 21:41:16 +0800</pubDate><description><![CDATA[查询 name = "bruce" 的数据
db.users.find({ name : "bruce" });

条件操作符
$gt : >
$lt : 
$gte: >=
$lte: 
$ne : !=、
$in : in
$nin: not in
$all: all
$not: 反匹配(1.3.3及以上版本)

查询 name = 18 的数据
db.users]]></description><category></category></item><item><title><![CDATA[mongodb如何判断一次操作是否成功]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/23621065</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/23621065</guid><author>CsharpGame</author><pubDate>Sun, 13 Apr 2014 21:38:01 +0800</pubDate><description><![CDATA[MongoDB核心开发工程师 Kristina Chodorow（@kchodorow） 最近在她的博客上表示，她会发表一系列关于MongoDB Replica Sets相关的文章，向大家详细的进行一次 Replica Sets的知识培训。其系列文章内容包括下面一些章节：



Elections（选举）


Creating a set（创建一个replica sets）

]]></description><category></category></item><item><title><![CDATA[python连接mongodb]]></title><link>https://blog.youkuaiyun.com/CsharpGame/article/details/23620827</link><guid>https://blog.youkuaiyun.com/CsharpGame/article/details/23620827</guid><author>CsharpGame</author><pubDate>Sun, 13 Apr 2014 21:34:51 +0800</pubDate><description><![CDATA[一、相关代码
数据库配置类 MongoDBConn.py



复制代码代码如下:


#encoding=utf-8
'''

Mongo Conn连接类
'''

import pymongo

class DBConn:
    conn = None
    servers = "mongodb://localhost:27017"

    def]]></description><category></category></item></channel></rss>