我几天前开始学习python(2.7),使用LearnPythonTheHardWay,现在我正在学习函数,我有点迷失。有人可以解释我他们是如何工作的(如果可能的话,有一个例子,另一个例子更难说)?如果你知道一些有助于我旅行的提示,我将不胜感激。 谢谢。 PS:我之前没有任何编程知识。我是从头开始的。
例如(简单的一本(来自书中)):
def secret_formula(started):
jelly_beans = started * 500
jars = jelly_beans / 1000
crates = jars / 100
return jelly_beans, jars, crates
start_point = 10000
beans, jars, crates = secret_formula(start_point)
print "With a starting point of: %d" % start_point
print "We'd have %d beans, %d jars, and %d crates." % (beans, jars, crates)
jelly_beans如何变成豆子?什么是(已启动)?...
答案 0 :(得分:2)
通常在编程中,您应该将函数视为获取输入并生成输出。例如:
def square(num):
return num**2
returns
(重要关键字)值num**2
,自**
以来的num平方是Python中的取幂。 然而,您可以在定义中包含一些不返回任何内容(没有实际输出)的内容。例如:
def square(num):
squared = num**2
实际上没有赢回任何东西。但是,它仍然是一个有效的功能。
如果你继续学习python,你会遇到很多功能。即使你变得更熟练,你可能会继续难以理解困难的东西,所以不要太依赖它们。如果有什么特别的东西你不明白,这将是一个很好的问题。有关更复杂功能的示例:
def fibonnaci(n=1):
if n in [1,2]:
return 1
else:
return fibonnaci(n-1)+fibonnaci(n-2)
答案 1 :(得分:2)
在这一行:
beans, jars, crates = secret_formula(start_point)
将secret_formula的返回值赋给bean。
在secret_formula中,它创建了jelly_beans变量,该变量仅在secret_formula内部时才存在。在secret_formula运行之后,return jelly_beans, jars, crates
定义的结果可以分配给新变量。在这种情况下,它会将这些变量分配给beans, jars, crates
所以,豆类等于jelly_beans,罐子等于罐子,板条箱等于板条箱。
答案 2 :(得分:1)
在理解功能的过程中,就是回到基础数学。
考虑数学表达式:
f(x) = x + 2
在这种情况下,f(x)
会将x
的值加2。
因此,f(0) = 0 + 2
给出2。
与x
的其他值类似。
when x = 3....f(3) = 5
when x = 5....f(5) = 7
因此,对于输入值x
,它将产生一个输出,即表达式x + 2
的评估。
在python中,这个表达式将是这样的:
def f(x): # here x is the input value
output = x + 2 #calculates the expression using x
return(x+2) #and we return the value
假设我们想要找到x = 3
的值。这将是:f(3)
f(3)
现在会给你5个。
我们可以将此值保存在另一个变量
中y =f(3)
这里y
保存我们的函数返回的值,当你向它传递3时。因此,y将是5。
在您的示例中,
def secret_formula(started): #here we have **started** instead of x
jelly_beans = started * 500 #bunch of calculations
jars = jelly_beans / 1000
crates = jars / 100
return jelly_beans, jars, crates #returns the calculated value
在此之下,
start_point = 10000
beans, jars, crates = secret_formula(start_point) #what will the output be , if I give 1000 to secret_formula .. ie... secret_formula(1000)
现在secret_formula
函数返回三个输出
return jelly_beans, jars, crates
我们将按照相应的顺序将这些输出分配给beans, jars, crates
。
现在beans
将具有jelly_beans
所具有的值,依此类推......
那么jelly_beans
发生了什么?粗略地说,函数中使用的变量只能在其自身内部使用。将它们视为中间值,一旦使用就丢弃。请阅读范围和范围规则。
该函数将返回一些我们现在存储在其他变量中的值。
当你不得不重复做某事时,功能非常有用。您可以直接调用该函数,而不是一次又一次地重写相同的代码。
考虑这个,随机场景:
def printNow():
print("Hiwatsup, blah blah blah ")
#some insane calculations
print("Hiwatsup, blah blah blah ")
#more random things.
现在,只要你想做所有这些事情,你只需要放printNow()
。
你不必重新输入所有内容!