def mult_by_five(x):
return 5 \* x
def call(fn, arg):
"""Call fn on arg"""
return fn(arg)
def squared_call(fn, arg):
"""Call fn on the result of calling fn on arg"""
return fn(fn(arg))
print(
call(mult_by_five, 1),
squared_call(mult_by_five, 1),
sep='\\n', # '\\n' is the newline character - it starts a new line
)这是来自于Kaggle的python教程。我不明白这是怎么回事。这个解释甚至更复杂。而且,当我在这里复制这些黑色的线条时,它们也出现了。知道我怎么把它移走吗?
我一直试图把它分解成一步一步地工作,但却被卡住了。
发布于 2022-04-01 07:02:03
我不知道这是否有帮助,但您可以使用print()来显示所有变量和结果,并查看代码如何工作。
def mult_by_five(x):
print('\n--- start: mult_by_five ---')
print('[mult_by_five] x:', x)
result = 5 * x
print('[mult_by_five] 5 * x:', result)
print('--- end: mult_by_five ---\n')
return result
def call(fn, arg):
"""Call fn on arg"""
print('\n--- start: call ---')
print('[call] fn:', fn)
print('[call] arg:', arg)
result = fn(arg)
print('[call] fn(arg):', result)
print('--- end: call ---\n')
return result
def squared_call(fn, arg):
"""Call fn on the result of calling fn on arg"""
print('\n--- start: squared_call ---')
print('[squared_call] fn:', fn)
print('[squared_call] arg:', arg)
result1 = fn(arg)
print('[squared_call] fn(arg):', result1)
result2 = fn(result1)
print('[squared_call] fn(fn(arg)):', result2)
print('--- end: squared_call ---\n')
return result2
# --- main ---
print('--- start: main ---')
print('[main] mult_by_five:', mult_by_five)
result1 = call(mult_by_five, 1)
print('[main] call(mult_by_five, 1):', result1)
result2 = squared_call(mult_by_five, 1)
print('[main] squared_call(mult_by_five, 1):', result2)
print('--- results ---')
print(result1, result2, sep='\n') # '\n' is the newline character - it starts a new line
print('--- end: main ---')结果:
--- start: main ---
[main] mult_by_five: <function mult_by_five at 0x7f28f6c368b0>
--- start: call ---
[call] fn: <function mult_by_five at 0x7f28f6c368b0>
[call] arg: 1
--- start: mult_by_five ---
[mult_by_five] x: 1
[mult_by_five] 5 * x: 5
--- end: mult_by_five ---
[call] fn(arg): 5
--- end: call ---
[main] call(mult_by_five, 1): 5
--- start: squared_call ---
[squared_call] fn: <function mult_by_five at 0x7f28f6c368b0>
[squared_call] arg: 1
--- start: mult_by_five ---
[mult_by_five] x: 1
[mult_by_five] 5 * x: 5
--- end: mult_by_five ---
[squared_call] fn(arg): 5
--- start: mult_by_five ---
[mult_by_five] x: 5
[mult_by_five] 5 * x: 25
--- end: mult_by_five ---
[squared_call] fn(fn(arg)): 25
--- end: squared_call ---
[main] squared_call(mult_by_five, 1): 25
--- results ---
5
25
--- end: main ---最终,您可以将原始代码放在https://pythontutor.com/中,并逐行运行它,它还将显示变量中的内容。所以它就像真正的调试器。
https://stackoverflow.com/questions/71701448
复制相似问题