麻烦的python函数

时间:2015-12-30 02:09:13

标签: python function python-2.7

我几天前开始学习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如何变成豆子?什么是(已启动)?...

3 个答案:

答案 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()。 你不必重新输入所有内容!