Python3 学习笔记5-推导式、迭代器和生成器、函数、装饰器、数据结构、模块、输入输出和文件操作方法

目录

一、推导式:

(1)列表推导式

(2)字典推导式:

(3)集合推导式:

(4)生成器表达式:

(5)总结:

二、 迭代器和生成器:

(1)迭代器(Iterator):

(2)迭代器的创建:

(3)示例代码:

(4)生成器(Generator):

(5)生成器的优势:

(6)示例代码:

(7)生成器表达式:

(8)示例代码:

(9)总结:

三、 函数:

(1)定义函数:

(2)基本语法:

(3)示例代码:

(4)参数:

(5)示例代码:

(6)不定长参数:

(7)示例代码:

(8)匿名函数(Lambda函数):

(9)参数传递

(10)强制位置参数:

(11)总结:

 四、装饰器:

(1)装饰器的基本用法:

(2)带参数的装饰器:

(3)类装饰器:

(4)装饰器的应用场景:

(5)示例:简单的日志记录装饰器:

五、数据结构: 

(1)列表(List):

(2)元组(Tuple):

(3)集合(Set):

(4)字典(Dictionary):

(5)列表推导式(List Comprehension):

(6)del语句:

(7)遍历技巧:

六、模块 :

(1)模块的概念:

(2)导入模块:

(3)模块的搜索路径:

(4)模块的导入机制:

(5)模块的命名空间:

(6)__name__属性:

(7)dir()函数:

(8)包的概念:

(9)包的结构:

(10)导入包中的模块:

(11)相对导入:

(12)__all__列表:

(13)包的__path__属性:

(14)标准库和第三方库:

(15)总结:

 七、输入和输出:

(1)输出数据:

(2)print() 函数:

(3)文件的 write() 方法:

(4)输入数据:

(5)文件读写:

(6)写入文件:

(7)pickle 模块:

 八、文件操作方法:

(1)open() 函数:

(2)文件对象的方法:

(3)使用 with 语句管理文件:

(4)文件读写操作示例:


一、推导式:

Python 推导式是一种非常强大且简洁的构建数据结构的方法,它允许你使用一行代码来创建列表、字典、集合和生成器。推导式不仅代码量少,而且执行效率高,是 Python 编程中常用的特性之一。

(1)列表推导式

列表推导式用于创建列表,格式为:

[expression for item in iterable if condition]
  • expression 是对每个元素进行的操作。
  • item 是从 iterable 中依次取出的元素。
  • iterable 是一个序列。
  • condition 是一个可选的条件表达式。

示例代码:

# 创建一个包含0到9的列表,每个元素加3
numbers = [x + 3 for x in range(10)]
print(numbers)  # 输出: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

(2)字典推导式:

字典推导式用于创建字典,格式为:

{key_expression: value_expression for item in iterable if condition}
  • key_expression 和 value_expression 分别是字典的键和值。
  • item 是从 iterable 中依次取出的元素。

示例代码:

# 创建一个字典,键是数字,值是数字的平方
squares = {x: x**2 for x in range(6)}
print(squares)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

(3)集合推导式:

集合推导式用于创建集合,格式为:

{expression for item in iterable if condition}
  • expression 是对每个元素进行的操作。
  • item 是从 iterable 中依次取出的元素。

示例代码:

# 创建一个集合,包含0到9的数字
numbers_set = {x for x in range(10)}
print(numbers_set)  # 输出: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

(4)生成器表达式:

生成器表达式用于创建生成器,格式为:

(expression for item in iterable if condition)
  • expression 是对每个元素进行的操作。
  • item 是从 iterable 中依次取出的元素。

示例代码:

# 创建一个生成器,生成0到9的数字
numbers_gen = (x for x in range(10))
print(list(numbers_gen))  # 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

(5)总结:

推导式是 Python 中一种非常有用的语法结构,它允许以一种简洁和高效的方式创建和操作数据结构。列表、字典、集合和生成器推导式各有其用途,可以根据需要选择使用。使用推导式时,应注意保持代码的可读性,避免过度复杂的表达式。

二、 迭代器和生成器:

Python 中的迭代器和生成器是处理数据集合的强大工具,它们提供了一种高效的方式来访问和生成数据序列。

(1)迭代器(Iterator):

  • 迭代器是一个实现了迭代器协议的对象,即含有__iter__()__next__()方法的对象。迭代器从集合的第一个元素开始访问,直到所有元素被访问完毕。迭代器只能向前移动,不能后退。

(2)迭代器的创建:

  • 通过内置的iter()函数,可以将列表、元组、字典等可迭代对象转换成迭代器。
  • 自定义类实现__iter__()__next__()方法,使其成为迭代器。

(3)示例代码:

class MyIterator:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index < len(self.data):
            value = self.data[self.index]
            self.index += 1
            return value
        else:
            raise StopIteration

# 使用自定义迭代器
my_data = [1, 2, 3, 4, 5]
my_iter = MyIterator(my_data)
for value in my_iter:
    print(value)

(4)生成器(Generator):

  • 生成器是一种特殊的迭代器,它通过使用yield语句来产生值。生成器允许你定义一个函数,该函数的行为类似于迭代器,但更加简洁和高效。

(5)生成器的优势:

  • 节省内存:生成器在每次迭代时只产生一个值,而不是一次性生成整个数据集合。
  • 易于编写:使用yield语句可以轻松创建生成器。

(6)示例代码:

def my_generator():
    for i in range(5):
        yield i

# 使用生成器
gen = my_generator()
for value in gen:
    print(value)

(7)生成器表达式:

  • 生成器表达式是列表推导式的一个变体,它使用圆括号而不是方括号,并返回一个生成器。

(8)示例代码:

# 生成器表达式
gen_expr = (x * 2 for x in range(5))
for value in gen_expr:
    print(value)

(9)总结:

  • 迭代器和生成器是 Python 中处理序列数据的强大工具。迭代器提供了一种标准的方式来访问集合中的元素,而生成器则允许你以一种高效和内存友好的方式产生数据序列。生成器表达式进一步简化了生成器的创建过程,使得生成数据序列更加简洁。

三、 函数:

在Python中,函数是执行特定任务的代码块。你可以定义自己的函数,也可以使用Python提供的内建函数。下面将详细介绍Python函数的各个方面。

(1)定义函数:

  • 在Python中,定义函数使用def关键字,后跟函数名、括号(可能包含参数)和冒号。函数体必须缩进。

(2)基本语法:

def 函数名(参数列表):
    函数体
    return [表达式]

(3)示例代码:

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

print(greet("Alice"))  # 输出: Hello, Alice!

(4)参数:

函数参数允许你向函数传递数据。

  • 必需参数:调用函数时必须提供的参数。
  • 关键字参数:调用时可以按任意顺序提供,只要指定了参数名。
  • 默认参数:在定义函数时指定默认值,如果调用时未提供,则使用默认值。
  • 不定长参数:允许你传递任意数量的参数。

(5)示例代码:

def power(base, exponent=2):
    return base ** exponent

print(power(3, 3))  # 输出: 27
print(power(3))     # 输出: 9,使用默认指数2

(6)不定长参数:

使用星号(*)定义不定长参数。

  • *args:接收多个位置参数,作为元组。
  • **kwargs:接收多个关键字参数,作为字典。

(7)示例代码:

def make_points(x, y, **kwargs):
    print("x =", x)
    print("y =", y)
    for key, value in kwargs.items():
        print(f"{key} = {value}")

make_points(1, 7, shape='circle', size=5)

(8)匿名函数(Lambda函数):

使用lambda关键字创建匿名函数,通常用于短暂的、不需要复用的小函数。

语法:

lambda 参数列表: 表达式
  • 参数:可以是一个或多个,多个参数间用逗号分隔。
  • 表达式:必须是一个表达式,不能包含语句。

特点:

  • 匿名性:lambda函数没有名称。
  • 简洁性:适用于简单的函数定义,通常只有一行。
  • 使用场景:常用于函数参数传递,如map()filter()reduce()等。

示例代码:

sum = lambda x, y: x + y
print(sum(5, 3))  # 输出: 8

返回值:

  • 使用return语句从函数返回一个值。如果没有return语句,函数默认返回None

示例代码:

def add(a, b):
    return a + b

result = add(5, 8)
print(result)  # 输出: 13

(9)参数传递

Python函数参数传递方式:

  • 不可变类型(如整数、字符串、元组):按值传递。函数内修改参数不会影响原始数据。
  • 可变类型(如列表、字典):按引用传递。函数内修改参数会影响原始数据。

示例代码:

def modify_list(input_list):
    input_list.append(3)

my_list = [1, 2]
modify_list(my_list)
print(my_list)  # 输出: [1, 2, 3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The_xzs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值