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)

相关推荐
纪念 2294 分钟前
c++ string(二)
开发语言·c++
SimonKing4 分钟前
零大模型依赖!SQLite FTS5 + jieba 打造纯本地知识库搜索
后端·python·程序员
慢云智慧空间5 分钟前
从智能终端到空间AI,慢云科技如何重新定义智慧人居?
人工智能·python·科技
李福春8 分钟前
斗破Google ADK Java苍穹-第5境斗灵-凝物通脉-Context与State
java·开发语言·人工智能·java-ee·google adk·深圳同盟·腾讯云架构师技术同盟
十年Java程序媛10 分钟前
Java 接口和抽象类对比|抛弃老旧八股,正确选型
java·开发语言·spring boot·后端
见叶之秋12 分钟前
【C++】从基类到派生类:关于C++继承的务实梳理
开发语言·c++
yi01116 分钟前
LeetCode 3. 无重复字符的最长子串|不定长滑动窗口:什么时候更新最大值?
笔记·python·算法·leetcode·双指针·滑动窗口
kyle~19 分钟前
C++ 智能指针:RAII、所有权与对象生命周期
开发语言·c++
y1su23 分钟前
Leetcode 单调栈模板
java·开发语言·数据结构·算法·leetcode
2601_9628857229 分钟前
如何用 Python 计算索提诺比率和卡玛比率?
开发语言·python