Python 函数和闭包


def html_tag(tag):
def wrap_text(msg):
print(f'{tag}  {msg}  {tag}')
return wrap_text
html_tag('Hi')
print(html_tag)
check_h1 = html_tag('Hi')
print(check_h1)

控制台退货

<function html_tag at 0x108492b00>
<function html_tag.<locals>.wrap_text at 0x1085b0280>

所以我知道控制台函数的第一行存储在计算机的内存中,但是发生了什么'Hi'html_tag函数中的参数。 同样在控制台的第二行中,我想'Hi'存储为tag参数的参数,但为什么html_tag('Hi')没有发生这种情况?

区别在于,一旦你引用了wrap_text函数,而一次引用了html_tag函数。
随着使用

html_tag('Hi')

您确实调用了函数并接收了wrap_text函数,但是您永远不会存储 returend 结果。 如果您更改

html_tag('Hi')
print(html_tag)

my_html_tag = html_tag('Hi')
print(my_html_tag)

你会得到预期的结果。
当您只需致电

print(html_tag)

你告诉 Python 打印 html_tag 函数,这不受你之前通过以下方式调用它的影响

html_tag('Hi')

最新更新