怎样在print函数的基础上实现一个自己的打印函数
时间: 2024-11-06 21:20:44 浏览: 9
要创建一个自定义的打印函数,你可以覆盖`print()`的功能并添加额外的行为或格式化选项。这里有一个简单的例子,我们将创建一个名为`custom_print`的函数,它可以接受多个参数,并可以选择是否输出时间和行号。
```python
import time
def custom_print(*args, show_time=False, show_lineno=True):
# 获取当前行号
if 'lineno' in locals():
lineno = locals()['lineno']
else:
import inspect
lineno = inspect.currentframe().f_back.f_lineno
# 输出时间(可选)
if show_time:
timestamp = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(f"[{timestamp}] ", end='')
# 输出行号(可选)
if show_lineno:
print(f"Line {lineno}: ", end='')
# 打印传入的参数
for arg in args:
print(arg, end=' ')
# 添加换行符
print()
# 使用示例
custom_print("Hello, world!", "This is a custom message.", show_time=True)
# 检查行号和时间
custom_print("Here's another line", show_lineno=True)
```
在这个自定义函数中:
1. 我们导入了`time`模块来获取当前的时间戳。
2. 定义了`custom_print`函数,它接受任意数量的位置参数`*args`以及两个关键字参数:`show_time`和`show_lineno`。
3. 利用`inspect`模块获取当前行号,如果使用了`ipython`等环境,可能还需要查找`locals()`中的特定变量。
4. 根据`show_time`和`show_lineno`的值,决定是否输出时间和行号。
5. 最后,按照给定的参数列表打印内容,并自动添加一个换行符。
阅读全文