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