本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Python是广受欢迎的高级编程语言,特别因其易读性、简洁语法和丰富功能。本课程,”ComTrade-CODE-Python-Basic”,是专为初学者设计的Python基础课程,旨在教授Python编程的必要知识和技能。课程内容包括Python的安装与配置、基础语法、运算符与表达式、流程控制、函数与模块的使用、字符串、列表、元组、字典、集合的操作、文件处理、异常处理以及面向对象编程概念。通过理论讲解与实战项目相结合,如数据分析、网页爬虫和游戏开发,学习者将构建起扎实的Python编程基础,并为进一步学习高级主题奠定基础。
Python基础

1. Python安装与环境配置

1.1 安装Python解释器

在开始编写Python代码之前,首先需要安装Python解释器。Python可以从官方网站https://www.python.org/downloads/下载。安装时,请确保选择与您的操作系统兼容的版本,并且勾选“Add Python to PATH”选项,这样可以在命令行中直接运行Python。

1.2 创建虚拟环境

为了避免项目间的依赖冲突,建议使用虚拟环境管理不同项目的依赖。可以使用Python内置的 venv 模块来创建一个虚拟环境:

# 创建虚拟环境
python -m venv myenv

# 激活虚拟环境(Windows)
myenv\Scripts\activate

# 激活虚拟环境(Unix/Linux/MacOS)
source myenv/bin/activate

1.3 配置开发环境

安装好Python解释器和设置好虚拟环境后,你需要安装一个代码编辑器或集成开发环境(IDE)。目前流行的Python IDE有PyCharm, Visual Studio Code等。安装IDE后,可以通过它创建新的项目和文件,编写和运行Python代码。例如,在PyCharm中,可以设置解释器路径来选择虚拟环境中的Python解释器,从而配置好你的开发环境。

确保安装了 pip ,Python包管理工具,之后就可以开始安装需要的第三方库了。

# 更新pip到最新版本
pip install --upgrade pip

以上步骤完成后,你的Python环境就搭建好了。接下来,可以开始编写你的第一个Python程序了。

2. Python语法基础与实践

2.1 Python基本语法

2.1.1 变量与数据类型

Python中的变量不需要显式声明类型,它们的类型由分配给它们的值决定。Python中的数据类型包括但不限于:整型(int)、浮点型(float)、字符串(str)、列表(list)、元组(tuple)、字典(dict)以及集合(set)等。

# 示例:变量定义和数据类型分配
age = 30  # 整型
height = 5.11  # 浮点型
name = "Alice"  # 字符串
fruits = ["apple", "banana", "cherry"]  # 列表

在Python中,变量命名需要遵循一定的规则,比如不能以数字开头,不能使用Python的保留关键字等。理解数据类型是进行有效编程的基础。

2.1.2 Python中的注释和代码规范

注释在Python中以井号(#)开头,用于解释代码的功能或目的,不会被Python解释器执行。代码规范则是为了提高代码的可读性和一致性,通常包括变量命名规则、缩进规则、空格使用等。

# 示例:使用注释说明代码功能
# 这是一个注释,解释以下代码的功能

def greet(name):
    print(f"Hello, {name}!")  # 打印问候语

# 遵循PEP 8代码规范,Python的官方风格指南

PEP 8代码规范建议代码遵循一定缩进风格(通常是4个空格),在操作符两侧添加空格等,以确保代码清晰。

2.2 Python操作符和表达式

2.2.1 算术运算符和赋值运算符

Python中的算术运算符包括加(+)、减(-)、乘( )、除(/)、整除(//)、求余(%)和乘方( *)。

# 示例:算术运算符和赋值运算符的使用
a = 10
b = 3

# 算术运算
sum = a + b  # 加法
difference = a - b  # 减法
product = a * b  # 乘法
quotient = a / b  # 除法
floor_division = a // b  # 整除
remainder = a % b  # 求余
power = a ** b  # 乘方

# 赋值运算
a += b  # 等同于 a = a + b
a *= 2  # 等同于 a = a * 2

2.2.2 比较运算符和逻辑运算符

比较运算符用于比较两个值,返回布尔值True或False,常见的比较运算符有等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。

# 示例:比较运算符的使用
x = 10
y = 20

result = x == y  # 检查x是否等于y
result = x != y  # 检查x是否不等于y
result = x > y   # 检查x是否大于y

逻辑运算符用于连接多个条件语句,主要有逻辑与(and)、逻辑或(or)和逻辑非(not)。

# 示例:逻辑运算符的使用
a = True
b = False

result = a and b  # a和b都为True时,结果为True
result = a or b   # a和b只要有一个为True,结果就为True
result = not a    # a为False时,结果为True

2.3 Python的输入输出

2.3.1 print()函数的高级用法

print() 是Python中的一个内置函数,用于输出信息到控制台。它提供了很多高级特性,比如格式化输出、end参数和sep参数。

# 示例:print()函数的高级用法
name = "Alice"
age = 30

print(f"Name: {name}, Age: {age}")  # 使用格式化字符串

# 使用end参数指定print输出结束后的字符,默认是换行符
print("Hello", end=" ")
print("World")

# 使用sep参数指定print输出多个值时的分隔符,默认是空格
print("Hello", "World", "Python", sep=" | ")

2.3.2 input()函数的使用和注意事项

input() 函数用于获取用户输入。它会等待用户输入,并在输入结束后返回输入的内容。这个函数对于创建交互式程序非常有用。

# 示例:input()函数的使用
user_input = input("Enter something: ")

print(f"You entered: {user_input}")

需要注意的是, input() 函数返回的总是字符串类型。如果需要对输入值进行数值运算,需要先进行类型转换。

# 示例:将输入值转换为整数
try:
    number = int(input("Enter an integer: "))
except ValueError:
    print("That was not an integer")

在使用 input() 时,需要考虑异常处理,避免程序因非法输入而中断。使用try…except语句可以捕获并处理输入转换过程中的异常。

在下一章节中,我们将深入探讨Python流程控制的细节,包括条件控制和循环控制语句。这些控制结构是编写复杂程序的基石,它们允许程序员控制程序的执行流程,实现更加灵活和强大的逻辑处理。

3. Python流程控制深入解析

3.1 条件控制语句

3.1.1 if、elif、else语句的细节与陷阱

条件控制语句是编程中实现决策逻辑的重要组成部分。在Python中, if 语句用于基于条件判断来执行不同的代码块。 elif else 关键字分别用于处理多条件分支和默认行为。理解它们的细节和潜在陷阱对于编写清晰和高效的代码至关重要。

下面是一个简单的例子,展示了 if elif else 语句的基本用法:

# 条件控制语句示例
age = 20

if age < 18:
    print("You are a minor.")
elif age >= 18 and age < 65:
    print("You are an adult.")
else:
    print("You are a senior.")

在这个例子中,如果 age 小于18,则输出”You are a minor.”;如果 age 在18到65之间,则输出”You are an adult.”;否则,输出”You are a senior.”。

潜在陷阱及优化建议:

  1. 避免深层嵌套: 过多的嵌套会使代码难以阅读和维护。尽可能使用辅助函数或重构代码以降低复杂度。

  2. 正确使用布尔运算符: 在使用 elif 条件时,确保布尔表达式正确无误。例如:

python # 错误的用法,可能导致逻辑错误 if age >= 18 and < 65: print("You are an adult.") # 正确的用法 if age >= 18 and age < 65: print("You are an adult.")

  1. 条件表达式简写: 在Python中,可以使用条件表达式(三元运算符)简化 if else 的使用。例如:

python # 简化的条件表达式 result = "Adult" if age >= 18 and age < 65 else "Non-adult"

3.1.2 嵌套条件语句的应用场景

嵌套条件语句涉及到在一个 if elif else 代码块内再包含一个或多个条件控制语句。这种结构在处理复杂逻辑时非常有用,但也容易导致代码难以理解。

下面是一个嵌套条件语句的例子:

# 嵌套条件语句示例
score = 85

if score >= 90:
    print("Grade: A")
else:
    if score >= 80:
        print("Grade: B")
    else:
        if score >= 70:
            print("Grade: C")
        else:
            print("Grade: D or lower")

在这个例子中,根据 score 变量的值,输出对应的评分等级。

优化建议:

  1. 使用辅助函数或类: 当嵌套条件语句过于复杂时,考虑将其分解为一个或多个辅助函数,或是使用类封装相关的逻辑。

  2. 逻辑重构: 重新审视逻辑,看是否可以通过其他逻辑结构简化嵌套,如使用字典映射评分等级。

  3. 避免深层嵌套: 尽管嵌套条件语句有时不可避免,但深层嵌套(如超过三层)通常应避免,除非逻辑确实要求如此。

3.2 循环控制语句

3.2.1 for循环的基本结构与实例

for 循环在Python中通常用于迭代序列(如列表、元组、字符串)或任何可迭代对象。它提供了一种简洁的方式来遍历元素并执行操作。

下面是一个简单的 for 循环实例,遍历一个列表并打印每个元素:

# for循环实例
fruits = ['apple', 'banana', 'cherry']

for fruit in fruits:
    print(fruit)

在这个例子中, for 循环会依次取出 fruits 列表中的每个元素,并将其存储在变量 fruit 中,然后执行循环体内的 print 函数。

3.2.2 while循环与无限循环的正确使用

while 循环是另一种控制结构,它在给定条件为真时重复执行代码块。与 for 循环不同, while 循环不直接遍历序列或可迭代对象,而是依赖于条件表达式。

下面是一个使用 while 循环的实例:

# while循环实例
counter = 0
while counter < 5:
    print(counter)
    counter += 1

在这个例子中,只要 counter 变量的值小于5,循环就会继续执行,每次循环都会打印出当前的 counter 值,并将 counter 增加1。

无限循环的正确使用:

无限循环( while True )可以在特定情况下使用,例如在持续运行的服务器程序中。为了防止程序完全失控,通常会在循环体内加入 break 语句来退出循环。

# 正确使用无限循环的例子
import time

while True:
    print("This is a loop")
    time.sleep(1)  # 暂停一秒
    if some_condition:
        break  # 如果满足某个条件则退出循环

在这个例子中,程序将持续打印消息并每秒暂停一次,直到 some_condition 变为真。

3.2.3 循环控制语句的高级技巧:break和continue

break continue 是Python中控制循环流程的两个重要语句:

  • break 语句用于立即退出循环,不再执行循环体中剩余的代码。
  • continue 语句用于跳过当前循环的剩余部分,并开始下一次循环迭代。

下面是一个使用 break continue 的例子:

# 使用break和continue
for i in range(10):
    if i == 3:
        continue  # 跳过打印3
    elif i == 7:
        break     # 在到达7时退出循环
    print(i)

在这个例子中,当 i 的值为3时, continue 语句会使得循环跳过打印 3 ,而当 i 的值为7时, break 语句会使得循环立即退出。

高级技巧的运用:

  1. 使用 break 提前退出: 当满足某个特定条件时,使用 break 可以避免不必要的迭代。

  2. 使用 continue 优化性能: 在循环体中进行一些复杂的判断,如果当前迭代不满足某些条件,可以使用 continue 跳过后面的处理,提高代码的执行效率。

通过这些高级技巧,开发者可以编写出更加高效和可读性更强的循环控制代码。

4. Python函数与模块的应用

4.1 函数的定义与调用

4.1.1 函数参数的传递和默认值

在Python中,函数是组织代码并提高代码复用性的核心构建块。参数是函数定义的一部分,它们允许函数在执行时接收输入数据。了解如何传递参数和为参数设置默认值是编写高效和灵活函数的关键。

当你定义一个函数时,你可以指定参数名称来接收传入的值:

def greet(name):
    print(f"Hello, {name}!")

在这个例子中, name 是函数 greet 的参数。调用此函数时,你必须提供一个字符串值:

greet("Alice")

在Python中,有几种类型的参数,其中最常见的有:

  • 位置参数
  • 关键字参数
  • 默认参数
  • 可变参数

位置参数 需要按照函数定义时的顺序传递。 关键字参数 允许调用者通过指定参数名来传递参数,这有助于提高代码的可读性,并且可以不按顺序传递参数。 默认参数 允许在定义函数时为参数指定默认值,如果调用者没有提供该参数的值,则使用默认值。 可变参数 可以让我们接收不定数量的参数,它们通常用星号(*)表示。

def personal_greet(first_name, last_name, greeting="Hello"):
    print(f"{greeting}, {first_name} {last_name}!")

personal_greet("Bob", "Smith")               # 使用默认问候语
personal_greet("Bob", "Smith", greeting="Hi") # 明确指定问候语

当使用默认参数时,需要注意不要在定义函数时给参数赋予可变类型(如列表、字典等)的默认值。这是因为每次调用函数时,如果没有指定该参数,就会使用这个默认值的引用,可能会导致意外的副作用。

参数的传递机制 也是很重要的。在Python中,参数是通过引用传递的。这意味着如果传递给函数的是一个可变对象(比如列表),那么函数内部对这个对象的修改将会影响原始对象。

def append_name(names):
    names.append("Diana")

names = ["Alice", "Bob"]
append_name(names)
print(names)  # 输出: ['Alice', 'Bob', 'Diana']

理解参数的传递方式对于避免不希望发生的副作用是非常重要的。确保在函数内部不要对全局可变对象进行修改,或者在函数外部清晰地表明这一点,避免调用者误用。

4.1.2 返回值的使用和多返回值的技巧

函数可以执行操作并返回结果。在Python中,使用 return 语句来返回值。如果函数执行了 return 语句,它会立即结束,并将 return 后的表达式的值返回给调用者。

def square(number):
    return number * number

result = square(4)
print(result)  # 输出: 16

如果一个函数没有明确的 return 语句,它默认返回 None return 语句不仅可以用在函数的末尾,还可以用在函数的任何位置。

def check_positive(number):
    if number > 0:
        return True
    else:
        return False

Python允许函数返回多个值,它实际上是返回了一个元组,但你可以像处理单个返回值一样处理这些返回值。

def min_max(numbers):
    return min(numbers), max(numbers)

minimum, maximum = min_max([1, 2, 3, 4, 5])
print(f"Minimum: {minimum}, Maximum: {maximum}")  # 输出: Minimum: 1, Maximum: 5

返回多个值可以使得函数更加灵活和强大。例如,在分组数据时,你可以选择同时获取数据的统计描述,如最小值、最大值、平均值等。

理解返回值在Python中的行为有助于编写清晰、高效和易于维护的代码。使用返回值时,考虑到返回结果的类型和内容,以便调用者能够有效地处理函数返回的数据。在设计API时,明确函数的返回值可以提高代码的可读性和可用性。

5. Python数据结构深入应用

5.1 字符串的高级操作

字符串的格式化与替换

在Python中,字符串的格式化是一个常见的需求,它允许我们创建一个格式化的字符串,其中包含变量和表达式的值。从Python 3.6开始,f-string提供了一种非常方便的格式化方法,它通过在字符串前加上字母 f 并把表达式放在花括号中来实现。例如:

name = "Alice"
age = 25
message = f"My name is {name} and I am {age} years old."
print(message)

执行上述代码,输出将是:”My name is Alice and I am 25 years old.”。f-string不仅语法简洁,而且执行效率也非常高。

另一个常用的方法是 str.format() 函数,它允许我们为字符串中的占位符指定具体的格式化方式。例如:

name = "Bob"
age = 30
message = "My name is {} and I am {:d} years old.".format(name, age)
print(message)

在这个例子中, {:d} 指定了 age 为整数类型进行格式化。

除了上述提到的两种方法,Python还支持老式的 % 格式化和 str.format() 的升级版,即 str.format_map() 。这些方法各有优势,但在现代Python编程中,f-string因其简洁和高效而广受欢迎。

字符串处理的经典案例分析

当涉及到处理大量文本数据时,字符串操作变得尤其重要。举个例子,假设我们要从一个文本文件中提取所有电子邮件地址。为此,我们可以使用Python的字符串方法 find() in 关键字来定位电子邮件地址的模式。

import re

text = """Name: John Doe
Email: john.doe@example.com
Phone: 123-456-7890
Name: Jane Smith
Email: jane.smith@example.net"""

for email in re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', text):
    print(email)

此代码使用正则表达式搜索匹配电子邮件地址,并打印出所有找到的地址。正则表达式是一种强大的文本处理工具,能够处理复杂的字符串匹配任务。

字符串处理的另一个经典案例是字符串加密。Python的 hashlib 模块提供了多种加密算法的实现。以MD5加密为例:

import hashlib

password = "securepassword"
hash_object = hashlib.md5(password.encode())
hex_dig = hash_object.hexdigest()
print(hex_dig)

上述代码将输出密码的MD5哈希值。这是保护密码安全的一种常见做法,但需要注意,MD5已经不再被认为是安全的加密方法,对于更安全的需求,可以考虑使用SHA-256等其他哈希函数。

5.2 列表与元组的进阶技巧

列表推导式与元组的不可变性

列表推导式是Python中一种强大的构造列表的表达式,可以用来替代循环结构。列表推导式的基本语法是 [expression for item in iterable] ,其中 expression 通常是将对 item 应用某个函数或表达式的结果。例如:

squares = [x**2 for x in range(10)]
print(squares)

执行上述代码,我们得到一个包含0到9每个数平方的列表。列表推导式不仅使代码更简洁,而且在很多情况下执行得更快。

另一方面,元组是不可变的,意味着一旦创建,你就不能改变元组中的元素。这使得元组成为定义常量集合的绝佳选择。Python的这一特性在某些情况下可以提高效率,因为不可变的数据结构通常比可变的要快。例如:

coordinates = (10, 20)
# coordinates[0] = 30  # 这一行将会抛出TypeError,因为不能修改元组中的元素

我们不能修改元组中的元素,尝试这样做会引发TypeError。

列表与元组的常见算法实现

在Python中,列表与元组常用于实现各种算法。以排序算法为例,Python内置了 sort() 方法和 sorted() 函数来对列表进行排序。这里展示了如何使用它们:

fruits = ["banana", "apple", "pear"]
fruits.sort()  # 对原列表进行排序
print(fruits)

new_fruits = sorted(fruits)  # 返回一个新列表,原列表不变
print(new_fruits)

除了内置排序方法,我们可以使用不同的排序算法来提升性能或满足特定需求。例如,快速排序是一种高效的排序算法,适用于大数据集:

def quicksort(lst):
    if len(lst) <= 1:
        return lst
    pivot = lst[len(lst) // 2]
    left = [x for x in lst if x < pivot]
    middle = [x for x in lst if x == pivot]
    right = [x for x in lst if x > pivot]
    return quicksort(left) + middle + quicksort(right)

unsorted_list = [3, 6, 8, 10, 1, 2, 1]
print(quicksort(unsorted_list))

这段代码实现了快速排序算法,并对一个未排序的列表进行排序。注意,这里使用了列表推导式来方便地创建子列表。

5.3 字典与集合的操作与应用

字典的键值对操作和数据结构

字典是Python中另一种重要的数据结构,由键值对组成,每个键都是唯一的。字典提供了非常高效的数据访问和存储方式。我们可以使用 dict() 构造函数来创建字典,或者使用大括号 {} 直接定义。

phone_book = {"John": "555-1234", "Jane": "555-5678"}
print(phone_book["John"])

输出结果将是”555-1234”,展示了如何通过键访问字典中的值。

除了基本操作,我们还可以使用各种方法来处理字典。例如, keys() , values() , 和 items() 方法,分别用于获取字典的键、值和键值对。这些方法返回的是视图对象,可以转换为列表使用。

集合的特性和相关算法问题

集合是无序的、不重复的元素集。集合是一个极好的数据结构,用于去除重复项和执行集合运算,如并集、交集、差集等。

集合可以通过大括号 {} 或者 set() 构造函数创建:

fruits = {"apple", "banana", "cherry"}
numbers = set([1, 2, 3, 4, 4])
print(fruits | numbers)  # 并集
print(fruits & numbers)  # 交集
print(fruits - numbers)  # 差集

输出将会是两个集合的并集、交集和差集。这展示了如何使用集合来执行基本的集合运算。

在处理更复杂的算法问题时,集合也是非常有用的。例如,解决两个集合的子集问题时,我们可以使用集合的差集操作:

A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
print(A - B)  # A中不包含在B中的元素

这将输出A中不包含在B中的元素,即 {1, 2, 3}

在表格、流程图和代码的展示中,我们不仅展示了字符串、列表、元组、字典和集合的具体用法,还深入探讨了它们在处理实际问题时的高级技巧。通过这些内容,我们能够更好地理解Python中这些基础数据结构的强大功能和灵活性。

6. Python文件操作与面向对象编程

在Python中,文件操作和面向对象编程(OOP)是两个极其重要的概念,它们在日常工作中的应用相当广泛。本章节将带领读者深入文件操作的世界,并探讨面向对象编程的美妙之处。

6.1 文件与目录的处理

在这一小节中,我们将讨论如何使用Python进行文件和目录的处理,包括读写文件、管理目录结构等。

6.1.1 文件的读写操作与上下文管理器

Python提供了简单且强大的文件读写接口,支持文本模式和二进制模式。

文本模式读写

文本模式是最常用的文件读写方式。下面的代码示例展示了如何打开文件、读取内容、追加内容、写入内容,并最后正确关闭文件。

# 打开文件,读取并打印内容
with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()
    print(content)

# 打开文件,追加内容
with open('example.txt', 'a', encoding='utf-8') as file:
    file.write("\n新追加的文本")

# 打开文件,写入内容,并清空原有内容
with open('example.txt', 'w', encoding='utf-8') as file:
    file.write("新的文本内容")

使用 with 语句可以确保文件正确关闭,即使在写入操作中发生异常也是如此。

上下文管理器的实现

上下文管理器是实现文件操作中 with 语句的关键,它通过实现 __enter__() __exit__() 方法定义了 with 块的操作。

class ManagedFile:
    def __init__(self, filename):
        self.filename = filename
    def __enter__(self):
        self.file = open(self.filename, 'w')
        return self.file
    def __exit__(self, exc_type, exc_val, exc_tb):
        if self.file:
            self.file.close()

with ManagedFile('example.txt') as file:
    file.write("使用上下文管理器写入文本")

在这个例子中, ManagedFile 类通过上下文管理器协议,在进入 with 块时打开文件,在退出 with 块时关闭文件。

二进制模式读写

对于非文本文件,如图片、音频、视频等,Python提供了二进制模式的文件读写功能。

# 二进制模式写入文件
with open('example.bin', 'wb') as file:
    data = b'\x00\x01\x02'
    file.write(data)

# 二进制模式读取文件
with open('example.bin', 'rb') as file:
    file_data = file.read()
    print(file_data)

6.1.2 目录的创建、遍历与删除

Python的 os pathlib 模块提供了丰富的接口用于目录操作。

创建和删除目录

创建和删除目录的代码示例如下:

import os

# 创建目录
os.mkdir('new_directory')

# 删除目录
os.rmdir('empty_directory')

os.mkdir os.rmdir 分别用于创建和删除空目录。对于非空目录,需要先删除其中的内容才能删除目录。

遍历目录

遍历目录可以使用 os.listdir() os.walk() ,而 pathlib 模块则提供了更为直观的目录遍历接口。

# 使用os模块遍历目录
for filename in os.listdir('.'):
    print(filename)

# 使用pathlib模块遍历目录
from pathlib import Path
for file in Path('.').iterdir():
    print(file.name)

pathlib.Path 对象提供了 .iterdir() 方法,可以迭代返回目录中的文件和子目录。

6.2 面向对象编程基础

面向对象编程(OOP)是一种编程范式,它使用对象和类来组织代码,这些对象和类模拟现实世界中的概念。

6.2.1 类与对象的创建和使用

在Python中,类是创建对象的模板,对象是类的实例。

定义类

一个简单的类定义如下:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")
创建对象

使用类可以创建对象:

person = Person("Alice", 30)
person.greet()  # 输出: Hello, my name is Alice and I am 30 years old.
类属性和实例属性

类属性是定义在类中的属性,而实例属性是定义在实例(对象)中的属性。

# 类属性
Person.count = 0

# 实例属性
person = Person("Bob", 25)
print(person.age)  # 输出: 25

6.3 面向对象编程高级特性

面向对象编程的高级特性扩展了类的功能,提供了更多的编程灵活性。

6.3.1 类属性和实例属性的区别

类属性与所有实例共享,而实例属性属于某个特定实例。

class Car:
    brand = "Unknown"  # 类属性

    def __init__(self, model):
        self.model = model  # 实例属性

car1 = Car("Toyota")
car2 = Car("Ford")

print(car1.brand)  # 输出: Unknown
print(car2.brand)  # 输出: Unknown
print(car1.model)  # 输出: Toyota
print(car2.model)  # 输出: Ford

6.3.2 类方法、静态方法和特殊方法的理解

Python类中除了实例方法外,还有类方法和静态方法,这些通过装饰器来区分。

类方法

类方法通过 @classmethod 装饰器定义,第一个参数为类本身(通常命名为 cls )。

class Date:
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

    @classmethod
    def from_string(cls, date_string):
        year, month, day = map(int, date_string.split('-'))
        return cls(year, month, day)

date = Date.from_string('2023-01-01')
print(date.year)  # 输出: 2023
静态方法

静态方法通过 @staticmethod 装饰器定义,无需强制传递类或实例引用。

class Calculator:
    @staticmethod
    def add(x, y):
        return x + y

result = Calculator.add(10, 5)
print(result)  # 输出: 15
特殊方法(魔术方法)

特殊方法以双下划线开头和结尾,如 __init__ __str__ 。它们提供了一些特殊功能,例如对象初始化、对象字符串表示等。

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return f"Point({self.x}, {self.y})"

point = Point(1, 2)
print(point)  # 输出: Point(1, 2)

通过学习Python文件操作和面向对象编程的高级特性,我们不仅可以高效地处理文件和目录,还能用面向对象的方式来设计更加模块化和可复用的代码。在下一章节,我们将进一步深入异常处理和实战项目构建,将所学知识运用到实际开发中。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Python是广受欢迎的高级编程语言,特别因其易读性、简洁语法和丰富功能。本课程,”ComTrade-CODE-Python-Basic”,是专为初学者设计的Python基础课程,旨在教授Python编程的必要知识和技能。课程内容包括Python的安装与配置、基础语法、运算符与表达式、流程控制、函数与模块的使用、字符串、列表、元组、字典、集合的操作、文件处理、异常处理以及面向对象编程概念。通过理论讲解与实战项目相结合,如数据分析、网页爬虫和游戏开发,学习者将构建起扎实的Python编程基础,并为进一步学习高级主题奠定基础。


本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐