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

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



1 python变量类型及其详解

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

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

1.1 数字

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

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

1.2 序列

1.2.1 字符串

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

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

1.2.2 列表

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

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

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

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

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

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

1.2.3 元组

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

  • 创建元组的方式也和列表类似:
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个元素取
  • 步长为负数表示反向取(注意,起始下标和结束下标也要反向标记

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

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"

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

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() 而不是 { },因为 { } 是用来创建一个空字典。

  • 去重功能的展示:
s1 = {
    
    1, 2, 3, 4, 4, 3, 2, 1}
print(s1)		# {1, 2, 3, 4}
  • 集合存储元素是无序的:
a = set('abcdefg')
b = set('abc')
print(a)	# {'f', 'd', 'e', 'b', 'g', 'c', 'a'}
print(b)	# {'b', 'c', 'a'}
  • 集合之间可以进行一些集合操作,例如交并差补
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不可重复,重复会对原有数据覆盖

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

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

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

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

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

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

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

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方法,可用于字典的遍历

# 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的数据记录

2 python变量命名规范

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

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

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

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

猜你喜欢

转载自blog.csdn.net/z135733/article/details/131068353
今日推荐