Python 语言基础

2024-01-10 09:30:40

内容概括

1.Python语法与句法 作为Python基础的基础,本章介绍了Python的语法与句法,包括标识符、注释符、换行符、续行符,介绍了语句块的概念以及语句块的表达方式,强调了Python文件的模块化组织方式。

2.基本数据类型 作为Python语言的基础,本章介绍了Python语言的基本数据类型。Python 3中有六种基本数据类型,它们是:Number(数值)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)。

3.数值类型 Python 3支持四种数值类型:int(整型)、float(浮点型)、bool(布尔型)、complex(复数型)。而且Python 3只有一种整数类型int,表示为长整型,相当于python 2 中的 long类型。可用Python的内建函数type()查询变量所指对象的类型。 Python是一种动态类型的语言,在给变量赋值时可以绑定不同类型的值,这个过程叫做变量的赋值操作,赋值同时也确定了变量的类型。

4.序列类型 在Python中,序列类型包括字符串(普通字符串和unicode字符串)、列表和元组。所谓序列,指的是成员有序排列,可以通过下标进行访问。假设序列有n个元素,访问单个元素时,下标从0开始,到n-1结束;如果是逆序访问,下标从-1开始,到-n结束,切片操作支持多个元素的访问。

5.集合类型 集合不是序列类型,它是把不同的元素组合在一起形成的数据结构。集合对象是一组无序排列的可哈希的值,其成员可以做字典的键。因为集合本身是无序的,所以不能为集合创建索引或执行切片操作,也没有键(keys)可用来获取集合中元素的值。

6.字典类型 字典也不是序列类型,它是一种无序的存储结构,存储的是键/值对(key-value)。其中的键应该为不可变类型,如字符串、整数、包含不可变对象的元组。

7.(正则表达式) 正则表达式是计算机科学中的一个概念。正则表达式是一个很有用的工具,可处理复杂的字符匹配和替换工作,它使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。Python中内建了一个功能强大的正则表达式引擎。

一、标识符

命名规则:

(1)标识符长度无限制;

(2)标识符不能与关键字同名;

(3)字母大小写敏感;

(4)在2.x版本的Python中,标识符的命名规则与一般语言的规定一样,但在3.x的Python中进行了扩展,标识符的引导字符可以是字母、下划线以及大多数非英文语言的字母,只要是Unicode编码的字母均可,后续字符可以是任意非空格字符,包括Unicode编码中认为是数字的任意字符。

二、语法和句法

Python 语句中有一些基本规则和特殊字符,例如:

(1)井号(#)表示其后的字符为 Python 语句的注释;

(2)换行(\n)是标准的行分隔符(通常一个语句占一行);

(3)反斜线(\)继续上一行;

print (“This line is toooooooooo \
long”)

(4)分号(;)将两条语句放在一行中;

(5)冒号(:)将代码块的头和体分开;

缩进位置相同的一组语句形成一个代码块,我们称之为代码组。

像if、for、while、def 和class 之类的复合语句,首行均以关键字开始,并以冒号(:)结束,该行之后的一行或多行代码就构成了代码组。

我们通常将首行及其后的代码组称为一个子句(clause)。

(6)语句块(代码块)用缩进的方式体现;

(7)不同的缩进深度分隔不同的代码块;

注意:缩进4个空格宽度,尽量不用制表符。

(8)Python 文件以模块的形式组织。

每个Python 脚本文件均可视为一个模块,它以单个py文件的形式存在。

如果一个模块规模过大,包含的功能太多,就应该考虑对该模块进行拆分,即拆出一些代码另外组建一个或多个模块。模块里的代码既可以是一段直接执行的脚本,也可以是一堆类似库函数的代码,从而可以被别的模块导入(import)后调用。模块可以包含直接运行的代码块、类定义、函数定义,或它们的组合

三、数值

特点:

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

2.变量就是变量,它没有类型。

3.Python允许同时为多个变量赋值。

a = b = c = 1

4.也可以为多个对象指定多个变量。

a, b, c = 1, 2, "python"

5.Python 3中有六种标准的数据类型,它们是:Number(数值)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)。

Python 3支持四种数值类型:int(整型)、float(浮点型)、bool(布尔型)、complex(复数型)。

在Python 3里,只有一种整数类型 int,表示为长整型,而不像python 2 那样区分标准整型与长整型。内建的函数type()可以用来查询变量所指的对象类型。

Python还支持复数。复数由实部和虚部构成,可以表示为a + bj或者complex(a,b),其中实部a和虚部b都是浮点型。 complex型实例:3.14j,45.j,9.322e-36j,.876j,-.6545+0j,3e+26j,4.53e-7j。?

6.把True和False定义成关键字了,但它们的值仍然是1和0,它们可以和数字参与运算。

7.使用del语句可以删除一些对象引用以及对象

del var1[,var2[,var3[....,varN]]]]
del var_a, var_b

8.数值的运算

注意:

①Python可以在一条赋值语句中同时为多个变量赋值,如a, b = 1, 2。

②一个变量可以通过赋值指向不同类型的对象。

③除法运算符“/”总是返回一个浮点数,要返回整数应使用“//”运算符。

④在混合运算时,Python把整型数转换成为浮点数。

四、运算符与优先级

优先级:

运算符通常自左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算。

五、字符串

字符串是 Python 中最常用的数据类型。可以使用引号(单引号'或双引号")来创建字符串。

1.3个单引号/双引号为直接输出

2.引号内有\n为换行

3.Python不支持字符类型。即使是单个字符,Python也将其视为一个字符串来使用。

访问子串,实际上就是用方括号来截取字符串,有的文献称之为“切片运算”

str="0123456789"
print ("str[0:3]:",str[0:3]) #截取第一位到第三位的字符
print ("str[:]:",str[:]) #截取字符串的全部字符
print ("str[6:]:",str[6:]) #截取第七个字符到结尾
print ("str[:-3]:",str[:-3]) #截取从头开始到倒数第三个字符之前
print ("str[2]:",str[2]) #截取第三个字符
print ("str[-1]:",str[-1]) #截取倒数第一个字符
print ("str[::-1]:",str[::-1]) #创建一个与原字符串顺序相反的字符串
print ("str[-3:-1]:",str[-3:-1]) #截取倒数第三位与倒数第一位之前的字符
print ("str[-3:]:",str[-3:]) #截取倒数第三位到结尾
print ("str[:-5:-3]:",str[:-5:-3]) #逆序截取

运行结果如下:

4.必须使用Python的内建函数replace()(稍后介绍)实现字符串的更新

5.转义字符

6.字符串运算符

六、序列与列表

列表的概念

列表(list)是Python中使用最频繁的数据类型,它是放在方括号([])内、用逗号分隔的一系列元素。 列表中元素的类型可以不同,它支持数字、字符串甚至可以包含列表。换言之,列表允许嵌套。

创建一个列表,只要把逗号分隔的不同的数据项用方括号括起来即可。

list1 = ['Google', 'Runoob', 1997, 2017];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];

可以使用下标索引来访问列表中的值,同样,也可以使用方括号的形式截取字符

可以对列表的数据项进行修改或更新,也可以使用append()方法

使用 del 语句来删除列表中的元素,用remove()方法也可以删除列表的元素

列表操作符

函数

列表嵌套

在列表里创建其它列表

七、元组

元组与列表相似,不同之处在于元组的元素是不能修改的。另外,列表使用方括号([]),而元组使用圆括号(())。

元组的创建很简单,只需要在括号中添加元素,并使用逗号分隔各元素即可

tup1 = ('Google', 'Runoob', 1997, 2017);
tup2 = (1, 2, 3, 4, 5 );
tup3 = ("a", "b", "c", "d");
#创建空元组
tup1 = ();

使用下标索引来访问元组中的值

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合

其中的元素值也就不允许删除,但我们可以使用del语句删除整个元组

元组之间可以使用 + 号和 * 号进行运算。

元组是一个序列,所以可以访问元组中指定位置的元素,也可以截取索引中的一段元素

假设元组为L = ('Google', 'Taobao', 'Runoob')

元组的内建函数

七、字典

Python的字典是一种可变容器模型,且可以存储任意类型对象。

字典中的每个项都是“键/值对”,“键”与“值”之间用冒号(:)分割,而每个“对”之间用逗号(,)分割,整个字典放在花括号({})中,格式如下:

d = {key1 : value1, key2 : value2 }

对每个键/值对而言,键必须是唯一的,但值可以改变。值可以取任何数据类型,但键必须是不可变的。例如,字符串、数字或元组均可作为键,但列表不可以。

创建字典的方法很简单,只要将键值对放入花括号内,并用逗号隔开即可。

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
#也可这样创建字典:
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }

字典的访问

把相应的键放入方括号内,即可得到相应的值。

如果所用的键在字典中不存在,则数据无法访问,会输出错误信息

字典的添加与修改

向字典添加新的键/值对,便向字典中添加了新的内容。修改或添加已有键/值

既能删除字典中的单一元素,也能将整个字典清空,而且清空只需一项操作。

第一次引发异常是因为字典中已无元素(空字典),试图访问键‘age’会出错;

第二次引发异常是因为前面已执行了del操作,字典已不复存在,当然不能访问键‘age’;

第三次引发异常也是因为字典不存在,所以两次引发异常的名称均为“NameError”。

字典键的特性

(1)同一个键不得出现两次。创建字典时,如果同一个键被赋值两次,则后一个值被记住

(2)键必须不可变。可以用数字、字符串或元组做键,用列表则不行

字典的内建函数与方法

八、集合

集合(set)是Python的基本数据类型,把不同的元素组合在一起便形成了集合。

组成一个集合的成员称作该集合的元素(element)。在一个集合中不能有相同的元素。

相同的元素被自动删除

集合可以分为两类:可变集合与不可变集合。

可变集合(set)可添加和删除元素,是非可哈希的,不能用作字典的键,也不能做其他集合的元素。不可变集合(frozenset)与之相反。

集合的创建

由于集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()来创建。

由于集合本身是无序的,所以不能像列表和元组那样,为集合创建索引或进行切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。

Python内建了以下方法,可以实现集合的更新:

s.add()

s.update()

s.remove()

当然,只有可变集合才能更新,试图更新不可变集合将会出错。

集合类型操作符

(1)in ,not in(是否是集合的元素)

(2)==,!=(集合等价与不等价)

(3)子集、超集(见表2-15)

(4)并集(|)

并集操作符“|”有一个与之等价的方法union()。

? (5)交集(&)

交集操作符“&”有一个与之等价的方法intersection()。

(6)差补(-)

与之等价的方法是difference()。

(7)对称差分(^)

对称差分是集合的xor(‘异或’),取得的元素属于s1和s2,但不同时属于s1和s2,其等价的方法是symmetric_difference()。

集合的内建函数、内建方法

(1)len():返回集合元素的个数

(2)set()、frozenset():创建集合(属工厂函数)

? (3)适合所有集合的方法

(4)仅适合可变集合的方法

九、正则表达式

正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,它拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。

Python中内置了一个re模块以支持正则表达式。

模块 're'

import re
text = "Hi, I am Shirley Hilton. I am his wife."
m = re.findall("hi", text)
if m:
    print (m)
else:
    print ('not match')

正则表达式有两种基本操作,分别是匹配和替换。

匹配指的是在一个文本字符串中搜索并匹配一个特殊表达式;

替换指的是在一个字符串中查找并替换匹配一个特殊表达式的字符串。

文章来源:https://blog.csdn.net/weixin_55731208/article/details/135463206
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。