将列表传递给导入的函数

2024-05-13 22:48:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我将以下程序中的函数放入一个模块中,但是当我将模块导入一个单独的程序并调用这些函数时,我得到一个错误(见下文)。我需要做什么才能使函数使用模块正确运行?非常感谢您的帮助。你知道吗

原始程序:

def print_m(unprinted, completed):
    while unprinted:
        current = unprinted.pop()
        print("Printing: " + current)
        completed.append(current)

def show_completed(completed):
    print("\nThe following have been printed:")
    for completed_item in completed:
        print(completed_item)

unprinted = ['star', 'sword', 'model']
completed = []

print_m(unprinted, completed)
show_completed(completed)

将函数放入模块-打印_函数.py地址:

def print_m(unprinted, completed):
    while unprinted:
        current = unprinted.pop()
        print("Printing: " + current)
        completed.append(current)

def show_completed(completed):
    print("\nThe following have been printed:")
    for completed_item in completed:
        print(completed_item)

编写了单独的程序来导入模块:

import printing_functions as pf

unprinted = ['star', 'sword', 'model']
completed = []

pf.print_m(unprinted, completed)
pf.show_completed(completed)

运行程序时,出现以下错误:

NameError: name 'completed' is not defined

更新:

我在上面的代码中使用了较短的术语,它看起来确实有效,这让我更加困惑。在下面张贴原始代码。如果上面的工作,为什么下面的模块不工作?你知道吗

def print_models(unprinted_designs, completed_designs):
    """
    Simulate printing each design, until none are left.
    Move each design to completed_models after printing.
    """
    while unprinted_designs:
        current_design = unprinted_designs.pop()

         #Simulate creating a 3D print from the design.
        print("Printing model: " + current_design)
        completed_models.append(current_design)

def show_completed_models(completed_models):
    """Show all the models that were printed."""
    print("\nThe following models have been printed:")
    for completed_model in completed_models:
        print(completed_model)

unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']
completed_models = []

print_models(unprinted_designs, completed_models)
show_completed_models(completed_models)

模块

def print_models(unprinted_designs, completed_designs):
    """
    Simulate printing each design, until none are left.
    Move each design to completed_models after printing.
    """
    while unprinted_designs:
        current_design = unprinted_designs.pop()

         #Simulate creating a 3D print from the design.
        print("Printing model: " + current_design)
        completed_models.append(current_design)

def show_completed_models(completed_models):
    """Show all the models that were printed."""
    print("\nThe following models have been printed:")
    for completed_model in completed_models:
        print(completed_model)

新程序

import printing_functions as pf

unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']
completed_models = []

pf.print_models(unprinted_designs, completed_models)
pf.show_completed_models(completed_models)

回溯:

回溯(最近一次呼叫): 文件“/home/pi/Documents/Python Projects/Python\u work/8-15\u printing_型号.py“,第6行,在” pf.U型号(未印刷的设计,已完成的模型) 文件“/home/pi/Documents/Python Projects/Python\u work/printing_函数.py“,第11行,印刷型” 已完成_模型.append(当前设计) NameError:未定义名称“completed\u models”


Tags: 模块函数程序modelmodelsdefshowcurrent