Python程序语言快速上手教程


Posted in Python onJuly 18, 2012

本来打算从网上找一篇入门教程,但因为Python很少是程序员的第一次接触程序所学的语言,所以网上现有的教程多不是很基础,还是决定自己写下这些。

如果没有程序基础的话,可能会觉得本文涵盖的内容有点多。对照大学里面常教的C语言的教学速度,本文大约有四五个课时的内容;对照网上程序类的视频 教程,大致相当于两三个小时的内容;对于翻一本程序书籍,大约相当于翻一个小时书。也因此,如果有深入学习的打算的话,为了效率还是推荐看书。

如果暂时不能理解本文中的一些内容也没关系,因为都是一些经常会用到的基础知识,在实际编写代码的过程中会一直遇到。后面会大约有两三篇关于实用代码编写的文章,可以选择那时再对这些知识加深印象。

但如果是觉得技术对于SEO没有必要而对本文没有兴趣的话,试问打算将SEO作为自己多久的职业?如果打算真正将它做好的话,在至少有上万小时需要用去的精力里面,从里面抽几十几百小时去学习些技术应该是合情合理的。

若因文章有什么没表述清楚而导致无法理解,请务必帮忙提出。第一次写程序类的较完整的教程,难免有疏漏之处。

为什么学习Python

如果决定学习一些技术来辅助SEO的话,对于程序语言至少在我看来Python可以算是首选。

其一、Python入门相对简单

如果谁在大学课程里面接触过C语言但对程序了解不多的话,或许会觉得程序就是像C那么麻烦,其实不然,学了具有美感的Python代码以后就会知道C代码又臭又长。就算完全没接触过程序也没关系,Python本身就适合作为程序的入门选择。

我虽然很早就有写程序,但那时是兴趣使然,从未深入过,正式接触程序是接触SEO以后的事情,大约学了几个小时以后就能写些简单的采集程序,到现在只要能想到需求就很少有技术无法实现的。所以没什么有基础没基础的问题在,无论什么的基础都是需要自己打下的。

其二、Python代码非常灵活

来看一段非常常用的代码示例,如果没有程序基础的话会看不懂这些代码,但暂时没关系,看代码行数也能对比出代码简洁性。

PHP:

<?php 
$list_1 = array(1,2); 
$list_2 = array(); 
foreach ($list_1 as $current) { 
array_push($list_2, $current+1); 
} 
print_r($list_2); 
?>

Python:
list_1 = [1,2] 
list_2 = [current+1 for current in list_1] 
print list_2

Python代码的第2行叫做“列表推导”,它提供了不少像这样便利的语言特性可以使得代码非常简洁。

尽管语法灵活并非总是好事,灵活的代码写法意味着每个人写出来的代码往往风格迥异,会把团队成员的水平差距拉大而不利于团队开发。但对于小型SEO应用需求一般都是个人开发,此时代码的书写效率比起团队合作性而言更重要。

其三、Python使用广泛

Python在程序语言里面受欢迎的程度大约是5-10位左右。排在其之前的有C#, Java, PHP等,但很多时候不是因为它们更强大,而是因为前面提到的原因,它们的代码显得相对不是很灵活从而适合团队开发,所以才更受欢迎。

一般来说,多数提供API的网络服务都会提供Python接口(如百度网盟、Amazon云服务等),而另一些比Python某些方面更强的语言则 没有这么广泛的支持度,比如代码更加灵活一些的GO语言。(多数Web服务的API接口有:C#、PHP、Java、Python、Ruby、Perl, 所以一般情况下选择其中至少一种语言学习)

Python的模块也非常多,有许多既有模块意味着可以少做很多事情。比如下载一个网页,在很多语言里面都需要5-10行代码,而Python仅需两行:

import urllib2 
print urllib2.urlopen('http://g.cn/').read()

另外有意思的是以前Google限制过自己内部使用Python语言进行开发。原因有二:一、因为Python编写效率高,之前被其过多的运用;二、Python语言的执行效率较慢。而对于SEO,却正是最需要注重编写效率而一般无需在意执行效率的。

至此废话了不少,但兴趣往往是学习的最好动力,希望没有白白废话。

安装环境与配置

Python程序和普通程序略有不一样,通常情况下没有可以直接在Windows下面双击运行的exe文件,虽然并非无法编译成exe但相对较麻烦,实际运用中很少会去如此操作。

Python程序就是一段文字代码,保存到后缀名为.py的文件里面。在电脑安装了Python的运行环境以后,方可以运行py文件。(其实很多程序都依赖于运行环境,最常见的是.net Framework,只不过这个在Windows上预装了,一般感觉不到罢了)

对于Windows系统需要安装运行环境,Linux系统则一般自带Python无需配置。

Python运行环境的下载链接为:http://python.org/getit/

在这个页面上,通常是在第一个下载链接,寻找并下载:Python 2.7.x Windows Installer (Windows binary — does not include source)

需要注意的是下载的最好是2.7.x版本(x代表任意数值,2.7这个大版本都是类似的),而Python 3以上的版本和先前版本区别较大,对于初学者不建议使用。

下载后安装,没什么需要特别注意的地方。一般安装在默认路径,即c:\python27\,不要将之放在目录层级很深的文件夹,不然运行的时候比较麻烦。

操作系统

前面已经提到,Python可以在Windows及Linux系统下运行,它还支持更多系统,如Mac等,甚至也可以在越狱过的iPhone等设备上面编写并运行Python程序。

但因为Python的一个主要强大之处在于其模块的支持,有了模块就可以方便的做很多事情。而模块的配置在Windows等系统里面往往有些麻烦,Linux往往容易得多,所以过了入门阶段以后,推荐在Linux环境下进行开发。

Linux环境的搭建有三种选择:

1.本机安装Linux系统。适合在Linux下长期工作的人,需要对Linux的基础知识有一定的了解。主要缺点是总有些Windows里面才能运行的程序,偶尔需要切换系统。我主要是在这样的环境下工作。

2.在Windows里面安装VMware等虚拟机,然后在虚拟机里面安装使用Linux。适合初学者,但因为虚拟机的关系,除非计算机配置很好, 不然两边系统的运行效率都会比较低下。且虚拟机不利于塑造学习Linux的气氛,因为用虚拟机的时候碰到问题,多数人会倾向用Windows解决而非用 Linux,那么就较难熟悉它。个人不怎么推荐这种选择。

3.买一台Linux的VPS,使用SSH远程操作。主要优点是在工作及家里都可以很方便的连上服务器,不用每天把程序、数据等随着U盘之类的带来 带去;也可以在不影响Windows使用的情况下使用Linux。但缺点同样明显,没有图形界面对入门者不友好;因为网络延时的关系,写代码的效率经常受 影响等等。对于初学者,个人比较推荐这个解决方案。

至于VPS的购买,推荐Linode或PhotonVPS等,大约每月50-150RMB能买一个可以用来书写运行普通程序的VPS,也可以同时在上面放两三个小网站。

Linux有很多发行版可以选择来安装,如Ubuntu,Fedora等。

对于在本机上搭建Linux环境时,因为拥有图形界面,若是工作为主要目的,推荐安装Fedora。它和服务器最常用的CentOS系统同出Red Hat系,很多地方比较接近,熟悉它对于熟悉CentOS也有较大助益。

如果在本机安装,且有时会将Linux系统用作观看视频等娱乐之用的话,推荐Ubuntu,它在日常使用方面略胜Fedora一筹。

对于VPS上面搭建Linux,则推荐CentOS系统,因为它使用最广泛,所以各种软件对其的支持往往更好。

对应Linux环境解决方案1,一般使用U盘加载iso镜像进行安装;对于解决方案2,一般直接由虚拟机软件加载iso镜像安装;对于解决方案3,一般VPS都可在其后台直接选择操作系统无需自己安装,比较方便。

编辑器

书写代码前面首先需要有一个合适的编辑器。尽管Windows自带的记事本也不是不可以使用,但编写程序时会非常不顺手。

对于Windows系统的编辑器,较简单的我比较推荐Notepad++,当然也可以选择更流行的UltraEdit。

也可以使用IDE,这是用来开发软件项目的集成环境的统称,它在开发大型项目时具有较大优势,但在处理小型需求时可能显得略有不灵活。IDE里面比较好的有Eclipse,加上PyDev插件即可开发Python程序,它在Windows和Linux里面皆可以使用。

如果平常需要书写的代码量很大,或是对自己的学习能力较有自信的话,对于Linux推荐Vim,Windows则推荐gVim(Vim的图形界面)。它和普通编辑器书写代码有极大的不同之处,往往需要几天的学习时间与几个月的熟练时间,但书写代码的效率一般可以快不少。

开始编写程序

Hello World!

“Hello World”最早的出处是计算机领域的最经典书籍之一——《The C Programming Language》,后来被广泛沿用。”Hello World”程序的目的只是在屏幕上输出一个”Hello World”,尽管很简单,当它作为每个人第一个所写的程序时还是有着较大的意义。

打开编辑器,输入一行:(友情提示:复制粘贴不利记忆)

print "Hello World!"

完毕。保存文件到c:\hello.py(路径随意)。

按Win + R快捷键,打开“运行”,输入CMD,回车,打开命令行提示符。(Linux图形界面的话是Ctrl+Alt+T来打开终端)

输入:

(Windows)
c:\python27\python.exe c:\hello.py

(Linux)
python 路径/hello.py

可以看到程序运行并显示了一行“Hello World!”。至此,第一个程序完成了。

Python程序语言快速上手教程

变量与赋值
s = 'Hello World!' 
print s

程序输出:
Hello World!

上述代码,s称为变量;第一行所做的操作叫做赋值。

再来个例子加深印象:

a = 1 
b = 2 
print a + b

程序输出:
3

函数

def hello(name): 
s = 'Hello ' + name + '!' 
return s 
print hello('world') 
print hello('semwatch')

程序输出:
Hello world!
Hello semwatch!

函数是用来包装一系列的行为的,通过传递一个或多个参数进入函数(def hello(name)),然后函数再返回一个计算之后的数值(return s)。

于是print hello(‘world')就相当于输出hello函数运行之后的运算结果,即输出Hello world!

可以再看这个例子来加深理解:

def add_num(a, b) 
return a + b 
print add_num(1, 2) 
print add_num(2, 3)

程序输出:
3
5

循环及判断

后面提到的for循环、while循环及if判断,这是所有程序语言里面的基础,务必完全掌握。

(Python里面没有其他语言常有的do while循环,也没switch case判断)

for循环:

PHP范例:

for($i=0;$i<10;$i++) { 
echo "$i\n"; 
} 
?>

之所以这里举一个PHP的例子,是因为多数程序语言的for循环都和该例是类似的语法,先以这种形式举例。

应该较容易理解,给变量i赋值0($i=0),每次循环的时候+1($i++),在i小于10的时候就一直循环($i<10),所以循环10次。

echo语句负责把每次循环时候的数字输出,此例中会依次输出0-9这些数字,不过没必要研究echo语法,只需理解for循环的概念就行了。

Python的for循环语法比较另类,但也很简洁:

for i in range(10): 
print i

这两句语句会和前面一样,依次输出0-9这些数字,且print语句会自动每次输出后换行。

while循环:

i = 0 
while i < 10: 
i = i + 1 
print i

代码的意思是,先给i赋值0,然后当i小于10的时候,不断执行循环体里面的内容。此处即为将i的值加1,并输出i。

运行后输出的结果依次是0-9几个数字。

if判断:

i = 1 
if i < 2: 
print "i<2" 
else: 
print "i>=2"

程序输出:
i<2

程序先给i赋值1,然后判断i是否小于2,如果小于2则输出i<2,不然输出i>=2。

另外等于和不等于的判断符号是如下的:

i = 1 
if i == 1: 
print "i=1" 
elif i != 1: 
print "i!=1"

等于是==符号,这点容易混淆。使用=符号在多数语言里面会产生一些问题,而在Python里面会直接视为代码错误。而不等于符号是!=,也可以使 用<>,但<>号在如今的程序语言里面使用越来越少,也可能在Python的日后版本里被弃用,所以一般推荐使用!=。

上面代码中第三行elif是else if的简写。意为如果i==1没有满足的话,就继续判断i!=1是否满足。

列表与字典

多数语言都有“数组”,它是一个存着多个数值的变量。而Python没有,类似的是“列表”和“字典”等。

如果有PHP基础的话,看下以下对比就可以很快理解它们:

列表:

PHP

$l = array(1,2,3); 
?>

Python

l = [1,2,3]

字典:

PHP

$d = array( 
'a' => 1, 
'b' => 2, 
'c' => 3, 
); 
?>

Python
d = { 
'a': 1, 
'b': 2, 
'c': 3, 
}

如果没有其他语言基础的话,通过实际代码来理解列表及字典或许更合适。

列表:

l = [1,2,3] 
for current in l: 
print current

运行的结果会依次输出1-3这些数字。(Python里面没有PHP的foreach语法,全都使用for完成)

字典:

d = { 
'a': 1, 
'b': 2, 
'c': 3, 
} 
for key in d: 
print key 
print d[key]

运行的结果会输出a1b2c3,分六行显示。

解释下字典,字典的结构是这样的:

dict = {key: value, key2: value2, …}

for循环可以在每次循环的时候,把相应的key赋值给变量,如果要访问对应的value,就需要使用类似dict[key]这样的,即寻找dict里面对应key的value。

类似的,列表也有类似操作,如:

l = [1,2,3] 
print l[1]

运行输出:
2

它的意思是输出列表l的第1项。需要注意的是,对于绝大多数程序语言,都是从第0项开始算的。即这里l[0]是1,l[1]是2,l[2]是3。

字符串及切片

字符串如其名,是一串字符。如print “Hello World!”就是输出字符串Hello World!。Python里面的字符串比较特殊,它和列表一样属于序列类型,很多使用方法上和列表一样。

s = "abc" 
print s[1]

运行结果会输出b。

根据这样的特性,可以衍生出一些简洁的代码运用。比如要输出”Hello World!”这个字符串的前5个字符的话,多数语言会和PHP类似是这样做的:

$s = "Hello World!"; 
echo substr($s,0,5); 
?>

而Python简单得多:

s = "Hello World!" 
print s[:5]

两段代码都会输出Hello。

其中的s[:5]使用了Python的“切片”特性,完整的写法应该是s[0:5],但0可以省略,这里代表着输出这个序列索引号从0开始到5之前的内容。

当然列表也是可以使用切片的,如:

l = [1,2,3] 
print l[1:]

运行后输出[2,3]。

意味着从索引号1开始,输出到列表的最后。

知识点汇总

将前面所有的内容加上一些新的知识点,融合成一段代码。认真思考每一个输出的结果是如何出来的,就能更好的理解这些。因为知识点比较多,可以暂时不求甚解,但这些都是任何程序语言里面都会有的基础内容,最终是必须掌握的。

代码中,#号意味着注释的开始,这些内容不会被运行。

另外代码的第一行声明了代码编码为utf-8。因为注释中出现了非英文字符,所以就需要指定编码,不然程序会报错。

# -*- coding:utf-8 -*- 
str_1 = 'Hello' 
str_2 = 'World!' #以下语句都会输出Hello World! 
#print语句中的逗号意味着不换行,而是用空格间隔它们 
print str_1, str_2 
#以下和上面一句是同样的效果 
print str_1, 
print str_2 
#同样可以用字符串连接符 
print str_1 + ' ' + str_2 
#也可以用格式化操作符,它比前者更常用 
#会将后面的变量依次替换到前面的%x上面 
#%s指定替换为字符串,若替换整数则为%d,小数%f 
print '%s %s' % (str_1, str_2) 
#会输出00 11 22 
for i in range(3): 
print '%d%d' % (i, i), 
print '' #输出一个空的字符串用于换行 
#会输出11 22 33 
for i in range(1, 4): 
print '%d%d' % (i, i), 
print '' 
#会输出00 22 44 
for i in range(0, 5, 2): 
print '%d%d' % (i, i), 
print '' 
#会输出0 1 0 1 0 
i = 0 
while i < 5: 
i += 1 #等同于i = i + 1 
if i % 2==0: #如果i除2的余数为0 
print 1, 
else: 
print 0, 
print '' 
#会输出c 
i = 3 
if i==1: 
print 'a' 
elif i==2: 
print 'b' 
elif i==3: 
print 'c' 
else: 
print 'error' 
#会输出1 2 3 3 4 4 5 5 6 
for i in range(10): 
i += 1 
print i, 
if i < 3: 
continue #如果i<3则中断该次循环,从循环体的头部重新运行 
elif i > 5: 
break #如果i>5则中断整个循环 
print i,

最后

虽然现在提及的是程序,但SEO要涉及的技术远不仅是程序。尽管很想从头开始提及所有应该学习的方面,无奈这是几本书都写不完的,单用几篇文章更无法穷尽。

在接下来的文章里面,将跳空一些知识点,如果读者没有相关基础,则需自行学习。之后将跳过的包括但不限于:

1. 基础Web知识,比如非ASCII字符集的URL需要编码等常识:http://www.w3school.com.cn/html/html_urlencode.asp

2. 浏览器开发人员工具的运用,可以选择Chrome的开发人员工具、或Firefox的Firebug插件等,个人推荐用Chrome。尤其需要先了解其抓 包功能,在采集数据的时候经常要用到。抓包功能在Chrome开发人员工具里面,对应的是”Network”选项卡。

3. 独立配置Python的pycurl模块。此处主要有两种选择,一种是在Windows系统安装Curl、再安装setuptools、最后安装模块,比 较麻烦也不推荐,且以后其他模块在Windows里面配置可能也是这么麻烦。另一种选择即是配置一个Linux环境,在CentOS及Fedora等系统 里面,执行:sudo yum install python-pycurl,在Ubuntu等系统里面,执行sudo apt-get install python-pycurl。之后将大量的使用到这个模块,所以务必配置好。Linux的入门命令可见:http://ooxx.me/common-ssh-commands.orz

4. 了解正则表达式。它是用来处理字符串的强大工具,可以在百度上寻找资料对它做初步的了解,至少要先知道.*?和[\s\S]*?这两个的含义,它们在采集数据的过程中是最常用的。这是一个很不错但难度较高的正则教程,可能不是很适合初学:http://manual.phpv.net/regular_expression.html

此外最好买一本Python书籍,虽然因为SEO没必要对程序涉及很深入,大多程序类书籍上的多数知识的重要性不高。比如每本书都会花大量篇幅去介 绍面向对象编程的思路与实现,但SEO的多数需求往往只有几百行代码,一般都不太会去涉及这些。不过,一开始的一些基础知识学习的过程中,容易疏漏或者遗 忘知识点,有一本书会好得多。

尚未找到比较适合SEO看的Python书籍。我自己手边有一本《Python核心编程》,应该说还可以吧。如果不确定买哪本的话,可以到这个论坛去找下pdf试看,它上面各类计算机书籍应该是相对最齐全的:http://club.topsage.com/forum-300-1.html

但不要只看pdf,一般学一门语言至少备一本纸质书籍,它应该是在自己不清楚或忘记了哪些知识点以后,可以随时拿来翻看的工具书。

文章作者:ZERO

本文来自semwatch 转载请注明出处链接及作者。

Python 相关文章推荐
Python标准库defaultdict模块使用示例
Apr 28 Python
python动态性强类型用法实例
May 09 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
python 实现对数据集的归一化的方法(0-1之间)
Jul 17 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
python函数的万能参数传参详解
Jul 26 Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 Python
python 图片验证码代码分享
Jul 04 #Python
Python查询Mysql时返回字典结构的代码
Jun 18 #Python
python 实现堆排序算法代码
Jun 05 #Python
python 实现归并排序算法
Jun 05 #Python
python 实现插入排序算法
Jun 05 #Python
python 算法 排序实现快速排序
Jun 05 #Python
python操作MySQL数据库的方法分享
May 29 #Python
You might like
10条PHP编程习惯助你找工作
2008/09/29 PHP
php简单提示框alert封装函数
2010/08/08 PHP
php页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
PHP生成条形图的方法
2014/12/10 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
正则表达式替换html元素属性的方法
2016/11/26 Javascript
JS常见算法详解
2017/02/28 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
Python日志模块logging简介
2015/04/13 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
python中有帮助函数吗
2020/06/19 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
python爬虫如何解决图片验证码
2021/02/14 Python
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
什么是lambda函数
2013/09/17 面试题
销售演讲稿范文
2014/01/08 职场文书
文明寝室标语
2014/06/13 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
办公经费申请报告
2015/05/15 职场文书
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js