2013-10-14 7 views
0

У меня есть два файла. Один называется «variables.py» с этой функцией в:NameError после импорта файла

def get_players(): 
    ''' 
    (NoneType) -> Dictionary 
    Asks for player names 
    ''' 
    loop = True 
    players = {} 
    while loop == True: 
     player = input("Enter player names: ") 
     player = player.strip() 
     if player in players or player == "": 
      print("Choose a different name!") 
     elif "player1" in players: 
      players["player2"] = [player, 0] 
     elif player not in players: 
      players["player1"] = [player, 0] 
     if len(players) >= 2: 
      loop = False 
    return players 

И еще один файл в том же каталоге под названием «game.py» с этим внутри:

import variables 
players = get_players() 

Когда я пытаюсь запустить «игру .py "Я получаю эту ошибку NameError: name 'get_players' is not defined Почему ?! Я все пробовал!

+0

Я думаю, что вы можете либо сделать «из импорта переменных», либо попробовать 'variables.get_players()'. «Import *» означает импорт всего, поэтому он также может быть нацелен, говоря «import get_players». – kevintodisco

ответ

2

Это должно быть

players = variables.get_players() 

Поскольку вы импортировали только модуль variables, а не метод get_players.

Или вы могли бы также сделать:

from variables import get_players 

players = get_players() 

Подробнее о importing modules here

+0

Спасибо! Я чувствую себя настолько глупо сейчас. – Sindre

+0

Мы все были там:), чтобы не волноваться. Отметьте ответ как принятый, если он был полезен – karthikr

1

импортированы variables, не get_players. Вы можете сохранить импорт как есть и позвонить variables.get_players(), или сделать from variables import get_players, а затем позвонить get_players().

Это довольно фундаментальная вещь в Python: похоже, что вы можете воспользоваться базовым учебным пособием.

0

С Python, при импорте модуля, переменная модуль создается таким именем, который является, где все переменные импортированного модуля живут:

import variables 
players = variables.get_players() 

Вы также можете импортировать из модуль, который просто будет ввести это имя само по себе:

from variables import get_players 
players = get_players() 

Вы также можете выполнить следующие действия, чтобы импортировать все имена из модуля, но это не рекомендуется, поскольку это приводит к га rd-to-read code:

from variables import * 
players = get_players() 
Смежные вопросы