【问题标题】:How to pass one variable/dictionary between two functions in Python如何在 Python 中的两个函数之间传递一个变量/字典
【发布时间】:2021-10-18 10:42:32
【问题描述】:

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

我正在尝试将“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)

【问题讨论】:

  • 从第一个函数返回字典的值,然后传递给下一个。
  • 很抱歉打扰你,你有什么资源可以告诉我如何做到这一点吗?
  • 只需将return dictionary 添加到fileProcessing 函数的末尾即可。然后将返回的值赋给一个变量;例如d = fileProcessing(rawfile)。现在您可以拨打swappingKandV_PrintingResults(d)
  • 附带说明,您应该在打开文件时使用 Python 的 with(以便文件指针正确关闭等)。参见例如here.
  • 不相关,但line.rstrip() 不会修改原始对象,而是创建一个您必须自己保存的新字符串,即line = line.rstrip()line.split() 也一样。

标签: python dictionary global-variables


【解决方案1】:

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

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 中的变量是什么,然后将其传递给函数意味着什么。

【讨论】:

    【解决方案2】:

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

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

    2。接受第一个返回并作为参数传递给第二个:
    正如@Reti43 所坚持的那样,只需写 - 'return dictionary' 作为 fileProcessing 函数中的结束行,并将最后两行代码替换为 -
    Dict = fileProcessing(rawfile)
    swappingKandV_PrintingResults(Dict)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 2019-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      相关资源
      最近更新 更多