如何在Python的两个函数之间传递一个变量/字典



我想在两个函数之间传递字典,但是如何在不使用全局变量的情况下做到这一点?

我试图传递字典,它在我的"fileProcessing"函数放入"swappingkandv_printingresults";函数,而不需要修改全局变量。

dictionary = dict()

fileinputname = input("Please Input File Name: ")
try:
filehandling = open(fileinputname)
except:
print("Invalid Entry")
quit()
rawfile = filehandling.readlines()
def fileProcessing(rawfile):
for iteration in(range(len(rawfile))):
rawfile[iteration] = rawfile[iteration].lower()
for line in rawfile:
line.rstrip()
line.split()
for words in line:
letter = words.split()
for iteration in letter:
if iteration.isalpha() :
dictionary[iteration] = dictionary.get(iteration, 0) + 1
def swappingKandV_PrintingResults(dictionary):
finalresults = []
for (k,v) in dictionary.items():
newtuple = (v, k)
finalresults.append(newtuple)
finalresults = sorted(finalresults, reverse=True)
for iteration in finalresults:
print(iteration)
fileProcessing(rawfile)
swappingKandV_PrintingResults(dictionary)

通过使第一个函数创建并返回字典。然后将返回的字典传递给第二个函数。

fileinputname = input("Please Input File Name: ")
try:
filehandling = open(fileinputname)
except:
print("Invalid Entry")
quit()
rawfile = filehandling.readlines()
def fileProcessing(rawfile):
dictionary = {}
for iteration in(range(len(rawfile))):
rawfile[iteration] = rawfile[iteration].lower()
for line in rawfile:
line.rstrip()
line.split()
for words in line:
letter = words.split()
for iteration in letter:
if iteration.isalpha() :
dictionary[iteration] = dictionary.get(iteration, 0) + 1
return dictionary
def swappingKandV_PrintingResults(dictionary):
finalresults = []
for (k,v) in dictionary.items():
newtuple = (v, k)
finalresults.append(newtuple)
finalresults = sorted(finalresults, reverse=True)
for iteration in finalresults:
print(iteration)
swappingKandV_PrintingResults(fileProcessing(rawfile))

从你表达问题的方式来看,似乎你对如何将参数传递给函数以及如何处理作用域有一些困惑。我建议先看看在Python中变量是什么,然后再把它传递给函数意味着什么。

您可以通过两种方式完成此任务:

1。嵌套函数调用:
如果你想在第一个函数之后调用第二个函数,只需写-'swappingKandV_PrintingResults(dictionary)'作为fileProcessing函数的结束行。

2。接受1的返回值并作为参数传递给2:
就像@Reti43坚持的那样,只写-'返回字典'作为fileProcessing函数的结束行,并将最后两行代码替换为-
Dict = fileProcessing(rawfile)
swappingKandV_PrintingResults(Dict)