2013-10-14 75 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

我想你可以'從變量import *'或嘗試'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() 

您也可以執行以下操作從模塊導入所有的名字,但它氣餒,因爲它會導致公頃讀取代碼:

from variables import * 
players = get_players()