我的def功能不起作用,我需要保存它然后导入到另一个项目吗?

时间:2013-07-29 04:17:14

标签: python python-2.6

好的,我是Python的菜鸟,清除空气。我15岁刚开始学习Python,认为这是最好的编程语言。这可能看起来很愚蠢,但在这里,谁可以调试这个或自动更正呢? :P

def firstlogin(x,y):
    x=raw_input('Enter name: ')
    if x == 'Bob':
        return 'Hello there,press enter to go to the next test.'
    y=raw_input('Enter pass: ')
    if y == 'password':
        return ('You are now free to *** this account up')

因为def是一个函数,你可以在其中创建自己的函数,防止一遍又一遍地编写相同的函数,或者基本上只是自己创建函数。但是当我将其保存为.py时,我无法打开它。我想当我想将它用于另一个项目时,我必须将它输入/导入到python中,或者是否有另一种方式。

PS :自学,我生活在一个我无法获得编程语言书籍的国家:( ..所以我在网上冲浪..使用一点点Bucky的视频和等

3 个答案:

答案 0 :(得分:3)

您可以将其保存为您想要的任何名称,例如“foo.py”。

然后在你的另一个python文件中,你可以通过导入它来使用这个功能:

import foo
...

foo.firstlogin(bar,baz) # how to call the function.

答案 1 :(得分:2)

此功能不会按照您的想法执行,因为您在第一次检查后返回,因此只会继续询问名称,当用户输入Bob时,不会发生任何事情,因为您不是对结果做任何事情。

由于您要覆盖要传递给该函数的任何用户名和密码,因此它将始终检查Bob而不是您要求它检查的内容。

请尝试使用此版本:

def firstlogin(user, passwd):
    ''' A function to check the username
        and password for a user '''

    x = raw_input('Enter Name: ')
    if x == user:
        y = raw_input('Great! Now try guessing the password: ')
        if y == passwd:
            print 'Correct!'
        else:
            print 'Sorry, password was wrong'
    else:
        print 'Sorry, username was wrong'

将其保存到文件中,让我们说my_func.py,然后将其保存在同一目录中的另一个文件中,输入:

from my_func import firstlogin

firstlogin('user','sekret')

或者您可以键入python以再次从保存my_func.py的同一目录进入交互式提示:

>>> from my_func import firstlogin
>>> firstlogin('user','sekret')

答案 2 :(得分:1)

检查功能的一种方法如下所示:

def firstlogin(x,y):
    x=raw_input('Enter name: ')
    if x == 'Bob':
        return 'Hello there,press enter to go to the next test.'
    y=raw_input('Enter pass: ')
    if y == 'password':
        return ('You are now free to *** this account up')


if __name__ == '__main__':
    firstlogin(bar, baz)

然后使用此命令:python foo.py

这里发生的是魔术变量__name__由Python设置为值__main__,告诉您模块已直接从命令行加载。

当您从另一个Python模块调用模块时,如下所示:

import foo
firstlogin(bar, baz)

魔术变量__name__将设置为foo,包含您的函数的模块的名称,因此您的引导代码将不会被执行。这是Python中使用的标准习惯用法,允许您检查代码,即使您通常打算从其他模块调用它。正如您所看到的那样__name__通常是模块的名称,但是当您直接从命令行调用模块时,它会设置为__main__