侧边栏壁纸
  • 累计撰写 52 篇文章
  • 累计创建 50 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Chap02.Python语法基础与数据类型

冬天冬天W
2023-12-22 / 0 评论 / 1 点赞 / 24 阅读 / 17703 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-12-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

以下内容以知识点为主,无过多需要理解的内容,故本章节采用知识速查的方式进行编辑。

Python 语法基础

Python 赋值

Python 中的变量不需要声明,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

a = 10 						# 赋值即用
print(a)

a = 'Hello World!'			# 随时指向不用的类型的对象
print(a)

注意: 变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型,因此可以认为变量的类型不固定

Python 赋值-查看对象类型和内存地址

Python 中使用type() 函数查看对象类型

# 赋值即创建
a = 'Hello World!'
b = 10
print(type(a))			# out:<class 'str'>
print(type(b))			# out:<class 'int'>

Python 中使用id() 函数查看对象地址

# 变量名称不同,但指向同一个对象,对象地址一样
a = 10
b = 10
print(id(a))		# out:140726450316360
print(id(b))		# out:140726450316360
# 变量名称相同,但先后指向不同对象,对象地址不一样
a = 10
print(id(a))		# out:140726450316360
a = 1
print(id(a))		# out:140726450316072

Python 标识符

简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它 的主要作用就是作为变量、函数、类、模块以及其他对象的名称。

Python标识符要求:

  1. 标识符是由字母(~ ~A-Z和 a-z)、下划线和数字组成,但第一个字符不能是数字
  2. 标识符中不能包含空格、@、% 以及 $ 等特殊字符
  3. 标识符不能和 Python 中的保留字相同
  4. 标识符对大小写敏感
# 合法标识符
UserID
name
mode12
user_age

# 不合法标识符
try 		#try是保留字
4word 		#不能以数字开头
$money	    #不能包含特殊字符
@money 		#不能包含特殊字符

# 大小写敏感:Name与name为两个不同的标识符

Python 保留字

保留字是 Python 语言中一些已经被赋予特定意义的单词,要求开发者在开发程序时,不能用这些保留字作为标识符给变量、函数、类、模板以及其他对象命名。

下面为关键字相关的代码。

import keyword				# 导入keyword模块

keyword.kwlist				# 输出当前版本Python的所有保留字


keyword.iskeyword('is')		# 判断'is'是否为Python的保留字

微信截图_

Python 注释

注释是为了增强代码的可读性,Python中的注释有单行注释多行注释

# 这是单行注释,用#
print("Hello, World!") #也可以写在这里

'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print("Hello, World!")

"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
print("Hello, World!")

Python 数据类型

数字类型(Number)

Python 数字类型用于存储数值的,不可变(指的是内存中的对象内容不可变)。这里的数字类型类似于字面量

# 定义数字类型
var1 = 123
var2 = 1.23
print(var1,var2)

微信截图_20231212121255.png

数字类型(Number)细分

数字类型可以进一步细分为整型、布尔型、浮点型、复数

数字类型细分定义样例
int整型通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用。分为:二进制、八进制、十进制、十六进制。123, 789
bool布尔布尔类型是一种特殊的整数类型,仅用来表示两种可能的值:真(True)和假(False)。True, False 或 1,0
float浮点型浮点型由整数部分与小数部分组成,分为:一般表示,指数表示。1.23, 1.23e2
complex复数复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。-.6545+1.2j, 4.6j

数字类型(Number)操作

操作类型操作符说明
算术运算x + y加法
x - y减法
x * y乘法
x / y除法
-x负数
abs(x)取绝对值
x // y除后取整(地板除)
x % y除后取余
divmod(x,y)返回一个包含商和余数额元组
pow(x,y)返回x的y次方
x ** y返回x的y次方
round(x[,n])方法返回浮点数x的四舍五入
不同数字类型间转换int(x)转换成整数,注意转化可能会损失进度
bool(x)转换成布尔型
float(x)转换成浮点数
complex(x,y)创建一个复数(x, y均为整型或浮点型)
c.conjugate()返回复数的共轭复数(c为复数变量)

说明:数字类型除以上基础操作,还有包括数学函数、随机数函数、三角函数等

字符串类型(String)

字符串即一串字符组成,不可变,使用引号包围:

  1. 单引号
  2. 双引号
  3. 三引号(允许字符串跨多行、包含换行符、制表符以及其他特殊字符)

创建字符串很简单,只要为变量分配一个值即可

# 这是单引号
string1='I am Python!'
print(string1)

# 这是双引号
string2="Hello World!"
print(string2)

# 这是三引号
string3='''LiLei:How are you?
HanMeimei:Fine,thank you,and you?'''
print(string3)

字符串类型(String)操作

Python 字符串类型基础操作:

操作类型操作符说明
切片与合并string1[0]字符串切片,即字符串片段选择。
string1[2:4]
string1[:-1]
string1+string2字符串合并
分割与组合string1.split(" ")字符串分割。
'~'.join(string1)将序列中的元素以指定的字符连接生成一个新的字符串
剔除与替换string1.strip(" ")移除字符串头尾指定的字符或字符序列(默认为空格或换行符)
string1.lstrip(" ")移除字符串头(左)指定的字符或字符序列(默认为空格或换行符)
string1.rstrip(" ")移除字符串尾(右)指定的字符或字符序列(默认为空格或换行符)
string1.replace('Python','Java')字符串指定字符或字符序列替换
Unicode码互转ord('A')字符转Unicode码
chr(65)Unicode码转字符
大小写互转string1.lower()转成小写字符串
string1.upper()转成大写字符串

字符串类型(String)转义字符

在需要在字符中使用特殊字符时,Python 用反斜杠 \ 转义字符。

#转义字符:换行
print('LiLei:How are you?\nHanMeimei:Fine,thank you,and you?')
'''
out:
LiLei:How are you?
HanMeimei:Fine,thank you,and you?
'''

#转义字符:横向制表符
print('LiLei:How are you?\tHanMeimei:Fine,thank you,and you?')
'''
out:
LiLei:How are you?      HanMeimei:Fine,thank you,and you?
'''

#转义字符:将 \r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。
print('LiLei:How are you?\rabcde')
'''
out:
abcde:How are you?
'''

列表类型(List)

列表是一个有序的,可修改的(增删改),元素以逗号分隔,以中括号[ ]包围的序列

列表的特点:

  1. 用来储存多个数据的数据结构
  2. 储存的数据是有序的,可使用位置索引
  3. 列表长度和元素都是可变的
  4. 可储存不同类型的数据

列表类型(List)操作

Python 列表类型基础操作

操作类型操作符说明
索引
list1[0]list[index],index从0开始
list1[-1]index为负时从右往左索引
切片
list1[1:4]list[start,stop],截取列表中位置start-stop的片段,生成新的列表。
list1[2:]当start为空时从0开始,当stop为空时取至最后一个。
更新(增删改)
list1.append("广东肇庆")在list在增加元素"广东肇庆"
del list1[2]删除list中索引为2的元素
list1[2] = 2023更改list中索引为2的元素的取值为2023
检查成员
'Baidu' in list1判断元素是否在列表内
'Baidu' not in list2判断元素是否不在列表内
合并、嵌套、重复
list1 + list2两个列表的元素合并为一个列表
[list,list]两个列表分别作为新列表的元素
list*3列表元素重复N次作为新列表元素

元组类型(Tuple)

元组是一个有序的不可修改的,元素以逗号分隔,以小括号( )包围的序列。

# 定义元组
tup1 = ('Google', 'Baidu', 1997, 2000)
print(tup1)

# 定义元组,只包含一个元素时,需要在元素后面添加逗号,否则括号会被当成运算符
tup2 = ('Google')
print(type(tup2))		# out: <class 'str'>

# 定义元组
tup3 = ('Google',)
print(type(tup3))		# out: <class 'tuple'>

元组类型(Tuple)操作

元组同样支持索引和切片、合并操作,但不能增删改

# 元组索引
tup1[0]

# 元组切片
tup1[1:]

# 元组合并
tup1+tup3

拓展:如果元组不能修改,以下元组重复赋值,会报错吗?

tup = ('Google', 'Baidu', 1997, 2000)
tup = (1, 2, 3, 4)

编者注:以上代码不会报错,实际上元组并没有发生改变。对于Python来说,变量更像是给一块内存取名字,而这个名字正是变量。而在这个实例当中,元组就是那一块内存。tup这个名字从一块内存指向了另一块内存,而内存本身是没有发生变化的。若==('Google', 'Baidu', 1997, 2000)==没有被分配其他的变量名,则会被丢弃(Python中的垃圾收集器会负责处理不再引用的对象的内存释放)。

字典类型(Dictionary)

字典是一种可变容器模型,且可以键值对形式,存储任意类型对象

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 { } 中 。

# 字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中
dic = {'name': 'Baidu', 'likes': 123, 'url': 'www.baidu.com'}
print(dict)

字典类型(Dictionary)操作

字典内容按键访问,支持增加键对、删除键对,改变值

两个重要的点需要记住:

  • 创建时如果同一个键被赋值两次,以最后一个为准
  • 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
# 字典按键访问,如果用字典里没有的键访问数据,就会报错
dic['name']

# 向字典添加新内容的方法是增加新的键/值对
dic['country']='china'
print(dic)

# 修改已有键/值对
dic['name']='百度'
print(dic)

# 删除已有键/值对
del dic['country']
print(dic)

字典类型(Dictionary)操作方法汇总

字典常用方法如下

序号方法描述
1radiansdict.clear()删除字典内所有元素
2radiansdict.copy()返回一个字典的浅复制
3radiansdict.fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4radiansdict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值
5key in dict如果键在字典dict里返回true,否则返回false
6radiansdict.items()以列表返回可遍历的(键, 值) 元组数组
7radiansdict.keys()返回一个键迭代器,可以使用 list() 来转换为列表
8radiansdict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9radiansdict.update(dict2)把字典dict2的键/值对更新到dict里
10radiansdict.values()返回一个迭代器,可以使用 list() 来转换为列表
11pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则, 返回default值。
12popitem()随机返回并删除字典中的最后一对键和值。
# 定义字典
dic = {'name': 'Baidu', 'likes': 123, 'url': 'www.Baidu.com'}
print(dic)

# 如果键在字典dict里返回true,否则返回false
'name' in dic

##获取字典键值对
dic = {'name': 'Baidu', 'likes': 123, 'url': 'www.Baidu.com'}
for keys,value in dic.items():
	print(keys,value)

##获取字典键
for keys in dic.keys():
	print(keys)

##获取字典值
for values in dic.values():
	print(values)

## 清空字典
dic.clear()
print(dic)

集合类型(Set)

集合是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合。

# 定义集合set,结果说明无序的不重复元素序列
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket)

拓展:定义为空的集合是什么类型?

# 以下定义空的数据类型,是什么类型?
basket = {}		
type(basket)		# out: <class 'dict'>

集合类型(Set)操作方法汇总

集合常用方法如下:

序号方法描述
1add()为集合添加元素,将字符串当做整体追加在集合中
2update()给集合添加元素,将字符串中的拆分成字符进行追加
3clear()移除集合中的所有元素
4copy()拷贝一个集合
5difference()返回多个集合的差集
6difference_update()移除集合中的元素,该元素在指定的集合也存在。
7discard()删除集合中指定的元素
8intersection()取两个集合的相同元素生成新的集合,原来的两个集合不变。
9intersection_update()取两个集合的相同元素,覆盖原来被函数操作的集合。
10isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
11issubset()判断指定集合是否为该方法参数集合的子集。
12issuperset()判断该方法的参数集合是否为指定集合的子集
13pop()随机移除元素
14remove()移除指定元素
15symmetric_difference()返回两个集合中不重复的元素集合。
16symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
17union()返回两个集合的并集
# 集合添加元素,add把新增的元素整个加进元组
x='cat'
basket.add(x)
print(basket)

# 集合添加元素,update把新增的元素拆成单个字符后再加进元组
y='ddd'
basket.update(y)
print(basket)

# 集合移除元素:remove
basket.remove('cat')
print(basket)

# 随机删除集合中的一个元素
basket.pop()
print(basket)

# intersection()函数取两个集合的相同元素生成新的集合。原来的两个集合不变。
set1 = {1,2,3,40,50,60}
set2 = {40,50,60,7,8,9}
set_new = set1.intersection(set2)
print(set1)			# out: {1, 2, 3, 50, 40, 60}
print(set2)			# out: {50, 7, 40, 8, 60, 9}
print(set_new)		# out: {40, 50, 60}

# intersection_update()函数取两个集合的相同元素,覆盖原来被函数操作的集合。
set1 = {1,2,3,40,50,60}
set2 = {40,50,60,7,8,9}
set_new = set1.intersection_update(set2)
print(set1)			# out: {40, 50, 60}
print(set2)			# out: {50, 7, 40, 8, 60, 9}
print(set_new)		# out: None

Range类型

range类型,一段不可变的数字序列,经常被用作for里面来指定循环次数

创建range对象语法range(start,stop,step)​其中start是开始值(包含,默认为0)、stop是结束数值(不包含)、step是步长(默认是1)

序号range对象序列
1range(4)0,1,2,3
2range(1,4)1,2,3
3range(1,4,2)1,3
4range(4,1,-1)4,3,2

Range类型操作

range类型同样支持索引和切片操作,但不能增删改、合并等修改元素操作。

序号切片结果
1x[1:3]range(1,3)
2x[-3:-1]range(7,9)
3x[:4](0,4)
4x[6:](6,10)
5x[1:6:2]range(1,6,2)
6x[-8 : -1 : 3]range(2,9,3)
7x[6:1:-2]range(6,1,-2)
8x[-1:-8:-3]range(9,2,-3)

数据类型转换

对数据内置的类型进行转换,数据类型的转换,只需将数据类型作为函数名即可。

序号方法描述
1int(x [,base])将x转换为一个整数
2float(x)将x转换到一个浮点数
3complex(real [,imag])创建一个复数
4str(x)将对象 x 转换为字符串
5repr(x)将对象 x 转换为表达式字符串
6eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象
7tuple(s)将序列 s 转换为一个元组
8list(s)将序列 s 转换为一个列表
9set(s)转换为可变集合
10dict(d)创建一个字典。d 必须是一个 (key, value)元组序列。
11frozenset(s)转换为不可变集合
12chr(x)将一个整数转换为一个字符
13ord(x)将一个字符转换为它的整数值
14hex(x)将一个整数转换为一个十六进制字符串
15oct(x)将一个整数转换为一个八进制字符串
## 整型转字符串
intx = 123
strx = str(intx)
print(type(strx))

## 字符串整型转
strx = '123'
intx = int(intx)
print(type(intx))

# eval(str),用来计算在字符串中的有效Python表达式,并返回一个对象
s = "1+2"
eval(s)

## 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式。
strx = 'abc'
eval(repr(strx))

## dict()创建一个字典。d 必须是一个 (key, value)元组序列。
d = [('name','Baidu'), ('likes',123), ('url', 'www.Baidu.com')]
dict(d)

## 定义列表l,使用dict转换为字典
l = [("姓名","张三"),("学号","2018088947"),("年级","2018"),("年龄",19),("性别","男"),("生源地","中国重庆")]
dict(l)

1

评论区