python数据分析所需要了解的结构基础

Python语言基础------结构基础


前言

Python数据分析所需的结构基础包括:

  1. 控制流语句:如条件语句(if/elif/else)、循环语句(for/while)等,用于控制程序流程。
  2. 函数与模块:自定义函数可以封装重复使用的代码,模块可以组织和管理这些函数。
  3. 数据处理库:如NumPyPandas等,用于高效地处理和分析大量数据。
  4. 数据可视化库:如MatplotlibSeaborn等,用于生成直观的数据可视化图表。

了解这些结构基础是Python数据分析的关键,可以帮助分析人员更有效地处理、分析和呈现数据。


一、列表

列表的介绍

Python中的列表是一种有序的数据类型,可以存储多个值。列表使用方括号[]来表示,每个值之间用逗号分隔。列表是顺序结构中的一种,而且列表中的每个元素最多只有一个前驱和一个后驱。

列表的元素可以是任何类型的数据,包括数字、字符串、布尔值、其他列表等。

列表是可变的,可以通过索引来访问和修改列表中的元素。列表的索引从0开始,即第一个元素的索引为0,第二个元素的索引为1,依此类推。

列表可以进行一些常见的操作,例如添加元素、删除元素、获取列表的长度等。

列表的语法

Python列表是一种有序的数据集合,用于存储多个元素。列表是可变的,可以通过添加、删除或修改元素来改变列表。

列表的语法如下:

  1. 创建一个列表:可以通过在方括号 [] 中用逗号分隔元素来创建一个列表。
python 复制代码
my_list = [1, 2, 3, 4, 5]
  1. 空列表:可以通过使用空的方括号创建一个空列表。
python 复制代码
empty_list = []
  1. 访问列表元素:可以使用索引运算符 [] 访问列表中的元素。索引从 0 开始,可以是正数或负数。
python 复制代码
my_list = [1, 2, 3, 4, 5]
print(my_list[0])  # 输出第一个元素 1
print(my_list[-1])  # 输出最后一个元素 5
  1. 切片操作:可以使用切片操作符 : 来获取列表中的子列表。切片操作会返回一个新的列表。
python 复制代码
my_list = [1, 2, 3, 4, 5]
print(my_list[1:3])  # 输出包含索引为 1 和 2 的元素 [2, 3]
  1. 修改列表元素:可以直接通过索引运算符 [] 来修改列表中的元素。
python 复制代码
my_list = [1, 2, 3, 4, 5]
my_list[0] = 10  # 将第一个元素修改为 10
print(my_list)  # 输出 [10, 2, 3, 4, 5]
  1. 添加元素:可以使用 append() 方法向列表末尾添加一个元素。
python 复制代码
my_list = [1, 2, 3, 4, 5]
my_list.append(6)  # 添加元素 6
print(my_list)  # 输出 [1, 2, 3, 4, 5, 6]
  1. 删除元素:可以使用 del 语句或 remove() 方法删除列表中的元素。
python 复制代码
my_list = [1, 2, 3, 4, 5]
del my_list[0]  # 删除第一个元素
print(my_list)  # 输出 [2, 3, 4, 5]

my_list.remove(3)  # 删除元素 3
print(my_list)  # 输出 [2, 4, 5]
  1. 列表长度:可以使用 len() 函数获取列表的长度。
python 复制代码
my_list = [1, 2, 3, 4, 5]
print(len(my_list))  # 输出列表的长度 5

以上是Python列表的一些基本语法。

示例

以下是一个使用Python列表的示例代码:

python 复制代码
# 创建一个空列表
my_list = []

# 向列表中添加元素
my_list.append(10)
my_list.append(20)
my_list.append(30)

# 访问列表中的元素
print(my_list[0])   # 输出: 10
print(my_list[1])   # 输出: 20
print(my_list[2])   # 输出: 30

# 修改列表中的元素
my_list[1] = 50
print(my_list)      # 输出: [10, 50, 30]

# 删除列表中的元素
del my_list[0]
print(my_list)      # 输出: [50, 30]

# 使用循环遍历列表中的元素
for num in my_list:
    print(num)
# 输出:
# 50
# 30

在上面的示例中,我们首先创建了一个空列表my_list。然后使用append()方法向列表中添加了三个元素。我们可以通过下标来访问列表中的元素,并且可以通过赋值来修改元素的值。使用del关键字可以删除列表中的元素。最后,我们使用循环遍历了列表中的每个元素,并打印出来。

注意要点

符号

列表中的方括号和逗号都是半角符号,如果用了全角符号,python的解释器会报错


元素

列表中的元素可以是相同的类型,也可以是不同的类型。

当往列表中放入数据的时候,python用"索引"来标记要放入的位置。

可以这样理解索引,就是给每一个存放数据的位置写了一个数字,而且是从0开始。

切片运算符

如果要连续获取几个元素,需要使用如下的切片运算符:

Python中的切片运算符用于提取列表、字符串等可迭代对象的子序列。它使用方括号[]来表示,并在方括号内指定起始索引、结束索引和步长。

切片运算符的语法如下:

cpp 复制代码
[start:stop:step]

其中,start表示起始索引(包含),stop表示结束索引(不包含),step表示步长(默认为1)。

示例

例如,对于列表lst,可以使用切片运算符提取其中的子列表:

python 复制代码
lst[start:stop:step]

以下是一些常见的切片运算符示例:

  1. 提取整个列表:
python 复制代码
lst[:]  # 返回lst的完整副本
  1. 提取从索引0到索引2(不包含)之间的元素:
python 复制代码
lst[0:2]
  1. 提取从索引1到最后一个元素之间的元素:
python 复制代码
lst[1:]
  1. 提取从第一个元素到倒数第二个元素之间的元素:
python 复制代码
lst[:-1]
  1. 提取从索引1到倒数第二个元素之间的元素,并以步长为2进行提取:
python 复制代码
lst[1: -1:2]

切片运算符还可以用于字符串、元组等其他类型的可迭代对象。

需要注意的是,切片运算符返回的是原对象的一个新副本,而不是对原对象的修改。





二、字典

python的字典由"键"和"值"构成,其中"键"表示查找的依据,而"值"表示查找的结果。

字典的介绍

Python中的字典(Dictionary)是一种可变容器模型,可以存储任意类型的对象,例如数字、字符串、列表和另一个字典等。字典是通过键值对(key-value pairs)来存储和访问数据的。

我们可以这样理解,Python中的字典就是一个映射结构,与手机通讯录很相似。我们查通讯录的时候是按姓名来查找的,即通过名字找到这个人的手机号码,姓名与手机号码是一一对应的。值得注意的是,Python字典是一个特殊的通信录,因为它不允许里面有两个人的名字是相同的。

ps: 映射结构就是把一个值映射到另一个值的结构。

字典的特点

字典的特点包括:

  1. 字典中的键必须是唯一的;
  2. 键必须是不可变的,例如字符串、数字或元组,但不能是列表等可变类型;
  3. 字典中的元素没有顺序,不像列表有索引。

字典的语法

字典的创建可以使用花括号 {},也可以使用 dict() 函数。下面是一些创建字典的示例:

python 复制代码
# 使用花括号创建字典
my_dict = {'apple': 5, 'banana': 3, 'orange': 2}

# 使用 dict() 函数创建字典
my_dict = dict(apple=5, banana=3, orange=2)

可以通过键来访问字典中的值,例如:

python 复制代码
my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
print(my_dict['apple'])  # 输出 5

字典也支持添加、修改和删除元素的操作。例如,可以使用键来添加一个新的键值对,或者使用现有的键来修改相应的值:

python 复制代码
my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
my_dict['apple'] = 6  # 修改 'apple' 的值为 6
my_dict['grape'] = 4  # 添加一个新的键值对 'grape': 4

可以使用 del 关键字来删除字典中的键值对:

python 复制代码
my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
del my_dict['orange']  # 删除键为 'orange' 的键值对

除了基本的操作外,字典还提供了一些常用的方法,例如 keys()values()items() 来获取字典中的键、值和键值对。另外,可以使用 len() 函数来获取字典中键值对的数量。

总结来说,字典是一种非常实用的数据结构,可以用来存储和访问各种类型的数据。通过键值对的形式,可以方便地进行增加、删除和修改操作。在实际的编程中,字典经常被用作存储配置信息、处理文件和网络数据等场景中的数据结构。

三、元组

元组和列表相似,列表的大部分方法在元组上也可以使用,只是元组是不可以修改的。创建列表的语法是使用方括号,而创建元组的语法是使用圆括号。

元组的介绍

Python元组是一种不可变的有序集合。元组使用小括号 () 来表示。元组中的每个元素都可以有不同的类型,并且可以是任意类型(包括数字、字符串、元组、列表等)。

与列表不同,元组是不可变的,这意味着一旦创建了元组,就不能修改它。因此,元组中的元素不能被添加、删除或修改。这使得元组在存储不可变数据集合时非常有用。

元组可以通过索引访问,索引从0开始。也可以使用切片来访问元组的部分内容。

元组支持多种操作,包括元素的访问、元素的比较、元组的拼接、重复和长度查找等。

元组的语法

元组的语法如下:

python 复制代码
my_tuple = (element1, element2, element3, ...)

可以使用索引来访问元组中的元素,索引从0开始。也可以使用切片来访问元组中的子集。

python 复制代码
my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[0])  # 输出:1
print(my_tuple[1:3])  # 输出:(2, 3)

元组的元素可以是任意类型的数据,包括数字、字符串、列表等。

python 复制代码
my_tuple = (1, "hello", [1, 2, 3])
print(my_tuple)  # 输出:(1, "hello", [1, 2, 3])

元组可以进行一些基本的操作,比如拼接、重复和长度计算。

python 复制代码
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
print(tuple1 + tuple2)  # 输出:(1, 2, 3, 4, 5, 6)
print(tuple1 * 3)  # 输出:(1, 2, 3, 1, 2, 3, 1, 2, 3)
print(len(tuple1))  # 输出:3

需要注意的是,如果元组中只有一个元素,需要在元素后面加上逗号,以区分它是一个元组而不是一个普通的数据。

python 复制代码
my_tuple = (1,)
print(type(my_tuple))  # 输出:<class 'tuple'>

总结来说,元组是不可变的数据结构,它可以包含不同类型的元素,并支持一些基本的操作。元组在一些场景下比列表更加适合,比如作为函数的返回值、用于保存不可变的数据等。

示例

以下是一些常用的元组操作示例:

python 复制代码
# 创建元组
my_tuple = (1, "apple", 3.14)

# 访问元组元素
print(my_tuple[0])  # 输出:1

# 切片
print(my_tuple[1:3])  # 输出:("apple", 3.14)

# 元素比较
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
print(tuple1 < tuple2)  # 输出:True

# 元组拼接
tuple3 = tuple1 + tuple2
print(tuple3)  # 输出:(1, 2, 3, 4, 5, 6)

# 元组重复
tuple4 = tuple1 * 3
print(tuple4)  # 输出:(1, 2, 3, 1, 2, 3, 1, 2, 3)

# 元组长度
print(len(my_tuple))  # 输出:3

总之,Python元组是不可变的有序集合,可以存储不同类型的元素,并支持多种操作。由于其不可变性质,元组常用于存储不可修改的数据集合。

四、字符串

字符串的介绍

Python中的字符串是一种数据类型,用于存储文本数据。字符串是由一系列字符组成的,可以包含字母、数字、符号等。

字符串是不可变的,这意味着一旦创建了一个字符串对象,就无法修改它的内容。但是,可以通过一些方法和操作来处理字符串,例如拼接、切片、替换等。

字符串的语法

在Python中,字符串的语法有以下几个特点:

  1. 定义字符串:字符串可以用单引号(')或双引号(")括起来,例如:
python 复制代码
my_string = 'Hello, World!'
another_string = "Python is awesome."

也可以使用三重引号括起来,用于表示多行字符串,例如:

python 复制代码
multi_line_string = '''This is a multi-line
string'''
  1. 字符串的访问:可以通过索引来访问字符串中的单个字符,索引从0开始,例如:
python 复制代码
my_string = 'Hello, World!'
print(my_string[0])  # 输出 'H'

也可以使用切片来访问字符串的子串,切片可以获取字符串中的一部分,例如:

python 复制代码
my_string = 'Hello, World!'
print(my_string[0:5])  # 输出 'Hello'
  1. 字符串的拼接:可以使用加号(+)将两个字符串拼接在一起,例如:
python 复制代码
string1 = 'Hello'
string2 = 'World!'
result = string1 + ' ' + string2
print(result)  # 输出 'Hello World!'

也可以使用join()方法来将多个字符串连接起来,例如:

python 复制代码
strings = ['Hello', 'World!']
result = ' '.join(strings)
print(result)  # 输出 'Hello World!'
  1. 字符串的修改:字符串是不可变的,不能直接修改字符串中的某个字符。但是可以通过一些方法和操作来生成一个新的字符串,例如:
python 复制代码
my_string = 'Hello, World!'
new_string = my_string.replace('Hello', 'Hi')
print(new_string)  # 输出 'Hi, World!'
  1. 字符串的格式化:可以使用占位符将变量的值插入到字符串中,常见的占位符有%s(字符串)、%d(整数)、%f(浮点数)等,例如:
python 复制代码
name = 'Alice'
age = 25
print('My name is %s and I am %d years old.' % (name, age))
  1. 字符串的常用方法:Python提供了丰富的字符串方法,例如split()(按指定分隔符拆分字符串)、strip()(去除字符串两端的空白字符)、upper()(将字符串转换为大写)、lower()(将字符串转换为小写)等,这些方法可以方便地对字符串进行操作和处理。

以上就是Python字符串的基本语法,对于字符串的操作和处理,可以根据具体需求选择合适的方法和操作来实现。

五、操作运算符

Python中的操作运算符用于执行各种数学操作和比较操作。以下是Python中常用的操作运算符:

算术运算符

  • +:相加
  • -:相减
  • *:相乘
  • /:相除
  • %:取模(取余)
  • **:幂运算
  • //:整除

    求整除数,计算两个整数相除的整数值如 5/2 = 2

赋值运算符

  • =:将右边的值赋给左边的变量
  • +=:加和赋值
  • -=:减和赋值
  • *=:乘和赋值
  • /=:除和赋值
  • %=:取模和赋值
  • **=:幂运算和赋值
  • //=:整除和赋值

比较运算符

  • ==:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于

逻辑运算符

  • and:逻辑与
  • or:逻辑或
  • not:逻辑非

位运算符

  • &:按位与
  • |:按位或
  • ^:按位异或
  • ~:按位取反
  • <<:左移
  • >>:右移

成员运算符

  • in:如果在序列中找到指定的值,返回True,否则返回False
  • not in:如果在序列中没有找到指定的值,返回True,否则返回False

身份运算符

  • is:判断两个变量是否引用同一个对象
  • is not:判断两个变量是否引用不同的对象

这些操作运算符可以用于不同类型的变量,如整数、浮点数、字符串、列表等。

六、if、else、elif条件语句

语句详解

在Python中,我们可以使用条件语句来根据不同的条件执行不同的代码块。主要的条件语句有三种:if语句、else语句和elif语句。

  • if语句用于判断一个条件是否为真,如果条件为真,则执行if语句后面缩进的代码块。if语句的基本语法如下:
python 复制代码
if 条件:
    # 代码块
  • else语句用于在条件不满足时执行另外一段代码块。else语句的基本语法如下:
python 复制代码
if 条件:
    # 代码块1
else:
    # 代码块2
  • elif语句用于在多个条件中选择满足的第一个条件执行相应的代码块。elif语句的基本语法如下:
python 复制代码
if 条件1:
    # 代码块1
elif 条件2:
    # 代码块2
else:
    # 代码块3

if-else语句中,当条件为真时执行代码块1,否则执行代码块2。在elif语句中,依次检查每个条件,当条件为真时执行相应的代码块,如果所有的条件都不满足,则执行else语句的代码块。

注意要点

需要注意的是,代码块的缩进对Python非常重要,它表示与ifelifelse语句相关的代码块。

在判断语句中,空列表、空元组、空字典、数字0、空字符串("")都会在判断条件中被自动转换为布尔值False

七、for循环语句

for循环是Python中的一个循环语句,用于遍历一个可迭代对象(如列表、元组、字符串、字典等)中的元素。

基本语法

for循环的基本语法如下:

python 复制代码
for 变量 in 可迭代对象:
    循环体代码块

其中,变量表示在循环过程中每次迭代取出的元素,可迭代对象表示要遍历的对象。

在循环体代码块中,可以使用变量来引用当前迭代的元素,执行所需的操作。

在循环执行时,for循环会依次将可迭代对象中的每个元素赋值给变量,并执行循环体代码块,直到可迭代对象中的所有元素都被遍历完。

range函数

for函数与range函数可以配套使用来循环遍历某个范围内的数字。

range函数用于生成一个整数序列,常见的使用方式有:

  1. range(stop):生成0stop-1 的整数序列。
  2. range(start, stop):生成 startstop-1 的整数序列。
  3. range(start, stop, step):生成 startstop-1 的整数序列,步长为 step

for函数用于循环遍历一个序列或者其他可迭代对象,常见的使用方式有:

python 复制代码
for variable in sequence:
    # 循环体

其中,variable 是变量名,用于接收 sequence 中的元素;sequence 是可迭代对象,如range生成的整数序列或者列表等;循环体是需要重复执行的代码块。

配合使用例子:

python 复制代码
for i in range(5):
    print(i)
# 输出: 0 1 2 3 4

for i in range(1, 6):
    print(i)
# 输出: 1 2 3 4 5

for i in range(1, 10, 2):
    print(i)
# 输出: 1 3 5 7 9

这样,可以使用for循环和range函数来实现对某个范围内的数字的遍历和操作。

示例

下面是一些for循环的例子:

  1. 遍历列表:
python 复制代码
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
    print(fruit)

输出结果:

python 复制代码
apple
banana
cherry
  1. 遍历字符串:
python 复制代码
message = 'Hello, world!'
for char in message:
    print(char)

输出结果:

python 复制代码
H
e
l
l
o
,
 
w
o
r
l
d
!
  1. 遍历字典:
python 复制代码
person = {'name': 'Alice', 'age': 30, 'gender': 'female'}
for key, value in person.items():
    print(key, value)

输出结果:

python 复制代码
name Alice
age 30
gender female

for循环中,还可以使用break语句提前结束循环,使用continue语句跳过当前迭代。

总之,for循环是Python中常用的循环语句,用于遍历可迭代对象中的元素,并执行相应的操作。

八、while循环语句

基本语法

在Python中,while循环语句用于重复执行一段代码,直到指定的条件不再满足。while循环的语法如下:

python 复制代码
while 条件:
    # 代码块

在执行while循环时,首先会对条件进行判断。如果条件为真,则执行代码块中的代码,并继续循环;如果条件为假,则跳出循环,执行循环之后的代码。

示例

下面是一个简单的示例,展示了如何使用while循环计算一个数字的阶乘:

python 复制代码
n = 5
result = 1
while n > 0:
    result *= n
    n -= 1
print(result)

在这个示例中,我们首先初始化变量n为5和变量result为1。然后,我们使用while循环来计算n的阶乘。在每次循环中,我们将n乘以result,并将n减1。最后,当n等于0时,循环终止,并打印出计算得到的结果。

需要注意的是,如果条件一直为真,while循环将会无限循环下去,导致程序陷入死循环。为了避免这种情况,我们需要在循环体内对条件进行修改,确保在某个时刻条件不再满足,从而跳出循环。

控制循环

还有一些与while循环相关的控制语句,可以用于控制循环的流程,一般来说,循环会不断执行代码块,直到某个条件满足为止。但是有时希望中断循环或者跳出某一次循环,这就需要使用break或者continue语句。

break语句可以直接跳出循环,结束循环。continue语句可以实现结束当前循环,直接进入下一次循环的功能。

python 复制代码
a = 10
while (a > 5):
    a = a - 1
    if(a % 2 == 0):
        continue
    print(a)

九、函数和类

函数

对于一个需要多次使用某个方法的程序,如果在程序中重复编写这个方法,将会导致程序可读性不高。在这种情况下,可以引入函数进行python编程。

函数是在一个程序中可以重复使用的代码块,并且这组代码块可以实现一个独立的功能。在定义好函数后,该函数就可以在程序中任意需要的位置被调用。

函数一般由函数名、参数、函数体、返回值组成,其中函数名和函数体是必须的。

基本语法

Python函数的定义格式为:

python 复制代码
def 函数名(参数列表):
    函数体
    [return 返回值]

其中,参数列表是函数的输入参数,可以有多个参数,参数之间用逗号分隔。函数体是函数执行的代码块,可以包含多条语句。return语句是可选的,用于指定函数的返回值。

下面是一些常用的函数定义和使用的示例:

无参数的函数定义和调用

python 复制代码
def hello():
    print("Hello, world!")

hello()  # 调用函数输出:Hello, world!

带参数的函数定义和调用

python 复制代码
def square(x):
    return x * x

result = square(5)  # 调用函数,传入参数5,返回值为25
print(result)  # 输出:25

带默认参数的函数定义和调用

python 复制代码
def power(base, exp=2):
    return base ** exp

result1 = power(2)  # 使用默认参数,返回值为4
result2 = power(2, 3)  # 不使用默认参数,返回值为8
print(result1, result2)  # 输出:4 8

可变参数的函数定义和调用

python 复制代码
def average(*numbers):
    if len(numbers) == 0:
        return 0
    return sum(numbers) / len(numbers)

result1 = average(1, 2, 3)  # 参数个数不固定,返回值为2.0
result2 = average()  # 无参数,返回值为0
print(result1, result2)  # 输出:2.0 0

关键字参数的函数定义和调用

python 复制代码
def student_info(name, age, **kwargs):
    print("姓名:", name)
    print("年龄:", age)
    for key, value in kwargs.items():
        print(key, ":", value)

student_info("Tom", 20, major="Computer Science", grade="A")  # 输出:姓名: Tom 年龄: 20 major: Computer Science grade: A

这些示例涵盖了函数的多种用法,包括无参数函数、带参数函数、默认参数函数、可变参数函数和关键字参数函数等。通过灵活的函数定义和调用,可以根据需求编写出更加简洁和高效的代码。

在Python中,类是一种自定义的数据类型,它允许我们定义自己的对象。

类是一种包含属性(变量)和方法(函数)的抽象。通过类,我们可以创建多个相似的对象,这些对象共享相同的属性和方法。

定义一个类

要定义一个类,使用关键字class后跟类名。类名通常使用CamelCase命名规则。

python 复制代码
class MyClass:
    pass

创建一个对象

要创建一个类的实例,可以通过调用类名后加括号的方式来实现。

python 复制代码
my_object = MyClass()

属性

类的属性是指属于类的变量。它们用于存储对象的状态。类的属性可以在类的内部和外部进行访问和修改。

python 复制代码
class MyClass:
    my_property = "Hello"

print(MyClass.my_property)  # "Hello"

my_object = MyClass()
print(my_object.my_property)  # "Hello"

my_object.my_property = "World"
print(my_object.my_property)  # "World"

方法

类的方法是指属于类的函数。它们用于定义对象的行为。方法可以访问和操作对象的属性。

python 复制代码
class MyClass:
    def my_method(self):
        print("Hello")

my_object = MyClass()
my_object.my_method()  # "Hello"

构造函数和析构函数

构造函数是一种特殊的方法,用于在创建对象时进行初始化操作。构造函数的名称是__init__

python 复制代码
class MyClass:
    def __init__(self):
        print("Object created")

my_object = MyClass()  # "Object created"

析构函数是一种特殊的方法,用于在对象被销毁时执行清理操作。析构函数的名称是__del__

python 复制代码
class MyClass:
    def __del__(self):
        print("Object deleted")

my_object = MyClass()  
del my_object  # "Object deleted"

继承

继承是一种创建新类的机制,它可以继承现有类的属性和方法。通过继承,我们可以创建更具体的类,这些类继承了父类的特性并提供了自己的特定功能。

python 复制代码
class Animal:
    def eat(self):
        print("Eating")

class Dog(Animal):
    def bark(self):
        print("Barking")

my_dog = Dog()
my_dog.eat()  # "Eating"
my_dog.bark()  # "Barking"

多态

多态是指同一个方法在不同的类中可以有不同的实现。通过多态,我们可以在不改变方法的名称和调用方式的情况下,根据对象的不同类型执行不同的代码。

python 复制代码
class Animal:
    def make_sound(self):
        print("Animal sound")

class Dog(Animal):
    def make_sound(self):
        print("Woof")

class Cat(Animal):
    def make_sound(self):
        print("Meow")

def sound_animal(animal):
    animal.make_sound()

my_animal = Animal()
my_dog = Dog()
my_cat = Cat()

sound_animal(my_animal)  # "Animal sound"
sound_animal(my_dog)  # "Woof"
sound_animal(my_cat)  # "Meow"

这是Python中类的一些基本概念。通过类,我们可以封装数据和行为,便于组织和重用代码。类是面向对象编程的核心概念之一,可以大大提高代码的可读性和可维护性。

示例

python 复制代码
#编写水果类
class Fruit():
    def __init__(self,name,color):
        self.name = name
        self.color = color
    def pickup(self,season):
        print("{}在{}季节收获".format(self.name,season))
Apple = Fruit("apple","red")
Apple.pickup("秋天")

十、模块和包

模块是一个相对笼统的概念,可以将其看成包含变量或一组方法的python文件对象,或者多个python文件对象组成的目录。有了模块,一个python文件中的方法或者变量就可以被外部访问使用,而不仅仅局限于文件内部使用。因为有了模块,python对象的抽象和复用更为通用,而不同于模块放在一起就构成了一个package包。

python如此流行,就是因为在python社区中有各种各样的包可以下载并直接使用,这些包可以用于完成数据处理、网络爬虫、网站建设、嵌入式编程、多媒体处理、人工智能等多种任务。

在Python中,模块和包是组织和管理代码的重要概念。它们允许我们将相关的代码组合在一起,并且可以在不同的项目中重复使用。

模块

模块是包含Python代码的文件,其扩展名为.py。它可以包含函数、类、变量、常量等代码。可以使用import语句在其他代码中引入和使用模块。

创建模块

要创建一个模块,只需创建一个以.py结尾的文件,并在文件中编写代码。

例如,我们可以创建一个名为my_module.py的模块,其中包含一个简单的函数:

python 复制代码
# my_module.py

def greeting(name):
    print("Hello, " + name)

示例

下面介绍一个使用random模块产生一组随机数,并存入列表的例子来展示模块的使用方法

使用模块

要使用模块中的函数,可以使用import语句将模块引入到代码中:

python 复制代码
import my_module

my_module.greeting("Alice")  # "Hello, Alice"

也可以使用from module_name import function_name的方式导入特定的函数,而不是整个模块:

python 复制代码
from my_module import greeting

greeting("Alice")  # "Hello, Alice"

包是包含模块的目录。一个包通常由多个模块组成,并且可以有多个级别的子包。包允许我们更好地组织和管理代码。

创建包

要创建一个包,只需创建一个目录,并在目录中包含一个名为__init__.py的空文件。这个文件告诉Python这个目录是一个包。

python 复制代码
my_package/
    __init__.py
    module1.py
    module2.py

使用包

使用包中的模块时,可以使用import语句指定包名和模块名来引入模块:

python 复制代码
import my_package.module1

my_package.module1.function()  # 调用包中的模块中的函数

也可以使用from package_name import module_name的方式导入特定的模块:

python 复制代码
from my_package import module1

module1.function()  # 调用包中的模块中的函数

在导入包的情况下,可以在包中的__init__.py文件中定义一个__all__列表,用于指定可以从包中导入的模块列表。

python 复制代码
# my_package/__init__.py

__all__ = ['module1', 'module2']

然后可以使用from package_name import *语句导入指定在__all__列表中的模块:

python 复制代码
from my_package import *

module1.function()  # 调用包中的模块中的函数
module2.function()  # 调用包中的模块中的函数

这是Python中模块和包的一些基本概念。通过使用模块和包,我们可以更好地组织和管理代码,并且可以在不同的项目中重复使用。这提高了代码的可重用性和可维护性,同时使代码更加模块化。


相关推荐
黑叶白树几秒前
简单的签到程序 python笔记
笔记·python
@小博的博客3 分钟前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
Shy96041814 分钟前
Bert完形填空
python·深度学习·bert
上海_彭彭25 分钟前
【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
开发语言·python·sql·测试工具·element
3345543233 分钟前
element动态表头合并表格
开发语言·javascript·ecmascript
沈询-阿里37 分钟前
java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl
java·开发语言
zhongcx0141 分钟前
使用Python查找大文件的实用脚本
python
残月只会敲键盘1 小时前
面相小白的php反序列化漏洞原理剖析
开发语言·php
ac-er88881 小时前
PHP弱类型安全问题
开发语言·安全·php
ac-er88881 小时前
PHP网络爬虫常见的反爬策略
开发语言·爬虫·php