跳到内容

Python 编程入门/Python 编程 - 函数

来自维基教科书,开放的书,开放的世界

5. 函数

[编辑 | 编辑源代码]

Python 中的函数是一组代码,执行单个实用程序,可能或可能不返回结果。函数提供了将复杂代码分解为可重用代码块的方法,这些代码块可以用作不同程序的构建块。Python 已经提供了许多内置函数,例如 print、input 等。您可以编写自己的 Python 函数,称为用户定义函数。

5.1. 定义函数

[编辑 | 编辑源代码]

如前所述,可以编写一组代码来执行某些实用程序。以下规则提供了编写自己的函数的指南。当用户定义的函数名称调用函数时,函数将被执行。

函数块以关键字“def”开头,后跟用户提供的函数名称和括号 ()。用户提供给函数的输入放在括号内,进一步扩展括号可用于定义要在用户定义函数内使用的新的参数。Python 提供文档,可用于描述函数、作者、创建日期和用户定义函数的目的等。可以使用用户定义函数名称后的 __doc__ 关键字访问用户定义函数的文档。关键字 return 用于退出函数,可选地将表达式传递给函数的调用者。

5.2. 语法

[编辑 | 编辑源代码]
   def functionname(parameters):
   ‘’’function docstring’’’

代码块

       	Return(expression)

例子

   >>> def squareofnum(n):
        This function returns the square of the number passed as the parameter
       return n*n
   >>> print squareofnum(3)
   9
   >>> print squareofnum.__doc__
       This function returns the square of the number passed as the parameter
   >>>
   >>> def myappendlist(mylist,a):
        this function appends a list to the already existing list
           mylist.append(a)
           return
   >>> a=[1,2,3,4]
   >>> b=[6]
   >>> 
   >>> a
   [1, 2, 3, 4]
   >>> b
   [6]
   >>> print myappendlist(a,b)
   None
   >>> a
   [1, 2, 3, 4, [6]]
   >>>

5.3. 函数参数

[编辑 | 编辑源代码]

可以通过按正确的顺序传递参数、提及关键字参数、默认参数、可变长度参数来调用函数。

   #function is defined here
   >>> def newfunction(n):
       print "inside function"
       answer= n*n*n
       return answer
   >>> print newfunction(2)
   inside function
   8
   >>> print newfunction()
   Traceback (most recent call last):
     File "<pyshell#203>", line 1, in <module>
       print newfunction()
   TypeError: newfunction() takes exactly 1 argument (0 given)
   >>>
   >>> def vistingcard(name, age="22"):
           print "the name is %s" %name
           print "the age is %d" %age
           return
   >>> vistingcard("new", 33)
   the name is new
   the age is 33
   >>> vistingcard(age=34, name="no name")
   the name is no name
   the age is 34
   >>> vistingcard(36, "newname")
   the name is 36
   Traceback (most recent call last):
     File "<pyshell#221>", line 1, in <module>
       vistingcard(36, "newname")
     File "<pyshell#218>", line 3, in vistingcard
       print "the age is %d" %age
   TypeError: %d format: a number is required, not str
   >>>

可以使用 * 将可变长度参数传递给函数。以下提供了示例。

   >>> def variableargfunc(*argu):
       print "inside function"
       for a in argu:
           print a
           return
   >>> variableargfunc(10)
   inside function
   10
   >>> 
   >>> variableargfunc(10,20)
   inside function
   10
   20
   >>> 
   >>> variableargfunc([1,2,3,4,5])
   inside function
   [1, 2, 3, 4, 5]

5.4. 变量作用域

[编辑 | 编辑源代码]

在使用它们的函数的作用域内定义了两种类型的变量。函数内的变量对函数是局部的,被称为函数的局部变量,全局变量是在变量作用域之外定义的。

   >>> globalvariable=0
   >>> def scopefunc(n,m):
           globalvariable=n+m
           print "the local variable is %d " %globalvariable 
           return globalvariable
   >>> 
   >>> print "outside the function scope %d " %globalvariable
   outside the function scope 0 
   >>> scopefunc(5,6)
   the local variable is 11 
   11
   >>> print "outside the function scope %d " %globalvariable
   outside the function scope 0 
   >>>
华夏公益教科书