无法理解python中变量的范围

时间:2015-02-17 07:29:12

标签: python

我写了这个简单的函数来检查给定的字符串是否是回文

from math import ceil
p=0
def pal(s):
    y=0
    p=0
    for x in range(int(ceil(len(s)/2))):
        if s[x]==s[-x-1]:
            y+=1
            print y
    if y==int(ceil(len(s)/2)):
        print "Palindrome"
    else:
        print "Not Palindrome"

这很好用。但是,如果找到回文,我想将找到的变量更改为1。否则为0。通过其他一些我想检查的功能

if found==0:
   do_something
else:
   do_something

我变量未定义错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

首先,让我们定义一个函数,如果它的参数是回文,则返回1,否则返回0:

def palindrome(s):
    return int(s == s[::-1])

现在,我们可以将回文函数的结果分配给变量found并对其执行某些操作,例如print:

found = palindrome('abba')
if found == 1:
    print "Palindrome"
else:
    print "Not Palindrome"

使用全局变量

也可以使用全局变量从函数返回信息:

def palindrome(s):
    global found
    found = int(s == s[::-1])

palindrome('abccba')
if found == 1:
    print "Palindrome"
else:
    print "Not Palindrome"

但是,使用全局变量时,代码通常更难以调试和维护。因此,不鼓励大多数使用全局变量。举例来说,谷歌的python风格指南在标题"Avoid global variables."下更详细地讨论了这个问题。