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)

相关推荐
shut up26 分钟前
LangChain - 如何使用阿里云百炼平台的Qwen-plus模型构建一个桌面文件查询AI助手 - 超详细
人工智能·python·langchain·智能体
宝贝儿好1 小时前
【python】第五章:python-GUI编程
python·pyqt
@。1241 小时前
对于灰度发布(金丝雀发布)的了解
开发语言·前端
闲人编程1 小时前
从多个数据源(CSV, Excel, SQL)自动整合数据
python·mysql·数据分析·csv·存储·数据源·codecapsule
hsjkdhs2 小时前
C++之多层继承、多源继承、菱形继承
开发语言·c++·算法
B站_计算机毕业设计之家2 小时前
推荐系统实战:python新能源汽车智能推荐(两种协同过滤+Django 全栈项目 源码)计算机专业✅
大数据·python·django·汽车·推荐系统·新能源·新能源汽车
茯苓gao2 小时前
Django网站开发记录(一)配置Mniconda,Python虚拟环境,配置Django
后端·python·django
Full Stack Developme2 小时前
Python Redis 教程
开发语言·redis·python
码界筑梦坊2 小时前
267-基于Django的携程酒店数据分析推荐系统
python·数据分析·django·毕业设计·echarts
Cherry Zack2 小时前
Django视图进阶:快捷函数、装饰器与请求响应
后端·python·django