鱼C论坛

 找回密码
 立即注册
查看: 1332|回复: 5

[已解决]问一个简单的问题

[复制链接]
发表于 2018-3-7 12:47:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#!/usr/bin/env python  
#coding:utf-8  
import numpy as np  
from tkinter import *  
import matplotlib  
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg  
from matplotlib.figure import Figure  
  
def drawPic():  
    try:sampleCount=int(inputEntry.get())  
    except:  
        sampleCount=50  
        print ('请输入整数')  
        inputEntry.delete(0,END)  
        inputEntry.insert(0,'50')  
         
    #清空图像,以使得前后两次绘制的图像不会重叠  
    drawPic.f.clf()  
    drawPic.a=drawPic.f.add_subplot(111)  
         
    #在[0,100]范围内随机生成sampleCount个数据点  
    x=np.random.randint(0,100,size=sampleCount)  
    y=np.random.randint(0,100,size=sampleCount)  
    color=['b','r','y','g']  
         
    #绘制这些随机点的散点图,颜色随机选取  
    drawPic.a.scatter(x,y,s=3,color=color[np.random.randint(len(color))])  
    drawPic.a.set_title('Demo: Draw N Random Dot')  
    drawPic.canvas.show()  
  
if __name__ == '__main__':      
      
    matplotlib.use('TkAgg')  
    root = Tk()   
    #在Tk的GUI上放置一个画布,并用.grid()来调整布局  
    drawPic.f = Figure(figsize=(5,4), dpi=100)  
  
    drawPic.canvas = FigureCanvasTkAgg(drawPic.f, master=root)   
    drawPic.canvas.show()   
    drawPic.canvas.get_tk_widget().grid(row=0, columnspan=3)      
      
    #放置标签、文本框和按钮等部件,并设置文本框的默认值和按钮的事件函数  
    Label(root,text='请输入样本数量:').grid(row=1,column=0)  
    inputEntry=Entry(root)  
    inputEntry.grid(row=1,column=1)  
    inputEntry.insert(0,'50')  
    Button(root,text='画图',command=drawPic).grid(row=1,column=2,columnspan=3)  
         
    #启动事件循环  
    root.mainloop()


上面这段代码中drawPic是一个函数,但是drawPic.f,   drawPic.a之类的变量在前面加上drawPic是为了说明他们这些变量是属于drawPic函数的独有变量嘛
最佳答案
2018-3-7 14:33:08
不是的
Python是一个动态语言,它的类的内部一些变量可以不同通过事先声明调用的
  1. class test(object):
  2.     def __init__(self,a):
  3.         self.x = a


  4. if __name__ == '__main__':
  5.     t = test(3)
  6.     print(t.x)
  7.     t.y = 3
  8.     print(t.y)
复制代码
  1. ================ RESTART: D:/Programs/Python/Python36/test.py ================
  2. 3
  3. 3
复制代码

如 x 是构建类时候给定义的,而 y 是后面需要添加是赋值的变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-7 12:54:41 | 显示全部楼层
快来人啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 14:33:08 | 显示全部楼层    本楼为最佳答案   
不是的
Python是一个动态语言,它的类的内部一些变量可以不同通过事先声明调用的
  1. class test(object):
  2.     def __init__(self,a):
  3.         self.x = a


  4. if __name__ == '__main__':
  5.     t = test(3)
  6.     print(t.x)
  7.     t.y = 3
  8.     print(t.y)
复制代码
  1. ================ RESTART: D:/Programs/Python/Python36/test.py ================
  2. 3
  3. 3
复制代码

如 x 是构建类时候给定义的,而 y 是后面需要添加是赋值的变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 15:11:43 | 显示全部楼层
纳兰小寒 发表于 2018-3-7 14:33
不是的
Python是一个动态语言,它的类的内部一些变量可以不同通过事先声明调用的

这里的drawPic是一个函数,所以可以理解为函数的内部一些变量可以不通过事先声明调用,并且再别的函数里也可以确认这些变量是属于drawPic的嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 15:44:03 | 显示全部楼层
董梦成 发表于 2018-3-7 15:11
这里的drawPic是一个函数,所以可以理解为函数的内部一些变量可以不通过事先声明调用,并且再别的函数里 ...

是的,可以不用事先声明,需要的时候再声明赋值也是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 18:50:28 | 显示全部楼层
纳兰小寒 发表于 2018-3-7 15:44
是的,可以不用事先声明,需要的时候再声明赋值也是一样的

谢谢大佬的解答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-30 19:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表