python作业

  1. **函数级的封装**:

```python

import random

def generate_random_data(data_structure):

if isinstance(data_structure, int):

return random.randint(0, data_structure)

elif isinstance(data_structure, float):

return random.uniform(0, data_structure)

elif isinstance(data_structure, list):

return [generate_random_data(item) for item in data_structure]

elif isinstance(data_structure, dict):

return {key: generate_random_data(value) for key, value in data_structure.items()}

else:

return None

使用修饰器进行扩展功能

def add_prefix(func):

def wrapper(*args, **kwargs):

result = func(*args, **kwargs)

return f"Random Data: {result}"

return wrapper

@add_prefix

def generate_random_data_wrapper(data_structure):

return generate_random_data(data_structure)

测试函数

data_structure = [1, 2, {'a': 3, 'b': [4, 5]}, 6]

random_data = generate_random_data_wrapper(data_structure)

print(random_data)

```

  1. **类的封装**:

```python

import random

class RandomDataGenerator:

def init(self):

pass

def generate_random_data(self, data_structure):

if isinstance(data_structure, int):

return random.randint(0, data_structure)

elif isinstance(data_structure, float):

return random.uniform(0, data_structure)

elif isinstance(data_structure, list):

return [self.generate_random_data(item) for item in data_structure]

elif isinstance(data_structure, dict):

return {key: self.generate_random_data(value) for key, value in data_structure.items()}

else:

return None

使用迭代器进行数据生成

def generator(self, data_structure):

if isinstance(data_structure, (list, dict)):

for item in data_structure:

yield self.generate_random_data(item)

测试类

data_structure = {'a': 1, 'b': [2, 3]}

generator = RandomDataGenerator()

random_data = generator.generate_random_data(data_structure)

print(random_data)

测试迭代器

for data in generator.generator(data_structure):

print(data)

```

  1. **包的封装**:

添加一个名为`random_generator`的包,结构如下:

```

random_generator/

init.py

core.py

decorators.py

generators.py

```

`core.py`文件:

```python

import random

def generate_random_data(data_structure):

if isinstance(data_structure, int):

return random.randint(0, data_structure)

elif isinstance(data_structure, float):

return random.uniform(0, data_structure)

elif isinstance(data_structure, list):

return [generate_random_data(item) for item in data_structure]

elif isinstance(data_structure, dict):

return {key: generate_random_data(value) for key, value in data_structure.items()}

else:

return None

```

`generators.py`文件:

```python

from .core import generate_random_data

class RandomDataGenerator:

def init(self):

pass

def generate_random_data(self, data_structure):

return generate_random_data(data_structure)

def generator(self, data_structure):

if isinstance(data_structure, (list, dict)):

for item in data_structure:

yield generate_random_data(item)

```

`decorators.py`文件:

```python

def add_prefix(func):

def wrapper(*args, **kwargs):

result = func(*args, **kwargs)

return f"Random Data: {result}"

return wrapper

```

`init.py`文件:

```python

from .core import generate_random_data

from .generators import RandomDataGenerator

from .decorators import add_prefix

```

在包外调用:

```python

from random_generator import generate_random_data, RandomDataGenerator, add_prefix

data_structure = {'a': [1, 2], 'b': {'c': 3, 'd': 4}}

random_data = generate_random_data(data_structure)

print(random_data)

generator = RandomDataGenerator()

for data in generator.generator(data_structure):

print(data)

@add_prefix

def generate_random_data_with_prefix(data_structure):

return generate_random_data(data_structure)

random_data_prefixed = generate_random_data_with_prefix(data_structure)

print(random_data_prefixed)

相关推荐
xiao5kou4chang6kai42 分钟前
Python-GEE遥感云大数据分析与可视化(如何建立基于云计算的森林监测预警系统)
python·数据分析·云计算·森林监测·森林管理
presenttttt9 分钟前
用Python和OpenCV从零搭建一个完整的双目视觉系统(四)
开发语言·python·opencv·计算机视觉
每日出拳老爷子15 分钟前
[C#] 使用TextBox换行失败的原因与解决方案:换用RichTextBox的实战经验
开发语言·c#
半桔18 分钟前
【Linux手册】从接口到管理:Linux文件系统的核心操作指南
android·java·linux·开发语言·面试·系统架构
nightunderblackcat27 分钟前
新手向:实现ATM模拟系统
java·开发语言·spring boot·spring cloud·tomcat·maven·intellij-idea
开开心心就好30 分钟前
电脑息屏工具,一键黑屏超方便
开发语言·javascript·电脑·scala·erlang·perl
笑衬人心。37 分钟前
Java 17 新特性笔记
java·开发语言·笔记
序属秋秋秋2 小时前
《C++初阶之内存管理》【内存分布 + operator new/delete + 定位new】
开发语言·c++·笔记·学习
木头左3 小时前
逻辑回归的Python实现与优化
python·算法·逻辑回归
ruan1145143 小时前
MySQL4种隔离级别
java·开发语言·mysql