python - 如何在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()
解决方案
您可以像这样在函数之间传递变量:
#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()
推荐阅读
- python - 如何在执行轮廓检测后画圆
- sql-server - 列名“id”无效 - 这是我尝试从表中选择特定列时的错误
- python - 根据pandas Dataframe中的多列替换多列值
- xcode - 应用商店连接错误:ITMS-90683:Info.plist 中缺少目的字符串 -
- sql-server - 当 Select distinct From Features 给出错误 ORDER BY 项目必须出现在选择列表中?
- html - textarea 背景颜色与 body 不同(略暗)
- python - 如何设置二维数组中某些元素的值,它们的位置在 numpy 列表中?
- css - 有没有办法使用自定义图标进行材质ui的分页
- c# - 使用最小起订量进行 SqlQuery() 测试的 DbContext 模拟 - 数据库中已经有一个名为“public”的对象
- python - 在全局声明之前分配名称“运行”