【问题标题】:Basic explanation of python functionspython函数基本解释
【发布时间】:2015-12-01 07:19:58
【问题描述】:

我在下面有一个基本问题,可以帮助我了解 Python 中的函数(按照 LPTHW 教程为 uni 做准备)。有人可以解释下面的语法,以及我的假设是否正确?

def print_two_again(arg1, arg2):
    print "arg1: %r, arg2: %r" % (arg1, arg2)

print_two_again("Steve","Testing")

我知道print_two_again 是函数的名称,但是在它旁边的括号中添加arg1arg2 的目的是什么?是在下面的打印命令中调用"Steve""Testing"吗?还是这些字符串直接进入print 命令?

【问题讨论】:

    标签: python function


    【解决方案1】:

    接下来在括号中包含 arg1、arg2 的目的是什么 给它?

    在这种情况下,arg1arg2 被称为参数。参数允许函数接收预期用于执行任务的输入。输入由调用者提供。

    例如,在学校数学中,您可能已经见过像 z = f(x, y) 这样的东西,其中名为 f 的函数被定义为 f(x, y) = x + y。这与编程语言中的概念相同。

    它还允许您编写更通用、更灵活且可重用的代码。例如,您不必编写许多不同版本的函数来完成相同的任务但结果略有不同,避免出现add2(x, y) = x + yadd3(x, y, z) = x + y + z 等情况。您可以简单地执行以下操作:

    def sum(values):  # values is of type 'list'
        result = 0
        for value in values:
            result += value
        return result
    

    然后这样称呼它:

    total = sum([1, 2, 3, 4, 5, 6, 7]) # a list of any length with numbers

    或者像这样:

    total = sum([1, 2])

    一个函数需要多少个参数取决于它需要做什么以及其他因素。

    更新

    让我困惑的是 print_two_again("Steve","testing") ,什么是 这叫什么以及它的用途?

    print_two_again("Steve","testing") 行是函数的调用(即函数调用)。这会导致程序“跳转”到名为print_two_again 的函数的主体中并开始执行其中的代码。

    ("Steve","testing") 部分是作为输入发送到函数的参数。这些是位置参数,这基本上意味着它们被“映射”到名称arg1arg2,基于您在调用函数时提供它们的顺序。

    例如,考虑函数f(x, y) = x - y。如果这个函数被调用为z = f(3, 4),那么名为x 的参数将接收到值3y 将是4,返回-1。如果您反转调用中的参数,那么您将拥有x=4y=3,它会返回1。您提供的函数中的参数也是如此。

    这意味着函数调用中的参数顺序很重要

    与许多其他语言一样,Python 语言已经具有一组内置功能。名为print 的函数就是一个例子。您可以使用pydoc 命令获取大量信息(如果您使用Python3,我推荐使用pydoc3)。例如,命令pydoc3 print 会生成以下文档:

    关于内置模块内置函数打印的帮助:

    打印(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
    

    请注意,这是 Python3 的文档。 Python2 文档会略有不同。

    您在学校数学课程中对函数的理解与在编程语言中看到的函数之间存在直接关联。这是因为数学是计算机科学和编程语言等基础基础的一部分(例如算法分析)。

    【讨论】:

      【解决方案2】:

      将arg1、arg2放在括号中的目的是什么?

      arg1arg2 是输入的名称,函数可以从那里使用这些输入。在您的情况下,您的功能是打印它们。其他函数可以使用这些参数做其他事情。但是让我们一步一步来。

      def print_two_again(arg1, arg2):
          print "arg1: %r, arg2: %r" % (arg1, arg2) 
      

      在以def 开头的前两行中,您定义了一个函数。它做某事。在你的情况下打印它需要的两个参数。

      print_two_again("Steve","Testing")
      

      在第三行,您实际要做的是调用该函数。当您调用该函数时,您告诉该函数将 "Steve""Testing" 参数传递给函数定义。

      上面一行字面上称为函数调用。假设您有一个程序,并且希望它打印两个单词。您需要定义您希望它如何完成。这称为函数定义,您可以在其中定义事物的工作方式。没关系,但还不够。你会想要实现它。所以你要做的是执行那个功能。这称为函数调用

      print_two_again("First","Call")
      print_two_again("Second","Call")
      

      在上面几行中,我们所做的是两次调用之前定义的函数,但参数不同。

      现在让我们看看第二行,它可能会让你感到困惑。

      print "arg1: %r, arg2: %r" % (arg1, arg2) 
      

      print 是 Python 的内置函数。上面这行所做的是传递 arg1arg2 参数并以"arg1: %r, arg2: %r"

      的格式打印它们

      【讨论】:

      • 感谢塞米赫。让我困惑的是 print_two_again("Steve","testing") ,这叫什么以及它的用途?
      【解决方案3】:

      括号中的 arg1、arg2 的目的是什么?

      这里 def print_two_again(arg1, arg2): 是一个函数,arg1, arg2 被称为 argument 并且在函数中它们是两个变量,print_two_again 函数需要两个参数。

      让我困惑的是 print_two_again("Steve","testing")?

      当你打电话给print_two_again("Steve","Testing") 时,arg1 receive Steve and arg2 receive Testing

      当你想print,内部(ie. in between ".....")放置任何文本为简单文本,%r用于捕获对应的变量值。

      如果你愿意,你可以重写如下:

      print "Argument 1: %r, Argument 2: %r" % (arg1, arg2)
      

      您可以更改平面文本,但变量列表遵循您首先指定的名称。

      【讨论】:

        【解决方案4】:

        简而言之,“参数 = 传递给函数的数据”。使用这些数据,我们可以进行计算或简单地打印出来。

        在函数内部我们打印 arg1 和 arg2 。即传递给函数的“steve”和“Testing”将被打印出来。

        【讨论】:

          猜你喜欢
          • 2013-03-28
          • 1970-01-01
          • 2015-08-03
          • 1970-01-01
          • 2022-01-12
          • 1970-01-01
          • 2016-04-14
          • 2013-10-26
          • 1970-01-01
          相关资源
          最近更新 更多