美文网首页python百例
76-闭包的用法

76-闭包的用法

作者: 凯茜的老爸 | 来源:发表于2018-08-02 10:02 被阅读1次

下面的代码用到了《66-偏函数应用:简单的图形窗口》
图形窗口上的按钮有个command选项,其实它就是一个函数。如下:

import tkinter
from functools import partial

def hello():
    lb.config(text="Hello China!")

def welcome():
    lb.config(text="Hello Tedu!")

root = tkinter.Tk()
lb = tkinter.Label(text="Hello world!", font="Times 26")
MyBtn = partial(tkinter.Button, root, fg='white', bg='blue')
b1 = MyBtn(text='Button 1', command=hello)
b2 = MyBtn(text='Button 2', command=welcome)
b3 = MyBtn(text='quit', command=root.quit)
lb.pack()
b1.pack()
b2.pack()
b3.pack()
root.mainloop()

按下Button 1和Button 2就会执行hello和welcome两个函数。这两个函数非常类似,如果有10个按钮,并且都是类似的呢?
换成内部函数、闭包的的语法如下:

import tkinter
from functools import partial

def hello(word):
    def welcome():
        lb.config(text="Hello %s!" % word)
    return welcome  # hello函数的返回值还是函数

root = tkinter.Tk()
lb = tkinter.Label(text="Hello world!", font="Times 26")
MyBtn = partial(tkinter.Button, root, fg='white', bg='blue')
b1 = MyBtn(text='Button 1', command=hello('China'))
b2 = MyBtn(text='Button 2', command=hello('Tedu'))
b3 = MyBtn(text='quit', command=root.quit)
lb.pack()
b1.pack()
b2.pack()
b3.pack()
root.mainloop()

相关文章

  • 76-闭包的用法

    下面的代码用到了《66-偏函数应用:简单的图形窗口》图形窗口上的按钮有个command选项,其实它就是一个函数。如...

  • python函数部分

    什么是闭包,闭包的常用用法,怎样判断是不是闭包,闭包的作用是 1、什么是闭包 2、常用用法 3、判断是不是闭包 4...

  • 深入解析Javascript闭包及实现方法

    一、什么是闭包和闭包的几种写法和用法 1、什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的...

  • Swift之闭包

    swift中没有了OC的block,由闭包取而代之。这里简介一下闭包的用法。 声明一个闭包 var clickPa...

  • 理解闭包、立即执行函数、异步和回调

    闭包 什么是闭包 一个函数使用了它外面的变量,这种用法就是闭包。闭包是一个马后炮的总结。 那为何要这样做呢(搞得这...

  • Groovy<第八篇>:基础语法(7)---闭包(Closure

    闭包是Groovy语言最常用的用法之一,Closure是闭包的意思。闭包是一个短的匿名代码块。它通常跨越几行代码。...

  • Swift闭包的用法

    一、typealias(别名)的用法1、重新定义闭包类型swift的闭包书写虽然好看了不少,但是如果大批量的书写闭...

  • Swift学习:闭包

    本篇将详细总结介绍Swift闭包的用法;闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift中的闭包与C...

  • 前端(数组,闭包,定时器)

    数组 定时器 定时器弹框 定时器的基本用法 定时器动画 闭包 闭包存循环的索引值 闭包做私有变量计数器 闭包做选项卡

  • Python 2 - 高级用法 - 装饰器

    Python 2 - 高级用法 - 装饰器 一谈到 装饰器,就离不开闭包 闭包 闭包就是能够读取其他函数内部变量的...

网友评论

    本文标题:76-闭包的用法

    本文链接:https://www.haomeiwen.com/subject/umhjvftx.html