やりたいこと
関数を別名に退避しておき、既存関数を再定義する
print()ではあとから出力内容を整形したいな、というときに使う。
コード
hogehoge.py
# -*- coding: utf-8 -*-
import datetime
# printをppprintへ退避
ppprint = print
# printを再定義
def print(*args, **kwargs):
try:
ppprint(str(datetime.datetime.now())+":::", end="")
ppprint(*args, **kwargs)
except Exception as e:
ppprint(*args,**kwargs)
print("qiita")
実行結果
> 2019-02-02 11:56:16.296658:::qiita
※2019.02.10 追記
グローバル変数を汚さないやり方をコメントで教えていただきました
デフォルト引数を使う方法
デフォルト引数は関数定義時に一度だけ評価されるので、元のprintをずっと覚えていられます。
import datetime
# printを再定義
def print(*args, print_=print, **kwargs):
try:
print_(str(datetime.datetime.now())+":::", end="")
print_(*args, **kwargs)
except Exception as e:
print_(*args,**kwargs)
print("qiita")
組込み情報を参照する方法
import datetime
# printを再定義
def print(*args, **kwargs):
try:
__builtins__.print(str(datetime.datetime.now())+":::", end="")
__builtins__.print(*args, **kwargs)
except Exception as e:
__builtins__.print(*args,**kwargs)
print("qiita")