聚沙成塔--爬虫系列(二)(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,这点大家一定要切记!切记

聚沙成塔--爬虫系列(二)(python3基础语法)_第1张图片

什么是不可变数据类型

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

聚沙成塔--爬虫系列(二)(python3基础语法)_第2张图片

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

聚沙成塔--爬虫系列(二)(python3基础语法)_第3张图片

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

聚沙成塔--爬虫系列(二)(python3基础语法)_第4张图片

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

可变数据类型

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

聚沙成塔--爬虫系列(二)(python3基础语法)_第5张图片

字符串切片

字符串切片是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中其它高级的用法我们在写爬虫中遇到了在回过头了学习。


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

你可能感兴趣的:(聚沙成塔--爬虫系列(二)(python3基础语法))