起初搞这个是因为在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句倒序输出了
如果还有其他的方法欢迎大家分享!