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

在开始爬虫之前我们至少还需要知道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中其它高级的用法我们在写爬虫中遇到了在回过头了学习。


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

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

  1. Python3 基础语法

    Python3 基础语法 编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: ...

  2. Python3 基础语法(笔记2)

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 巩固Python,记录关键知识,便于温故知新! 目录 import 与 from...import import 与 f ...

  3. Python3 基础语法(笔记1)

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 巩固Python,记录关键知识,便于温故知新! 目录 1.标识符 2.多行注释 3.行与缩进 4.多行语句 5.字符串( ...

  4. Python基础--Python3基础语法

    Python3 基础语法 编码 默认情况下,Python3源码文件以UTF-8编码,所有字符串都是Unicode字符串.当然也可以为源码文件指定不同的编码,例如: # -*- coding: cp-1 ...

  5. 【Python学习笔记】3. Python3 基础语法

    前言 本文介绍Python3 基础语法. 编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- ...

  6. python3 基础语法分享

    python3 基础语法 编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串.当然你也可以为源码文件指定不同的编码: # -*- coding: ...

  7. Python3 基础语法介绍

    Python3 基础语法 编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串.当然你也可以为源码文件指定不同的编码: # -*- coding:  ...

  8. C# 发送xml报文到用友U8生成凭证系列二(基础代码)

    C# 发送xml报文到用友U8生成凭证系列一(配置信息) C# 发送xml报文到用友U8生成凭证系列二(基础代码) C# 发送xml报文到用友U8生成凭证系列三(Modal代码) C# 发送xml报文 ...

  9. python3爬虫系列教程-Python3爬虫视频学习教程

    下面是转发博客内容,挺有用的 大家好哈,现在呢静觅博客已经两年多啦,可能大家过来更多看到的是爬虫方面的博文,首先非常感谢大家的支持,希望我的博文对大家有帮助! 之前我写了一些Python爬虫方面的文章 ...

  10. Velocity魔法堂系列二:VTL语法详解

    一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...

最新文章

  1. 基于ceres的后端优化的代码实现
  2. c语言fd变量,有哪位大神会用FD程序包计算功能多样性呀,在线等......
  3. 政府采购就是支持民族软件吗?
  4. 同余最短路(P3403 跳楼机)
  5. bufferreader readline一次读一行_python中read(),readline(),readlines()的区别
  6. nginx动静分离配置_Nginx动静分离
  7. lua运行外部程序_二、C++调用Lua函数
  8. 情人节海报psd分层模板|好的图层,任你选择
  9. 自顶向下红黑树java,【CPP】各种各样的树(9)——自顶向下的红黑树
  10. clone git 修改保存路径_SEO优化知识一般需要了解什么代码_学云网
  11. 74LS 系列 名称解释
  12. 外卖行业现状分析_2020年中国外卖行业市场现状与发展前景分析
  13. 自然语言处理技术的进展和趋势
  14. 移动魔百盒CM211-1_YS代工_S905L3B_RTL8822C_线刷固件包
  15. MySQL数据库进阶知识
  16. 年薪30万IT精英 挥别都市回乡种田务农
  17. 嵌入式:Altium Designer18提升速度的操作(画开发板笔记)
  18. 软件测试基础学习 - Linux文件及文件内容查找命令总结
  19. 免费实时汇率查询Api接口
  20. iOSnbsp;播放流媒体nbsp;服务端配置备份

热门文章

  1. 什么是 CSS? 为什么使用CSS?CSS的优点有那些?详细介绍
  2. 运营方法论——增长黑客
  3. 电驴怎么显示服务器列表,(转)如何更新电驴服务器列表(eMule Server List)
  4. 【安卓】安卓集成魔窗-完整实例
  5. 能提醒生日的软件 精准的提醒生日软件多功能便签超好用
  6. 【Latex】将TIF文件转换成EPS文件
  7. 初学者之路100个视频教程
  8. dns解析失败故障问题解决两例
  9. 人体内部可视化系统市场深度研究分析报告
  10. web网页常见特效3——轮播图