【Python爬虫开发基础①】Python基础(变量及其命名规范)

news/2024/7/19 12:23:36 标签: python, 爬虫, 开发语言

由于本专栏的文章偏向于爬虫,所以对于python的介绍不可能面面俱到,在这里只讲重点。
如果大家觉得有没讲到的地方,欢迎补充~


文章目录

  • 1 python变量类型及其详解
    • 1.1 数字
    • 1.2 序列
      • 1.2.1 字符串
      • 1.2.2 列表
      • 1.2.3 元组
      • 1.2.4 序列的切片操作
    • 1.3 集合
    • 1.4 字典
    • 1.5 数据容器的比较
  • 2 python变量命名规范


python_10">1 python变量类型及其详解

变量是每一门编程语言必不可少的,相较于C语言或者Java,python的变量定义比较简单,不需要在变量名前面事先声明变量的类型,只需要写出 变量名=变量值 即可,python解释器会自动识别并将变量名设定为该变量类型。

每一门语言中都有不同类型的变量,python也不例外,提供了6种数据类型,分别是数字(Number)、字符串(String)、列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary),下面来详细的介绍一下:

1.1 数字

它支持4种类型,分别是整数、浮点数、复数、布尔类型

  • 整数的定义非常简单,相当于C语言的int类型,定义方法如下:
python">a = 10	# 定义了一个整型变量a,其值为10
  • 浮点数也就是小数,但是与C或者Java不一样,python不需要事先说明是长整形还是短整型,定义方法如下
python">b = 3.1415926
  • 复数用的比较少,它分为实部和虚部,在python中,实部用数字表示,虚部用数字+j来表示,定义方法如下:
python">c = 3+4j	# 定义了一个复数c,实部为3,虚部为4
  • 布尔类型用来判断真假,只有True、False两个取值,定义方法如下:
python">d = True	# 定义了一个布尔类型的变量d,取值为“真”

1.2 序列

1.2.1 字符串

字符串在python中是比较方便定义和使用的,它是描述文本的一种数据类型,可以由任意数量的字符组成。其定义和使用需要遵循以下规则:

  • python的字符串中,可以使用单引号或双引号来定义。例如:
python">str1 = 'I am a student.'
str2 = "I am a student too."
  • 如果一个字符串包含一个单引号,应该使用双引号来定义,例如:
python">str3 = "It's a big city!"
  • 当一个字符串包含双引号时,要使用单引号来定义,例如:
python">str4 = 'When I was doing homework, "I love you!", she said.'
  • 反斜杠(\)在python字符串中表示“转义字符”,例如:
python">str5 = 'It\'s a big city!'	# 输出It's a big city!
  • 对于转义字符,也可以通过在第一个引号前添加字母r来使用原始字符串,例如:
python">str6 = r'D:\nBaiduNetdiskDownload'	# 输出D:\nBaiduNetdiskDownload
  • 多行字符串,也可以作为多行注释,使用三对单引号来创建
python">'''
这是一个多行字符串
这是一个多行字符串
'''

1.2.2 列表

其实,列表、元组、集合、字典,都是python的数据容器,下面来介绍其中之一——列表(List)
列表相当于C语言中的数组,是基于链表这个数据结构实现的,但是比它的定义要简单,而且python还提供了对列表对象的各种操作方法。python列表规范如下:

  • 列表内的每一个数据,称之为元素
  • 以 [] 作为标识
  • 列表内每一个元素之间用, 逗号隔开
  • 一个列表中,可定义单个、多个或者嵌套类型的数据

创建列表的方法也有很多,例如:

  • 直接在方括号内放入元素定义列表
python">list1 = [1, 2, 3, 4]
list2 = ['IT', 123, True]
list3 = [[1, 2, 3], [4, 5, 6]]
list4 = []	# 也可直接定义空链表

列表作为容器的一种,当然在应用方面有较多的需要,比如元素的选取方式,决定了代码的书写效率。所以python提供了多种多样的访问方式,后面的元组、集合、字典也不例外。

  • 首先,和C、Java一样,python当然也可以通过下标来访问,在这里就不多说了。其次,列表等容器在for循环中运用的比较广泛,使用方法如下:
python">list5 = [1, 2, 3, 4, 5, 6]
for num in list5:
	print(num)

1.2.3 元组

与列表不同,元组一经定义不可修改,但元组同列表一样,都是可以封装多个、不同类型的元素在内。所以,当我们需要在程序内封装数据,又不希望封装的数据被篡改,那么元组就非常合适了。
定义元组需用小括号,且使用逗号隔开各个数据,同时,数据可以是不同的数据类型。

  • 创建元组的方式也和列表类似:
python">t1 = (1, 2, 3, 4)
t2 = ('IT', 123, True)
t3 = ((1, 2, 3), (4, 5, 6))

python也对于元组提供了多个方法来实现相关的操作,比如index()用于查找某个数据,如果数据存在返回对应的下标,否则报错;count()用于统计某个数据在当前元组出现的次数;len()用于统计元组内的元素个数等。

1.2.4 序列的切片操作

首先,什么是序列?

序列是指内容连续、有序,可使用下标索引的一类数据容器
列表、元组、字符串,均可以可以视为序列。

什么是切片呢?

切片是指从一个序列中,取出一个子序列

python中,切片使用的语法是:序列[起始下标:结束下标:步长],表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列

切片操作需要注意的是:

  1. 起始下标表示从何处开始,可以留空,留空视作从头开始
  2. 结束下标不含)表示何处结束,可以留空,留空视作截取到结尾
  3. 步长表示,依次取元素的间隔

对于步长,有很多的编程技巧:

  • 步长1表示,一个个取元素
  • 步长2表示,每次跳过1个元素取
  • 步长N表示,每次跳过N-1个元素取
  • 步长为负数表示反向取(注意,起始下标和结束下标也要反向标记

序列切片操作的演示(正向操作):

python">my_list = [1, 2, 3, 4, 5]
new_list = my_list[1:4]	# 下标1开始,下标4(不含)结束,步长1
print(new_list)		# 结果:[2, 3, 4]

my_tuple = (1, 2, 3, 4, 5)
new_tuple = my_tuple[:]	# 从头开始,到最后结束,步长1
print(new_tuple)		# 结果:(1, 2, 3, 4, 5)

my_list = [1, 2, 3, 4, 5]
new_list = my_list[::2]		# 从头开始,到最后结束,步长2
print(new_list)		# 结果:[1, 3, 5]

my_str = "12345"
new_str = my_str[:4:2]	# 从头开始,到下标4(不含)结束,步长2
print(new_str)		# 结果:"13"

序列切片操作的演示(反向操作):

python">my_str = "12345"
new_str = my_str[::-1]	# 从头(最后)开始,到尾结束,步长-1(倒序)
print(new_str)		# 结果:"54321"

my_list = [1, 2, 3, 4, 5]
new_list = my_list[3:1:-1]	# 从下标3开始,到下标1(不含)结束,步长-1(倒序)
print(new_list)		# 结果:[4, 3]

my_tuple = (1, 2, 3, 4, 5)
new_tuple = my_tuple[:1:-2] 	# 从头(最后)开始,到下标1(不含)结束,步长-2(倒序)
print(new_tuple)		# 结果:(5, 3)

1.3 集合

与上面三个类似,集合也是python提供的一个数据容器,但是它有着特殊的功能,就是去重操作。无论是列表、元组还是字符串,都允许相同元素重复出现,但是对于集合,当要插入的元素在里面已经出现时,就不能重复插入了

集合可以使用大括号 { } 或者 set() 函数创建

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

  • 去重功能的展示:
python">s1 = {1, 2, 3, 4, 4, 3, 2, 1}
print(s1)		# {1, 2, 3, 4}
  • 集合存储元素是无序的:
python">a = set('abcdefg')
b = set('abc')
print(a)	# {'f', 'd', 'e', 'b', 'g', 'c', 'a'}
print(b)	# {'b', 'c', 'a'}
  • 集合之间可以进行一些集合操作,例如交并差补
python">print(a - b)	# {'d', 'g', 'f', 'e'}	
print(a ^ b)	# {'e', 'f', 'd', 'g'}
print(a & b)	# {'b', 'c', 'a'}
print(a | b)	# {'b', 'e', 'f', 'd', 'g', 'c', 'a'}

1.4 字典

爬虫操作中,很多相应得到的响应体的部分都由字典组成,所以它在爬虫的开发中尤为重要。同时,它还可以与json对象相互转换,后面的文章会做专门的介绍。

字典与集合一样,都是用{}来表示,但是不同的是字典每个元素有两个值,中间用冒号隔开,前面的叫做key,后面的叫做value。语法如下:

  • 使用{ }存储原始,每一个元素是一个键值对
  • 每一个键值对包含Key和Value(用冒号分隔)
  • 键值对之间使用逗号分隔
  • Key和Value可以是任意类型的数据key不可为字典
  • Key不可重复,重复会对原有数据覆盖

字典的定义可以使用以下形式:

python">dict = {"nane": "张三", "age": 18, "sex": "男"}
dict1 = {}	# 定义了一个空字典

同时,字典还可以嵌套使用,但key不可以为字典类型,例如:

python">stuScore = {"张三" : {"语文" : 89, "数学" : 78, "英语" : 77}, "李四" : {"语文" : 69, "数学" : 94, "英语" : 79}}

当需要获取字典中的内容时,可以利用key中的值来取value,例如:

python">print(stuScore["张三"])	# {'语文': 89, '数学': 78, '英语': 77}

除此之外,还可以对字典进行增删改操作:

python">dict = {"nane": "张三", "age": 18, "sex": "男"}	# 定义了一个空字典
dict["score"] = 100	# 增加元素
del dict["name"]	# 删除元素
dict["name"]="老六"	# 修改元素

对于字典,python提供的操作有:

  • len(字典):用于返回字典中键值对个数
  • 字典.pop(Key):用于取出Key对应的Value并在字典内删除此Key的键值对
  • 字典.clear():清空字典
  • 字典.keys():获取字典的全部Key,可用于for循环遍历字典

其中的keys,values,items方法,可用于字典的遍历

python"># 1.使用keys
for i in dict.keys():
    print(i)
# 2.使用values
for i in dict.values():
    print(i)
# 3.使用items
for i in dict.items():
    print(i)
# 4.可使用items获取key和value
for key,value in dict.items():
    print(key,value)

1.5 数据容器的比较

列表元组字符串集合字典
元素类型任意任意仅字符任意Key除字典外任意, Value任意
下标索引支持支持支持不支持不支持
重复元素支持支持支持不支持不支持
可修改性支持不支持不支持支持支持
数据有序
使用场景可修改、可重复的一批数据记录不可修改、可重复的一批数据记录一串字符的记录不可重复的数据记录以Key检索Value的数据记录

python_284">2 python变量命名规范

首先,变量的命名规则与C、Java等语言一样:

  1. 只能由字母、数字、下划线组成
  2. 不能是数字开头,比如1s就是错误的变量名
  3. 不能是python内置关键字,比如forwhile
  4. 严格区分大小写,比如Stustu就不是一个变量

其次,变量的命名习惯一般都用小驼峰命名法,即除了第一个单词首字母小写,其余单词首字母大写,比如pageRank

最后,还要注意的一点是:变量的命名要见文知义,比如说姓名这个变量名就要写成name或者my_name等,如果写成a, b, c这种的就会影响项目的开发。


http://www.niftyadmin.cn/n/418228.html

相关文章

javassist 入门以及dubbo中的使用案例

javassite 入门 概述原理 简单的demo记录方法执行的时间带参数和返回值javassite 占位符 dubbo中的使用代理工厂 JavassistProxyFactory代理类 org.apache.dubbo.common.bytecode.Proxyorg.apache.dubbo.rpc.proxy.InvokerInvocationHandler创建类的工具类 ClassGenerator 概述…

Java网络开发(Asynchronous)—— 从 Jsp 到 Ajax 的 axios 到 vue 同步请求 到 异步请求

目录 引出如果想做bilibili边看视频边评论怎么搞?Ajax是啥?& axios的语法1. Ajax(Asynchronous JavaScript And XML)简介2. axios语法 及其与 java后端交互(1)get请求(2)post请求…

数据库实验一 数据库和数据表的建立、修改和删除

任务描述 本关任务:建立数据库 为了完成本关任务,你需要掌握: 如何创建数据库,显示已经建立的数据库 相关知识 创建数据库 创建数据库是在系统磁盘上划分一块区域用于数据的存储和管理。 命令格式: CREATE DATABA…

Netty核心源码剖析(三)

1.Pipeline,Handler和HandlerContext创建源码剖析 1.1.三者的关系 1>.每当ServerSocket创建一个新的连接,就会创建一个Socket,对应的就是目标客户端; 2>.每一个新创建的Socket都将会分配一个全新的ChannelPipeline(以下简称pipeline); 3>.每一个ChannelPipeline内…

python基础第三天

可变字符串 s‘hello’ sioio.StringIO(s) sio.getValue() ‘hello’ sio.seek(3) sio.write(‘a’) sio.getValue() ‘helao’ 运算符 按位或| 只要有一个是1就是1 按位与& 两个都是1才是1 按位异或^ 一个是1一个是0才是1&#xff0c;不相同才是1 2<<2 >2222*…

PureComponent和Component的区别和底层处理机制

PureComponent和Component都是React中的组件类&#xff0c;但它们在实现细节和使用上有些差别。 Component是React中定义组件的基类&#xff0c;它的shouldComponentUpdate方法默认返回true&#xff0c;也就是说&#xff0c;每次调用setState或forceUpdate方法都会引发组件重新…

Vue3:组件高级(下)

Vue3&#xff1a;组件高级&#xff08;下&#xff09; Date: May 25, 2023 Sum: ref引用、动态组件、插槽、自定义指令 目标&#xff1a; ◆ 能够知道如何使用 ref 引用 DOM 和组件实例 ◆ 能够知道 $nextTick 的调用时机 ◆ 能够说出 keep-alive 元素的作用 ◆ 能够掌握插…

全志V3S嵌入式驱动开发(开发环境再升级)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们陆陆续续开发了差不多有10个驱动&#xff0c;涉及到网口、串口、音频和视频等几个方面。但是整个开发的效率还是比较低的。每次开发调试的…