Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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_Function_Python 3.x - Fatal编程技术网

Python自定义函数

Python自定义函数,python,function,python-3.x,Python,Function,Python 3.x,在过去的一周里,我一直在努力学习Python,它进展得非常顺利,但是现在我已经被介绍了自定义函数,我有点碰壁了。虽然我了解it的基本知识,例如: def helloworld(): print("Hello World!") helloworld() 我知道这会打印“你好,世界!” 然而,当涉及到从一个函数到另一个函数获取信息时,我发现这令人困惑。ie:功能1和功能2必须协同工作才能执行任务。另外,何时使用return命令 最后,当我在函数中有一个列表或字典时。我会编一些东西作为例子

在过去的一周里,我一直在努力学习Python,它进展得非常顺利,但是现在我已经被介绍了自定义函数,我有点碰壁了。虽然我了解it的基本知识,例如:

def helloworld():
    print("Hello World!")

helloworld()
我知道这会打印“你好,世界!”

然而,当涉及到从一个函数到另一个函数获取信息时,我发现这令人困惑。ie:功能1和功能2必须协同工作才能执行任务。另外,何时使用
return
命令

最后,当我在函数中有一个列表或字典时。我会编一些东西作为例子

def my_function():
    my_dict = {"Key1":Value1,
              "Key2":Value2,
              "Key3":Value3,
              "Key4":Value4,}
我如何访问键/值并能够从函数外部更改它们?ie:如果我有一个程序,可以让你在视频游戏中输入/输出玩家统计数据或角色属性

我理解其中的点点滴滴,当它们有不同的函数互相调用时,这让我很困惑


另外,因为这是我第一次遇到自定义函数。这真的是雄心勃勃的追求,这可能是我所有困惑的原因吗?因为这是我见过的最复杂的程序。

在函数之间传递信息的主要方法是使用参数和返回值。函数无法看到彼此的变量。以后你可能会这么想

def my_function():
    my_dict = {"Key1":Value1,
              "Key2":Value2,
              "Key3":Value3,
              "Key4":Value4,}
my_function()
my_dict
将具有其他函数可以看到的值,但事实证明,这是一种非常脆弱的语言设计方法。每次调用
my_function
my_dict
都会丢失其旧值,即使您仍在使用它。此外,在选择编写新函数时使用的名称时,您必须知道系统中每个函数使用的所有名称,整个过程将很快变得难以管理。Python不是这样工作的;我想不出任何语言能做到这一点

相反,如果函数需要使其调用者可以使用信息,
返回其调用者需要看到的内容:

def my_function():
    return {"Key1":"Value1",
            "Key2":"Value2",
            "Key3":"Value3",
            "Key4":"Value4",}
print(my_function()['Key1']) # Prints Value1

注意,一个函数在其执行命中<代码>返回语句时结束(即使它在一个循环的中间);现在不能执行一个返回,以后不能执行一个返回,继续执行,在函数结束时返回两个东西。如果要这样做,请保留一个要返回的内容列表,并在完成后返回该列表。

函数在python中既可以是常规的
过程
也可以是带有返回值的
函数
。实际上,每个Python函数都会返回一个值,可能是
None

如果return语句不存在,那么函数将完全执行,并按照代码流正常运行,从而产生
None
作为返回值

def foo():
    pass
foo() == None
>>> True
如果函数中有
return
语句。返回值将是它后面表达式的返回值。例如,您可能有
返回None
,您将显式返回
None
。您还可以让
返回
,而不使用任何其他内容,在那里您将隐式返回
,或者,您可以让
返回3
并返回值3。这可能会变得越来越复杂

def foo():
   print('hello')
   return
   print('world')

foo()
>>>'hello'

def add(a,b):
    return a + b
add(3,4)
>>>7
如果希望在函数中创建字典(或任何对象),只需返回它:

def my_function():
    my_dict = {"Key1":Value1,
              "Key2":Value2,
              "Key3":Value3,
              "Key4":Value4,}
    return my_dict
d = my_function()
d['Key1']
>>> Value1
这些是函数调用的基础。还有更多。有些函数返回函数(也被视为decorator。您甚至可以返回多个值(实际上不是这样,您只返回一个元组)和许多有趣的东西:)


希望这有帮助

您将信息分别发送到带有参数的函数和返回值的函数中。此功能,例如:

def square(number):
    """Return the square of a number."""
    return number * number
。。。通过
number
参数接收信息,并使用
return…
语句返回信息。您可以这样使用它:

>>> x = square(7)
>>> print(x)
49
def my_function(my_dict):
    # do something with my_dict
    return my_dict
如您所见,我们将值
7
传递给函数,它返回值
49
(存储在变量
x
中)

现在,假设我们有另一个函数:

def halve(number):
    """Return half of a number."""
    return number / 2.0
我们可以通过几种不同的方式在两个函数之间发送信息

  • 使用临时变量:

    >>> tmp = square(6)
    >>> halve(tmp)
    18.0
    
  • 将第一个函数直接用作第二个函数的参数:

    >>> halve(square(8))
    32.0
    
  • 你使用哪一个部分取决于个人品味,部分取决于你想做的事情有多复杂

    尽管它们的名称相同,但
    square()
    halve()
    中的
    number
    变量彼此完全分离,在这些函数之外它们是不可见的:

    >>> number
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'number' is not defined
    
    。。。并在函数外部定义
    my_dict


    (实际上比这要复杂一点-
    dict
    对象是可变的(这只是意味着它们可以更改),因此通常您实际上不需要返回它们。但是,为了安全起见,目前可能最好习惯于返回所有内容).

    在函数中始终使用return。我认为您必须更具体一些。你能举一个你可能想做的事情的例子吗?@SantoshKumar我认为这是一个很好的指南,但不是每个函数都应该使用
    return
    。一个很好的例子是只使用
    打印的函数@SethMMorton我们总是可以使用
    print(my_函数)
    来处理这种情况。在
    def foo()
    示例中,它是
    return
    print(“world”)
    这样做的目的是什么,还有,您实际如何让函数打印“world”的实例?其目的是向您显示
    return
    语句完成了函数的执行。它下面的任何东西都不会被执行(虽然很清楚,但仍然只是想展示)哦,好的,谢谢。所以
    def my_function(my_dict):
        # do something with my_dict
        return my_dict