聚沙成塔--爬虫系列(二)(python3基础语法)

版权声明:本文为作者原创文章,可以随意转载,但必须在明确位置表明出处!!!

在开始爬虫之前我们至少还需要知道python的基础语法和基本数据类型、数据结构。

可变数据类型(mutable)和不可变数据类型(immutable)

在python中数据类型分为可变数据类型和不可变数据类型。可变数据类型指的是对象的内容是可变的,不可变数据类型指的是对象的内容是不可变的。可变和不可变数据类型有以下几种

  • 不可变数据类型:int(整形类型), string(字符串类型), float(浮点数类型),number(数值类型), tuple(元组类型)
  • 可变数据类型: list(列表类型),dict(字典类型)。list列表数据类型在内存中是一种线性的存储结构,你可以把它想象成一个一维数组,每个索引在内存中的存储结构是连续的。dict字典类型是一种映射关系的数据类型,它是以key,value的存储结构在内存中存储的,对于查找数据来说,dict的效率是要远远大于list的。所以如果我们要对大量数据进行查找,那么用dict数据类型存储记录是种不错的选择,python意图把全世界的对象的变成字典结构。

不可变数据类型需要注意的地方

不可变数据类型特别需要主要的是数值类型,python3中把-5-256作为常用的数值,如果变量指向在这个区间的相同值,那么他们的地址是不变的,这个时候在你写逻辑判断的时候你可以使用a == b或者a is b这两种方式都是可以的, 但是如果超出这个范围, 那么逻辑判断a == b返回True,a is b返回False,这点大家一定要切记!切记

什么是不可变数据类型

不可变数据类型指的是其指向该对象的值是不可变的,对于字符串是不可变数据类型,str 赋值为“hello world”然后查看其id(str)值,然后在给str赋值为“hello”, 再使用id(str)查看启id值,这个时候可以看到前后的id值并不是一样的,那么就可以证明后一个str赋值是重新创建了一个对象,如下图所示:


对与不可变数据类型,元组数据结构类型更容以看出来,因为我们只要对元组的值进行修改python解释器就会抛出异常错误,如下图所示:


虽然元组数据结构类型是不可变数据类型,但是它可以包涵可变数据结构类型如list、dict如下图所示:


list是可变数据结构类型,所以这里对list的第一个元素也就是下标索引0的值重新赋值为100是可行的。

可变数据类型

列表数据类型(list)、字典数据类型(dict)是可变数据类型,与不可变数据类型相反,可变数据类型是指它所指向的对象的值是可变的,需要值得主要的一点是字段数据类型(dict),字典数据类型是key,value键值对映射结构类型的,它的key是不能对应多个值的,如果对同一个key赋值,结果就是被最后一次的值覆盖,如下图所示:

字符串切片

字符串切片是python处理字符串不得不了解的知识点,我认为python对字符串分割的处理是所有语言中做得最牛X的。

# 字符串切片

str = 'abcdefghijklmn'
print ('str = %s' % str)
#保留从第三个位置开始的所有字符串
print('保留从第三个位置开始的所有字符串:%s' % str[3:])

#从第三个位置开始往后切三个字符
print('从第三个位置开始往后切三个字符:%s' % str[3:6])

#去掉最后三个字符
print('去掉最后三个字符:%s' % str[:-3])

#保留最后三个字符
print('保留最后三个字符:%s' % str[-3:])

#逆序
print('逆序:%s' % str[::-1])

#隔一个字符逆序
print('隔一个字符逆序:%s' % str[::-2])

#取出每隔三个字符
print('取出每隔三个字符:%s' % str[::3])

#从第二个字符每隔三个字符取一个字符
print('从第二个字符每隔三个字符取一个字符:%s' % str[2::3])

#复制字符串str
str1 = str[:]
print('复制字符串str:%s' % str1)

执行结果

str = abcdefghijklmn
保留从第三个位置开始的所有字符串:defghijklmn
从第三个位置开始往后切三个字符:def
去掉最后三个字符:abcdefghijk
保留最后三个字符:lmn
逆序:nmlkjihgfedcba
隔一个字符逆序:nljhfdb
取出每隔三个字符:adgjm
从第二个字符每隔三个字符取一个字符:cfil
复制字符串str:abcdefghijklmn

条件和循环语句

python有最严格的语法缩进语法,表达式的主题部分和表达式需要有4个空格的缩进,在我用sublime编辑器或者其它编辑器的时候需要设置tab键为4个空格。

  • if条件语句
if expression:
    expr_true_suite
elif expression:
    expr_true_suite
else:
    expr_false_suite

条件判断语句,if expression(如果条件成立)那么执行 expr_true_suite, 如果不成立然后去判断elif expression:这个表达式的逻辑是否成立,如果成立则执行expr_true_suite,如果条件都不满足,则执行最后的else逻辑。条件表达示中可以有多个elif语句,也可以一个都没有,看应用程序中具体的逻辑判断条件。

  • while循环语句
while expression:
    suite_to_repeat

while 循环的 suite_to_repeat 子句会一直循环执行, 直到 expression 值为布尔假。

count = 0
while (count < 9):
    print ('the index is:%d' % count)
    count += 1

for循环语句

for item in [0,1,2,3]:
    print(item)
结果
0
1
2
3

for循环是传统的计数循环,直到循环到最后一个元素为止

函数

函数是对程序逻辑进行结构化或过程化的一种编程方法。能将整块代码巧妙地隔离成易于管理的小块,把重复代码放到函数中而不是进行大量的拷贝--这样既能节省空间,也有助于保持一致性,因为你只需改变单个的拷贝而无须去寻找再修改大量复制代码的拷贝。
函数的定义:

def func1():
    do something...

def func(param1, param2):
    do something...
    return xxx

函数可以有参数,也可有没有参数,函数可以有返回值,也可以没有返回值,具体情况具体应用。基础的语法部分就到这里结束,下一篇将介绍正则表达式的使用,学会正则表达式的使用就能爬一些简单的网址了,python中其它高级的用法我们在写爬虫中遇到了在回过头了学习。


欢迎关注我的公众号:爱做饭的老谢,老谢一直在努力...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 一、python 变量和数据类型 1.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序...
    绩重KF阅读 1,511评论 0 1
  • 最近在慕课网学习廖雪峰老师的Python进阶课程,做笔记总结一下重点。 基本变量及其类型 变量 在Python中,...
    victorsungo阅读 1,596评论 0 5
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,484评论 1 118
  • 文/Bruce.Liu1 1.运算符 本章节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。 例...
    BruceLiu1阅读 747评论 0 6
  • 本教程基于Python 3,参考 A Byte of Python v1.92(for Python 3.0) 以...
    yuhuan121阅读 2,935评论 1 6