Python,如果带有变量的语句错误说未定义

Posted

技术标签:

【中文标题】Python,如果带有变量的语句错误说未定义【英文标题】:Python, If statement error with variables says not defined 【发布时间】:2021-09-03 18:42:15 【问题描述】:

当我尝试在 python 中使用 if 语句时遇到问题。 我看不到变量是真还是假,因为它说该变量未定义,但我在方法中定义了它。

我也在使用 kivy 和 kivyMD,以防人们想知道为什么有些代码在那里。

from kivymd.app import MDApp
from kivymd.uix.screen import Screen
from kivymd.uix.button import MDRectangleFlatButton, MDRoundFlatButton
from kivymd.uix.textfield import MDTextField
from kivy.lang import Builder
from kivymd.uix.menu import MDDropdownMenu

class DemoApp(MDApp):
    def show_data(self):
        inputFahrenheit = self.root.ids.fahrenheit.text
        if fahrenheit1 is True:
            Celsius_Half = float(inputFahrenheit) - 32 
            Celsius_Before_Round = Celsius_Half * 5/9

            Celsius = round(Celsius_Before_Round , 1)

    def convert1F(self):
        fahrenheit1 = True
        celsius1 = False

    def convert1C(self):
        fahrenheit1 = False
        celsius1 = True

    def convert2F(self):
        fahrenheit2 = True
        celsius2 = False

    def convert2C(self):
        fahrenheit2 = False
        celsius2 = True

    def on_start(self):
        self.theme_cls.primary_palette = "Green"
        self.theme_cls.primary_hue = "A700"
        self.theme_cls.theme_style = "Light"

    def build(self):
        kv = Builder.load_file("test.kv") 
        screen = Screen()
        return kv
            
    
DemoApp().run()

if语句有问题有副本有问题: "fahrenheit1" is not defined

【问题讨论】:

函数是变量命名空间。局部变量仅在它们内部有效。您在方法中需要的内容应附加到 self 并在 __init__() 中初始化。 它说"fahrenheit1" is not defined因为没有定义“fahrenheit1”。首先,它似乎是在您的“convertxx()”方法中定义的。然后即使在那里,它们也是局部变量(仅限于函数的范围)。 如果不是 if 语句。变量fahrenheit1 及其朋友是您定义的方法的本地变量。它们在方法返回后消失,并且在方法之外不可见。这就是你得到NameError的原因。 ...如果你想在方法中使用fahrenheit1和朋友,你必须在self.fahrenheit1等类中声明它们。 有人可以一步一步告诉我该怎么做,因为我对编程有点陌生 【参考方案1】:

为了定义fahrenheit1,您需要将其声明为类属性。 在类中定义 __init__ 或作为类顶部的静态属性,在任何方法之外)为 fahrenheit1: bool = <your_defualt_value>

【讨论】:

【参考方案2】:

因为没有定义变量 fahrenheit1。 先解决这个问题

【讨论】:

以上是关于Python,如果带有变量的语句错误说未定义的主要内容,如果未能解决你的问题,请参考以下文章

Python脚本中的变量未定义

未定义的变量:Laravel中的错误

python lambda引发带有多个参数的变量未定义错误

收到未定义 USER_AGENT 的错误(Python 3)

错误Wordpress jquery表单错误说未引用的功能?

Ajax 帖子说未定义 laravel 6