Python中使用 词典+可变参数 简化 初始化+配置 工作

在Python中,是支持可变长参数,甚至词典参数的,具体见 《Python中函数的参数传递与可变长参数》

而使用词典参数的方式,可以让我们节省很多不必要的初始化工作。

以初始化MySQL的conn为例:

Before:
# App Config
DB_HOST = "localhost"
DB_PORT = 3306
DB_NAME = "db"
DB_USER = "coder4"
DB_PASS = "password"

# Init conn
sel[......]

继续阅读

Python中使用selenium抓取Javascript动态页面

selenium是一套用于测试WebUI的自动化测试框架,它通过调用Chrome、Firefox来完成动态页面(含Javascript)的加载,因此也可以用来完成动态网页抓取。

1、下载selenium
wget http://selenium-release.storage.googleapis.com/2.44/selenium-server-standalone-2.44.0.jar
2、启动selenium-standalone
java -jar ./selenium-se[......]

继续阅读

论如在C++中何用正确的姿势边迭代、边删除reverse_iterator

在C++的容器中,我们可以边迭代边删除,如下:
std::list<int>::iterator itr = list.begin();
while(itr != list.end();) {
if(condition)
itr = list.erase(itr);
else ++itr;
}
但是,有时候,我们希望使用reverse_iterator也做这个工作:边迭代、边删除:

这个有有点麻烦了,首先要都用rbegin、rend。。其次[......]

继续阅读

Python抓取框架Scrapy快速入门教程

Scrapy是一个非常好的抓取框架,它不仅提供了一些开箱可用的基础组建,还能够根据自己的需求,进行强大的自定义。本文对基本用法和常见问题做一个记录。

1、安装

Scrapy虽然是python的模块,但是依赖包比较多,所以我推荐使用apt安装:
sudo apt-get install python-scrapy
编译狂人 或者 处女座 可以从Pypi上下载自行编译安装。友情提示下:pip或者ezsetup上的自动依赖是不全的,需要自己再补其他包。

本文所用的版本是当前最新版[......]

继续阅读

Python中函数的参数传递与可变长参数

转载自:Python中函数的参数传递与可变长参数

1.Python中也有像C++一样的默认缺省函数
def foo(text,num=0):
print text,num

foo("asd") #asd 0
foo("def",100) #def 100
定义有默认参数的函数时,这些默认值参数位置必须都在非默认值参数后面。

调用时提供默认值参数值时,使用提供的值,否则使用默认值。

2.Python可以根据参数名传参数
def foo(ip,port)[......]

继续阅读