我如何随机选择“def”?

时间:2018-04-30 23:19:33

标签: python python-3.x

看看这个python 3代码。

import random
from tkinter import *
from PIL import Image, ImageTk


def img1():

root = Tk()
root.geometry("400x400")

load = Image.open("1.png")
render = ImageTk.PhotoImage(load)
img = Label(image=render)
img.image = render
img.place(x=0,y=0)


def img2():

root = Tk()
root.geometry("400x400")

load = Image.open("2.png")
render = ImageTk.PhotoImage(load)
img = Label(image=render)
img.image = render
img.place(x=0,y=0)


def img3():

root = Tk()
root.geometry("400x400")

load = Image.open("3.png")
render = ImageTk.PhotoImage(load)
img = Label(image=render)
img.image = render
img.place(x=0,y=0)


def img4():

root = Tk()
root.geometry("400x400")

load = Image.open("4.png")
render = ImageTk.PhotoImage(load)
img = Label(image=render)
img.image = render
img.place(x=0,y=0)


def img5():

root = Tk()
root.geometry("400x400")

load = Image.open("5.png")
render = ImageTk.PhotoImage(load)
img = Label(image=render)
img.image = render
img.place(x=0,y=0)



def img6():

root = Tk()
root.geometry("400x400")

load = Image.open("6.png")
render = ImageTk.PhotoImage(load)
img = Label(image=render)
img.image = render
img.place(x=0,y=0)


List_img = [img1(), img2(), img3(), img4(), img5(), img6()]
random.choice(List_img)

我想随机选择一张图片,但它会不断推送所有图片。

最后两行是它变得复杂的地方。

我没有收到错误。

我是python的新手,所以很好< 3

(所以我的代码太少,文字很少,我必须添加更多,所以请耐心等待c;)

1 个答案:

答案 0 :(得分:1)

如果您只想调用其中一个函数,请将函数本身放在列表中,而不是调用函数的结果。

img1()中的括号是您调用该函数的方式。如果您只想将函数本身视为一个值,那只是img1。所以:

List_img = [img1, img2, img3, img4, img5, img6]

然后,当然,你必须打电话给你选择的那个。与img1()调用函数img1的方式相同,这是:

random.choice(List_img)()

...表示调用random.choice选择的任何函数。

这里的关键思想是函数是“一等值” - 你可以将它们粘贴在列表中,将它们传递给函数,将它们存储在变量中等等,就像你可以用数字或字符串一样,然后你以后可以打电话给他们。