重新定义一下print,让它输出倒序

起初搞这个是因为在python群闲聊的时候,想起来一个有趣的东西

$inclued(stdio。h)
viod mian<>[
    pritn{helo, word!/n'};
    retrun 0:
]
学长,我这个hello word的代码怎么报错运行不起来啊

毕竟是python群嘛,后来变成了

pritn['helo word]://输出hello word
学长,我这个hello word的代码怎么报错运行不起来啊

然后就想着,能不能让print('hello world')也不会正常输出hello world呢,比如这样

但一看到左边行数,暴露了,然后就在想能不能让定义变短一些呢,于是就有了下面的想法

想让print里面的字符串倒序输出,该怎么做呢

def print(x):
    print(x[::-1])
print('hello world')

但这样会形成递归,因为栈溢出报错

于是提前重新命名一个函数f为print

f = print
def print(x):
    f(x[::-1])
print('hello world')

但是这样行数有些多,能不能使用匿名函数来定义呢

f = print
print = lambda x: f(x[::-1])
print('hello world')

感觉f在上面定义还是很麻烦,然后就在想能不能用定义的同时去使用呢

print = lambda x: (f:=print)(x[::-1])
print('hello world')

很遗憾,这样和直接使用print一样会因为栈溢出报错

直接把其他相同功能但是名字的不同的功能来代替匿名函数中出现的print?

print = lambda x: __builtins__.print(x[::-1])
print('hello world')

这样虽然可以,但本质上,但感觉通过调用的方式有些取巧了

那可不可以套一层嵌套,把print做为参数传进去,做成一个新的函数呢?

print = (lambda f: lambda x: f(x[::-1]))(print)
print('hello world')

嗯这样就可以在不借助import或者调用的基础上实现1句重新定义print,1句倒序输出了

如果还有其他的方法欢迎大家分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值