Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将函数分配给变量?_Python - Fatal编程技术网

Python 如何将函数分配给变量?

Python 如何将函数分配给变量?,python,Python,我正在创建一个文本游戏,所以这里是我遇到的问题: def characters(): def assassin(): dmg = 150 health = 500 print "Do you want to become an assassin ?" choice = raw_input("> ") if choice in ["Yes", "yes", "YES"]: print "So you said %s about becom

我正在创建一个文本游戏,所以这里是我遇到的问题:

def characters():

    def assassin():
        dmg = 150
        health = 500

print "Do you want to become an assassin ?"
choice = raw_input("> ")

if choice in ["Yes", "yes", "YES"]:
    print "So you said %s about becoming an assassin" % choice
    choice = assassin() # Error
else:
    print "Templar detected!"
所以我想将choice变量设置为刺客()函数,然后我想将刺客()函数的属性复制到choice变量,但我得到的只是一个错误,即“刺客未定义”

那么,我该怎么做呢

刺客函数除了为变量dmg和health分配一些值外,什么都不做。

您有两个问题:

如果选择==“是”或“是”或“是”:
不会做你认为它会做的事

在Python中,
x或y
总是基于
x
y
的值返回
True
False
。 Python intepreter对这一行的解释不同于它在英语中的解释

如果(选项==“是”)或(“是”)或(“是”),则与此
相同。
由于非空字符串具有布尔值
True
,这与
if(选项==“Yes”)或True或True
相同。该-
(choice==“Yes”)或True的第一部分将
True
作为
的参数,因此它(以及整行)将始终为
True

第二个问题是您误解了函数是如何工作的。 首先,这两个函数都不起任何作用。函数是为某些代码命名的一种方式,如果您多次调用它,它会使程序变短


其次,函数定义中的变量(以及在其他函数中定义的函数)在函数外部是不可访问的。这就是变量
刺客
不在
字符
函数定义之外的原因。

请参阅;您的
选择
测试无法按编写的方式运行。您的
字符
函数没有任何作用。你的意思是让所有剩余的代码也包含在
字符中吗?这应该是OOP吗?也许看看你的if声明可以引起一些注意
if choice.upper()==“YES”
将处理所有案例问题。@Marwan请重新阅读有关函数及其用途的章节。您似乎误解了它,很难猜测您使用这些函数究竟想要实现什么。您正在解决的任务实际上不需要局部函数,而且您的函数也不做任何事情。我们真的很想帮忙,但似乎我们甚至找不到沟通的共同点。我想做的是将函数中的变量设置为一个新变量,我该怎么做?@Marwan你不能这样做,你不应该这样做:)@BartoszKP我现在明白了hahaSo,你发现了什么?@MagnusN我发现函数只有在被调用时才起作用,因为它是一块可以在你需要时调用的代码。。所以我最大的错误是试图把一个函数当作一个类来对待,但现在我得到了它