改变函数中的全局变量

2024-06-17 09:43:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我是编程新手,我正在寻求一些建议。我要写的程序需要用户提供几个数字。 如果每个用户输入一个数值或不想输入一个数值,就用它来测试。如果输入的不是数字,我希望函数在输入一个数字之前一直要求输入一个数字。如果我想把每个变量都显式地声明为一个全局变量的话,我想把它们都显式地声明为一个全局变量。我不确定有没有更好的方法。。。在

rowNum = None

def numTest(c, d):
    x = False
    while x is not True:    
        try:
            c = raw_input(d)   
            c = float(c)
            x = True
        except:
            print "The value you entered isn't a valid number, please try again."            
    global rowNum 
    rowNum = c

numTest(rowNum, "Enter number of rows: ")
print rowNum
# I want to use the numTest function on several variables...
# e.g.
# numTest(contourLevel, "Enter number of contour levels: ")
# numTest(cellSize, "Enter cell size: ")
# numTest(labelSize, "Enter label size: ")

Tags: of用户true声明numbersize编程数字
2条回答

我没有足够的代表,所以我不能评论,但是: @沙克, 将return看作是一种内部print语句(您看不到返回的内容,但是Python解释器可以读取和使用/store/operate该值) print语句在屏幕上显示输出(对于人类),但对程序的计算/运行没有任何影响;return语句将输出发送到python解释器(针对程序),尽管屏幕上没有显示供人类阅读的内容。在

例如,如果函数返回字符串,则可以通过声明以下内容将输出存储为变量: 变量1=函数1(args)

它将把function1返回的字符串(基于参数的输入)存储为variable1。在

这对于组织代码非常有用,意味着您不必摆弄全局变量。在

需要注意的一点是,一旦函数返回一个值,就不会执行其他代码。在

例如:

def example(a, b):
    for n in range(1, 30):
        if a**n == b**4:
            return
            break
    else:
        return False

break和else语句是多余的,因为在函数执行return语句之后,不会执行其他代码。更好的方法是:

^{pr2}$

我希望我没有把你弄糊涂,因为我的回答有点偏离正题,只是想帮助你,因为我是新来的,当我学会这些话题时,发现这种解释很有用

只需使它成为一个函数,它可以返回某个值,而不是操纵全局,更易于维护!在

def get_num(msg):
    while True:    
        try:
            return int(raw_input(msg)) # number of rows should be int
        except ValueError:
            print "The value you entered isn't a valid number, please try again."            

num_rows = get_num("Enter number of rows: ")
print num_rows

而不是你提到的numTest(cellSize, "Enter cell size: "), 你应该做cellSize = get_num("Enter cell size: ")。最好是返回值。在

对于intfloat,可以将此函数设为更通用的函数,如下所示:

^{pr2}$

现在您还可以:

x = get_num("test") # normal int
x = get_num("foo", float)

相关问题 更多 >