`
dongbei
  • 浏览: 5736 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

分享个人学习Python的快速上手教程

阅读更多
但如果是觉得技术对于SEO没有必要而对本文没有兴趣的话,试问打算将SEO作为自己多久的职业?

如果打算真正将它做好的话,在至少有上万小时需要用去的精力里面,从里面抽几十几百小时去学习些技术应该是合情合理的。若因文章有什么没表述清楚而导致无法理解,请务必帮忙提出。

第一次写程序类的较完整的教程,难免有疏漏之处。本来打算从网上找一篇入门教程,但因为Python很少是程序员的第一次接触程序所学的语言,所以网上现有的教程多不是很基础,还是决定自己写下这些。如果没有程序基础的话,可能会觉得本文涵盖的内容有点多。

对照大学里面常教的C语言的教学速度,本文大约有四五个课时的内容;对照网上程序类的视频 教程,大致相当于两三个小时的内容;对于翻一本程序书籍,大约相当于翻一个小时书。也因此,如果有深入学习的打算的话,为了效率还是推荐看书。如果暂时不能理解本文中的一些内容也没关系,因为都是一些经常会用到的基础知识,在实际编写代码的过程中会一直遇到。

后面会大约有两三篇关于实用代码编写的文章,可以选择那时再对这些知识加深印象。



为什么学习Python

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

其一、Python入门相对简单

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

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

其二、Python代码非常灵活

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

PHP:

1
2
3
4
5
6
7
8 $list_1 = array(1,2);
$list_2 = array();
foreach ($list_1 as $current) {
    array_push($list_2, $current+1);
}
print_r($list_2);
?>

Python:

1
2
3 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仅需两行:

1
2 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”,尽管很简单,当它作为每个人第一个所写的程序时还是有着较大的意义。

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

1 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!”。至此,第一个程序完成了。



变量与赋值

1
2 s = 'Hello World!'
print s

程序输出:
Hello World!

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

再来个例子加深印象:

1
2
3 a = 1
b = 2
print a + b

程序输出:
3

函数

1
2
3
4
5 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!

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

1
2
3
4 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范例:

1
2
3
4
5 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循环语法比较另类,但也很简洁:

1
2 for i in range(10):
    print i

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

while循环:

1
2
3
4 i = 0
while i < 10:
    i = i + 1
    print i

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

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

if判断:

1
2
3
4
5 i = 1
if i < 2:
    print "i<2"
else:
    print "i>=2"

程序输出:
i<2

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

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

1
2
3
4
5 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

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

Python

1 l = [1,2,3]

字典:

PHP

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

Python

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

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

列表:

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

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

字典:

1
2
3
4
5
6
7
8 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。

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

1
2 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里面的字符串比较特殊,它和列表一样属于序列类型,很多使用方法上和列表一样。

1
2 s = "abc"
print s[1]

运行结果会输出b。

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

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

而Python简单得多:

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

两段代码都会输出Hello。

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

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

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

运行后输出[2,3]。

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

知识点汇总

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 1
str_1 = 'Hello'
str_2 = 'World!'

1

1
print str_1, str_2

1
print str_1,
print str_2

1
print str_1 + ' ' + str_2

1
1
1
print '%s %s' % (str_1, str_2)

1
for i in range(3):
    print '%d%d' % (i, i),
print ''    1

1
for i in range(1, 4):
    print '%d%d' % (i, i),
print ''

1
for i in range(0, 5, 2):
    print '%d%d' % (i, i),
print ''

1
i = 0
while i < 5:
    i += 1  1
    if i % 2==0:    1
        print 1,
    else:
        print 0,
print ''

1
i = 3
if i==1:
    print 'a'
elif i==2:
    print 'b'
elif i==3:
    print 'c'
else:
    print 'error'

1
for i in range(10):
    i += 1
    print i,
    if i < 3:
        continue    1
    elif i > 5:
        break   1
    print i,

最后

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

相关推荐

    Python-个人的Python学习笔记

    首先,从标题“Python-个人的Python学习笔记”我们可以推断,这是一份个人在学习Python过程中的记录,可能包括了学习心得、代码示例、项目实践等内容。这样的笔记往往更加注重实践和理解,而不是理论的枯燥讲解,...

    Python 3 极简教程_v0.03.pdf

    1. Python入门:教程强调Python语言的易学性和实用性,鼓励入门者快速上手编写接口,体验编程乐趣。 2. 学习方法:作者建议学习者应该多遍阅读教程,不仅要了解理论,更要动手实践代码,并做笔记来加深理解。 3. ...

    python2.7个人实战版

    在学习Python的过程中,建议初学者可以针对一些简单的项目进行实践,比如自动备份MP3、制作个人网站或小游戏等。通过这些实践,不仅可以加深对Python语言的理解,还能逐渐掌握编程的基本概念和方法。 最后,Python...

    笔记分享1.0 Python概述1

    根据老师的分享,学习Python的时间因个人背景和学习目标而异。有编程基础的学员可能较快上手,而对于没有基础的新手,通常需要花费几周甚至几个月的时间来掌握基础概念和语法。持续实践和理解编程思维是学习的关键。...

    python3实用编程技巧进阶(1套课程)\第1章-在线编译工具WebIDE使用指南 Python课程 教程 进阶 0基础学习

    通过“1-2 在线编译工具WebIDE使用指南.mov”这个视频教程,你将得到直观的演示和步骤指导,帮助你快速上手。这个视频可能涵盖了如何设置工作区,配置环境变量,以及如何运行和测试Python脚本等关键点。 总的来说,...

    python 的学习网站和软件

    - **简介**:廖雪峰是一位知名的程序员和讲师,他的个人博客提供了丰富的 Python 教程和实战案例。 - **特点**: - **深入浅出**:讲解清晰,逻辑性强。 - **实战导向**:注重理论与实践相结合。 - **适用人群**:...

    rust如何快速上手文档

    对于想要快速上手 Rust 的开发者,以下是一些建议的学习资源: 1. **官方文档**:Rust 官方文档提供了详尽的教程和指南,是入门的最佳选择。 2. **书籍**: - 《The Rust Programming Language》:官方编写的 Rust...

    Python.rar

    2. PyCharm教程:PyCharm官方网站有详细的用户手册和视频教程,帮助你快速上手。 3. 在线课程:网站如Coursera、Udemy、edX等提供了Python和PyCharm的系统课程,适合初学者和进阶者。 4. 开源社区:Stack Overflow...

    Python-nflstatsNFL团队提供的工具包含播放器和游戏数据能准实时的获得状态

    同时,网上有许多教程和博客文章,可以帮助用户快速上手。 总的来说,Python-nflstats 是一个功能全面、实时性强的工具,对于关注NFL数据的开发者和分析师来说,它提供了一条高效且灵活的数据获取途径,为游戏开发...

    优秀的Python编程环境具备的特点共2页.pdf.zip

    11. **文档和学习资源**:提供丰富的在线文档、教程和社区支持,帮助用户快速上手和解决问题。 12. **跨平台兼容性**:能在Windows、macOS和Linux等不同操作系统上运行,适应各种开发场景。 在选择Python编程环境...

    Invent Your Own Computer Games with Python 2nd

    1. **实战导向**:本书的一大特点是强调实战,从一开始就向读者展示游戏的源代码,让读者能够快速上手并参与到实际的项目开发中。 2. **由浅入深**:从基础概念出发,逐步深入到高级主题,使读者能够在实践中逐步...

    Python爬虫+办公自动化+好玩DIY-视频课程资源网盘链接提取码下载 .txt

    - **实战导向**:课程注重理论与实践相结合,通过大量实例讲解,让学员能够快速上手。 - **系统全面**:内容覆盖Python基础至进阶知识,满足不同层次学习者的需要。 - **互动交流**:提供在线答疑平台,帮助解决学习...

    RASPBERRY_PI_COOKBOOK_FOR_PYTHON_PROGRAMMERS.pdf

    总的来说,《Raspberry Pi Cookbook for Python Programmers》是一本面向树莓派Python开发者的实用手册,通过一系列针对性强的教程和案例,旨在帮助读者快速上手树莓派开发,并充分挖掘树莓派与Python结合的无限潜力...

    后台快速开发框架源代码+详细教程100%好用.zip

    9. **详细教程**:教程可能涵盖从环境配置到项目部署的全过程,包括安装依赖、启动服务器、创建新模块、数据库操作、接口测试等步骤,帮助初学者快速上手。 10. **最佳实践**:教程中可能还会分享一些框架的使用...

    WingIDE 4.0

    6. **学习资源**:WingIDE 4.0 通常会附带丰富的文档和教程,帮助初学者快速上手,同时也为经验丰富的开发者提供进阶技巧和最佳实践。这些资源对于提升Python编程技能非常有帮助。 7. **兼容性**:作为一款成熟的...

    第二天学习内容打包,亲测有效

    而“学习记录”标签则暗示了这些内容可能是博主个人学习过程的记录,可能包括笔记、代码示例或其他有助于学习者理解和掌握知识的素材。 【压缩包子文件的文件名称列表】:Day02 “Day02”这个名字可能代表了这是...

    PyCharm是一款专为Python语言设计的集成开发环境(IDE),凭借其丰富的功能和用户友好的界面,得到了广大Python开

    3. **社区支持**:PyCharm 拥有庞大的用户群体和活跃的社区,开发者可以在社区中寻求帮助、分享经验,共同推动 Python 生态的发展。 ##### 缺点 1. **软件体积较大**:由于 PyCharm 的功能丰富,其安装包体积也...

    Python_在社交网络上通过用户名查找社交媒体账户.zip

    Python以其简洁明了的语法著称,这使得初学者能够快速上手。在进行社交媒体账户查找时,我们通常会用到requests库来发送HTTP请求,BeautifulSoup或lxml库来解析HTML或XML数据,以及可能用到selenium库来进行模拟...

Global site tag (gtag.js) - Google Analytics