首页 > 解决方案 > 如何在python中不使用全局

问题描述

我的代码使用全局来定义一些变量,但是有没有其他方法可以在不使用全局的情况下定义它们?否则,我会遇到关于未定义变量的错误。

这是我的代码:

#takes list of rows of code, returns dict of alumni and grad year
def makeAlumniDict():
    global my_dict
    my_dict = {'Charell Adagala': 2018, 'Sukhneet kaur': 2018, 'Mayanka Jha': 2019,
            'Paul Cheakalos': 2018, 'Elizabeth(Liz)Boniface': 2013,
            'Kati Illieva': 2021, 'Suzy wilson': 2018, 'Ronit Gopalani': 2019}

#takes dictionary of alumni and years, returns list of alumni grads between years (inclusive)
def betweenYears():
    makeAlumniDict()
    
    names = []
    for name, date in my_dict.items():
        if start <= date <= end:
            names.append(name)
    print(names)
    

#MAIN CODE
def main():
    
    global start
    global end
    start = int(input('Start Year: '))
    end = int(input('End Year: '))


    betweenYears()
    
main()

标签: python

解决方案


您可以像这样在函数之间传递变量:

#takes list of rows of code, returns dict of alumni and grad year
def makeAlumniDict():
    return {'Charell Adagala': 2018, 'Sukhneet kaur': 2018, 'Mayanka Jha': 2019,
            'Paul Cheakalos': 2018, 'Elizabeth(Liz)Boniface': 2013,
            'Kati Illieva': 2021, 'Suzy wilson': 2018, 'Ronit Gopalani': 2019}

#takes dictionary of alumni and years, returns list of alumni grads between years (inclusive)
def betweenYears(start, end):
    my_dict = makeAlumniDict()
    
    names = []
    for name, date in my_dict.items():
        if start <= date <= end:
            names.append(name)
    print(names)
    

#MAIN CODE
def main():
    
    start = int(input('Start Year: '))
    end = int(input('End Year: '))

    betweenYears(start, end)
    
main()

推荐阅读