精华内容
下载资源
问答
  • Variable global

    2021-02-19 12:11:39
    Variable 有些控件 (比如 Entry 控件, Radiobutton 控件 等) 可以通过传入特定参数直接和一个程序变量绑定, 这些参数包括: variable, textvariable, onvalue, offvalue, value. 这种绑定是双向的: 如果该变量发生...

    Variable 类

    有些控件 (比如 Entry 控件, Radiobutton 控件 等) 可以通过传入特定参数直接和一个程序变量绑定, 这些参数包括: variable, textvariable, onvalue, offvalue, value.

    这种绑定是双向的: 如果该变量发生改变, 与该变量绑定的控件也会随之更新.

    这些 Tkinter 控制变量和一般的 Python 变量一样, 都是用来保存某个值的.
    但一般的 Python 变量不能作为属性值被传递给 variable 或者 textvariable 参数. 这些参数可接受的类型仅限于 Tkinter 包中的 Variable 类的子类. 如下:

    x = StringVar() # 保存一个 string 类型变量, 默认值为""
    x = IntVar() # 保存一个整型变量, 默认值为0
    x = DoubleVar() # 保存一个浮点型变量, 默认值为0.0
    x = BooleanVar() # 保存一个布尔型变量, 返回值为 0 (代表 False) 或 1 (代表 True)
    

    要得到其保存的变量值, 使用它的 get() 方法即可.
    要设置其保存的变量值, 使用它的 set() 方法即可.

    Tkinter 支持将很多 GUI 组件与变量进行双向绑定,执行这种双向绑定后编程非常方便:

    1. 如果程序改变变量的值,GUI 组件的显示内容或值会随之改变。
    2. 当 GUI 组件的内容发生改变时(比如用户输入),变量的值也会随之改变。

    为了让 Tkinter 组件与变量进行双向绑定,只要为这些组件指定 variable(通常绑定组件的 value)、textvariable(通常绑定组件显示的文本)等属性的属性值即可。(属性值就是变量)

    但这种双向绑定有一个限制,就是 Tkinter不允许将组件和普通变量进行绑定,只能和 tkinter 包下 Variable 类的子类进行绑定。
    该类包含如下几个子类:

    ShringVar():用于包装str 值的变量。
    IntVar():用于包装整型值的变量。
    DoubleVar():用于包装浮点值的变量。
    BooleanVar():用于包装bool值的变量。
    

    Variable 变量如果要设置保存的变量值使用 set() 方法
    如果要得到其保存的变量值使用 get() 方法。

    就是这样的方法使用对象去保存数据的,把对象当作变量,与组件关联也是组件的属性的属性值是对象,说白了就是普通的变量无法做到全局变量,但是对象是全局的,所以就把对象当作全局变量用来储存数据。(对象的封装)
    组件与变量进行双向绑定的属性与属性值值

    var1 = tk.DoubleVar()  用于包装浮点值的变量。用于组件的textvar属性
    var2 = tk.StringVar()  用于包装str 值的变量。用于组件的textvariable属性
    var3 = tk. IntVar()  用于包装整型值的变量。
    var4 = tk. BooleanVar()  用于包装bool值的变量。
    

    Global的用法

    Global 变量名
    global—将变量定义为全局变量。可以通过定义为全局变量,实现在函数内部改变变量值。
    一个global语句可以同时定义多个变量
    global x, y, z

    在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量。
    此时用global语句就可以变成这个任务,也就是说没有用global语句的情况下,是不能修改全局变量的。
    global语句可以声明一个或多个变量为全局变量。
    该声明仅在当前代码块中有效。除此之外,没办法访问全局变量
    global的作用就相当于传递参数,在函数外部声明的变量,如果在函数内想要使用,就用global来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了
    就是一个普通的变量,正常在函数内无法使用,函数内的变量只能算局部变量,用global修饰之后就可以告诉电脑这个变量是全局一样的,是一个全局变量,和函数外的那个变量是同一个。

    因为是python中的一个奇异现象,在模块层面定义的变量,按理就是全局变量,在整个模块任意处都可以调用的,可以在函数中当做全局变量使用
    但是如果在函数中有再赋值/定义(因为python是弱类型语言,赋值语句和定义语句一样),则会产生未定义变量的错误
    而如果在函数中的定义在引用前使用,那么会正常运行,但函数中的变量和模块中的定义的全局变量不为同一个

    a=10
    def aa():
        print(a)
        a=a+1
        print(a)
    aa()
    
    
    》》Traceback (most recent call last):
        File "D:/location/5.0.py", line 284, in <module>
          aa()
        File "D:/location/5.0.py", line 281, in aa
          print(a)
      UnboundLocalError: local variable 'a' referenced before assignment
    
    a=10
    def aa():
        print(a)
        print(a)
    aa()
    
    
    》》》》》10
             10
    
    
    
    展开全文
  • 今天小编就为大家分享一篇Pytorch中的自动求梯度机制和Variable类实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • [Tkinter 教程04] Variable

    千次阅读 2017-03-07 00:43:32
    Variable 有些控件 (比如 Entry 控件, Radiobutton 控件 等) 可以通过传入特定参数直接和一个程序变量绑定, 这些参数包括: variable, textvariable, onvalue, offvalue, value. 这种绑定是双向的: 如果该变量发生...

    原系列地址: Python Tkinter

    Variable 类

    有些控件 (比如 Entry 控件, Radiobutton 控件 等) 可以通过传入特定参数直接和一个程序变量绑定, 这些参数包括: variable, textvariable, onvalue, offvalue, value. 这种绑定是双向的: 如果该变量发生改变, 与该变量绑定的控件也会随之更新. 这些 Tkinter 控制变量和一般的 Python 变量一样, 都是用来保存某个值的. 但一般的 Python 变量不能被传递给 variable 或者 textvariable 参数. 这些参数可接受的类型仅限于 Tkinter 包中的 Variable 类的子类. 如下:

    • x = StringVar() # 保存一个 string 类型变量, 默认值为""
    • x = IntVar() # 保存一个整型变量, 默认值为0
    • x = DoubleVar() # 保存一个浮点型变量, 默认值为0.0
    • x = BooleanVar() # 保存一个布尔型变量, 返回值为 0 (代表 False) 或 1 (代表 True)

    要得到其保存的变量值, 使用它的 get() 方法即可.
    要设置其保存的变量值, 使用它的 set() 方法即可.


    译者水平有限, 如有疏漏, 欢迎指正.
    已获得原作者授权. 原文地址: Variable Classes

    展开全文
  • Variable 有些控件 (比如 Entry 控件, Radiobutton 控件 等) 可以通过传入特定参数直接和一个程序变量绑定, 这些参数包括: variable, textvariable, onvalue, offvalue, value. 这种绑定是双向的:...
        
    已获原作者授权. 原系列地址: Python Tkinter

    Variable 类

    有些控件 (比如 Entry 控件, Radiobutton 控件 等) 可以通过传入特定参数直接和一个程序变量绑定, 这些参数包括: variable, textvariable, onvalue, offvalue, value. 这种绑定是双向的: 如果该变量发生改变, 与该变量绑定的控件也会随之更新. 这些 Tkinter 控制变量和一般的 Python 变量一样, 都是用来保存某个值的. 但一般的 Python 变量不能被传递给 variable 或者 textvariable 参数. 这些参数可接受的类型仅限于 Tkinter 包中的 Variable 类的子类. 如下:

    • x = StringVar() # 保存一个 string 类型变量, 默认值为""
    • x = IntVar() # 保存一个整型变量, 默认值为0
    • x = DoubleVar() # 保存一个浮点型变量, 默认值为0.0
    • x = BooleanVar() # 保存一个布尔型变量, 返回值为 0 (代表 False) 或 1 (代表 True)

    要得到其保存的变量值, 使用它的 get() 方法即可.
    要设置其保存的变量值, 使用它的 set() 方法即可.


    全系列:
    [译][Tkinter 教程01] 入门: Label 控件
    [译][Tkinter 教程02] Message 控件
    [译][Tkinter 教程03] Button 控件
    [译][Tkinter 教程04] Variable 类
    [译][Tinkter 教程05] Radiobutton 控件
    [译][Tkinter 教程06] Checkbox 控件
    [译][Tkinter 教程07] Entry 控件
    [译][Tkinter 教程08] Canvas 图形绘制
    [译][Tkinter 教程09] Scale 控件
    [译][Tkinter 教程10] Text 控件
    [译][Tkinter 教程11] 对话框和消息框
    [译][Tkinter 教程12] 布局管理 (Pack Place Grid)
    [译][Tkinter 教程13] Mastermind 游戏
    [译][Tkinter 教程14] menu 菜单
    [译][Tkinter 教程15] event 事件绑定
    译者水平有限, 如有疏漏, 欢迎指正.
    已获得原作者授权. 原文地址: Variable Classes
    展开全文
  • 一、简介 线程安全是一个比较严肃的问题,如果处理不好,可能导致数据被破坏,程序崩溃等问题,如何来处理多线程的并发问题?在windows平台有相应的api给你用于控制并发,如互斥锁,...基于conditon_variable类实...

    一、简介
    线程安全是一个比较严肃的问题,如果处理不好,可能导致数据被破坏,程序崩溃等问题,如何来处理多线程的并发问题?在windows平台有相应的api给你用于控制并发,如互斥锁,信号量,事件,临界区等,定要熟练掌握,当然现在STL库已强大到兼容不同的硬件系统了,当然对于winApi同步可以看这里: 
    互斥锁,信号量,事件,临界区详情

    二、分析安全原理
    基于conditon_variable类实现线程安全,先来看看它有什么API使

    wait阻塞自己,等待唤醒

    wait_for阻塞自己,等待唤醒,最多等待一段时间

    wait_until阻塞自己,等待唤醒,最多等待到某个时间点

    notify_one 唤醒一个等待在这个条件变量上的线程

    notify_all 唤醒所有等待在这个条件变量上的线程

    三、队列代码

    template<typename T> class ThreadSafe_Queue
    {
    private:
        mutable mutex m_mut;
        queue<T> m_queue;
        condition_variable m_data_cond;
    public:
        ThreadSafe_Queue() {}
        ThreadSafe_Queue(const ThreadSafe_Queue&) = delete;
        void push(T data)
        {
            lock_guard<mutex> lg(m_mut);
            m_queue.push(data);
            m_data_cond.notify_one();
        }
        void WaitPop(T&t)
        {
            unique_lock<mutex> ul(m_mut);
            m_data_cond.wait(ul, [this] {return !m_queue.empty(); });
            t = m_queue.front();
            m_queue.pop();
        }
        shared_ptr<T> WaitPop()
        {
            unique_lock<mutex> ul(m_mut);
            m_data_cond.wait(ul, [this] {return !m_queue.empty(); });
    
            shared_ptr<T> res(make_shared<T>(m_queue.front()));
            m_queue.pop();
            return res;
        }
        bool TryPop(T &t)
        {
            lock_guard<mutex> lg(m_mut);
            if (m_queue.empty())
                return false;
    
            t = m_queue.front();
            m_queue.pop();
            return true;
        }
    
        shared_ptr<T> TryPop()
        {
            lock_guard<mutex> lg(m_mut);
            if (m_queue.empty())
                return shared_ptr<T>();
            shared_ptr<T> res(make_shared<T>(m_queue.front()));
            m_queue.pop();
            return res;
        }
    
        bool IsEmpty()
        {
            lock_guard<mutex> lg(m_mut);
            return m_queue.empty();
        }
    
    };

    四、一个小例子
    开了两个线程,用于测试线程队列是否安全,thread_Fuc2用于插入数据,thread_Fuc用于出队操作,经过测试,达到了安全。

    ThreadSafe_Queue<int> g_queue;
    int g_index = 10;
    
    void thread_Fuc()
    {
        cout << "thread_fuc1 start\n";
        while (true)
        {
            int value=0;
            g_queue.WaitPop(value);
            printf("wait_and_pop done! value=%d  thread id:%d\n",value,GetCurrentThreadId());
        }
    }
    
    void thread_Fuc2()
    {
        cout << "thread_fuc2 start\n";
        while (true)
        {
            Sleep(1000);
            g_index++;
            g_queue.push(g_index);
        }
    }
    
    int main()
    {
        thread thd(thread_Fuc);
        thd.detach();
    
        thread thd2(thread_Fuc2);
        thd2.detach();
    
        int a;
        while (cin >> a){;}
        return 0;
    }

    结果:

    --------------------- 
    原文:https://blog.csdn.net/what951006/article/details/77916490 
     

    展开全文
  •  首先介绍VariableVariable是对Tensor的一个封装,操作和Tensor是一样的,但是每个Variable都有三个属性:Varibale的Tensor本身的.data,对应Tensor的梯度.grad,以及这个Variable是通过什么方式得...
  • 为什么需要Variable Variables是Tkinter编程中非常重要的组成部分。它存在的目的是为了解决Python中存在的一个“问题”,即Python本身并不支持变量回溯。 而变量的回溯在GUI编程中是极为重要的部分。考虑如下的场景...
  • A variable maintains state in the graph across calls torun(). You add a variable to the graph by constructing an instance of the classVariable. TheVariable()constructor requires an initial value ...
  • Tkinter 支持将很多 GUI 组件与变量进行双向绑定,执行这种双向...为了让 Tkinter 组件与变量进行双向绑定,只要为这些组件指定 variable(通常绑定组件的 value)、textvariable(通常绑定组件显示的文本)等属性即可...
  • --------------- main.m --------------- #import  @interface FKUser : NSObject + (NSString*) nation; // 用于获取变量 + (void) setNation: (NSString*) newNation; 
  • condition_variable 是用来阻塞线程或者是多线程的同步原语,直到另一个线程修改完共享变量(the condition),并通知 condition_variable 。  尝试修改变量的线程必须: 获得std::mutex,典型的通过std::...
  • 为什么需要Variable Variables是Tkinter编程中非常重要的组成部分。它存在的目的是为了解决Python中存在的一个“问题”,即Python本身并不支持变量回溯。 而变量的回溯在GUI编程中是极为重要的部分。考虑如下的场景...
  • tensorflow tf.Variable()和tf.get_variable()详解

    万次阅读 多人点赞 2018-07-26 22:29:53
    tf.Variable是一个Variable类。通过变量维持图graph的状态,以便在sess.run()中执行;可以用Variable类创建一个实例在图中增加变量; Args参数说明: initial_value:Tensor或可转换为Tensor的Python对象,它是...
  • 1、参考文章2、在定义时,通过在尖...3、尖括号内的K、V等占位符其实就是的类型变量【TypeVariable】,并且可以通过的【getTypeParameters】方法获取。当然也可以限定只接受某些类型,通过【extends】去限制...
  • torch.autograd方法类Variable

    万次阅读 2017-08-23 14:24:44
    torch.autograd提供实现任意标量值功能的自动区分的和功能。 它需要对现有代码进行最小的更改,只需将所有张量包装在Variable对象中。 Variable API与常规Tensor API几乎相同(除了几个需要对梯度计算的输入进行...
  • pytorch之Variable对象

    2019-01-19 20:36:53
    Variable类封装了Tensor类,并且添加了一些方法 Variable类也重载了算术运算符,±*/,但未重载“+=”和“=”运算符,且不支持在原对象内存区域做修改
  • tf.Variable是一个Variable类 通过variable维持图graph的状态,以便在sess.run()中执行,可以用Variable类创建一个实例在图中增加变量 tf.Variable( initial_value=None, trainable=True, collections=None, ...
  • tf.Variable是一个Variable类。通过变量维持图graph的状态,以便在sess.run()中执行;可以用Variable类创建一个实例在图中增加变量; Args参数说明: initial_value:Tensor或可转换为Tensor的Python对象,它是...
  • tf.Variable是一个Variable类 通过变量维持图graph的状态,以便在sess.run()中执行;可以用Variable类创建一个实例在图中增加变量; Args:   initial_value:Tensor或可转换为Tensor的Python对象,它是Variable...
  • tf.Variable是一个Variable类。通过变量维持图graph的状态,以便在sess.run()中执行;可以用Variable类创建一个实例在图中增加变量; Args参数说明: initial_value:Tensor或可转换为Tensor的Python对象,它是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,543
精华内容 1,817
关键字:

variable类