(python)这个i怎么才能设置为normalize 内部函数可以互相访问的变量 而不影响外部主程序

defnormalize(s):i=0defg(s):forstins:globaliifi==0:st=st.upper()else:st=st.lower()i=i+... def normalize(s):

i = 0

def g(s):
for st in s:
global i
if i == 0:
st = st.upper()
else:
st = st.lower()
i = i + 1
return st

def f(s):
result = []
str = ''
for item in s:
global i
x = map(g,item)
i = 0
result.append(str.join(tuple(x)))
return result
return f(s)
展开
 我来答
老夭来了
2017-01-15 · 知道合伙人软件行家
老夭来了
知道合伙人软件行家
采纳数:1806 获赞数:8100
2008年从事软件开发,拥有多年的python,php,linux工作经验,发布过多个python,php的开源项目。

向TA提问 私信TA
展开全部

两种方法

  1. 如果是python3可以食用nonlocal关键字,在嵌套函数中声明i变量

  2. 如果是python2,可以使用字典或列表封装,然后改变其中的i,而不是重新赋值

def foo():
    i = 0
    def printi():
        nonlocal i
        i = 2
        print 1
    printi()
def foo():
    i = [0]
    def printi():
        i[0] = 2
        print 1
    printi()
    print i
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式