何为函数,如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数。
如何定义一个函数,定义函数的格式,
def func(): pass比如我们定义一个具有打印功能的函数,
def func(): print("hello python") func()
定义好函数后,直接 函数名()即可调用函数,定义完函数的时候函数不会自动执行,需要调用才会运行。
函数的文档的说明。有时候我们需要对函数进行文本解释,让别人知道我们写的函数是什么功能。一般我们会在函数定义以后用双引号和三引号来写一段文档对函数进行说明。建议最好使用三引号,这样可以换行。当需要查看文档说明时,可以用help函数,help(函数名)。示例:
def func(): """这是一个 打印函数""" print("hello python") func() help(func)
运行结果:
hello python
Help on function func in module __main__:func()
这是一个打印函数
函数传参。有时候,我们需要给函数传参数,这时就需要定义有参数的函数了。示例:
def add2num(a, b):
c = a+b
print c
调用有参函数。add2num(11, 22) # 调用带有参数的函数时,需要在小括号中,传递数据
函数返回值。如果函数想将值返回给函数的调用者,需要使用return。return可以结束函数的执行。如果return多个值时,比如return a ,b ,则默认返回的是一个元祖。示例:
def add2num(a, b):
c = a+b
return c
调用有返回值的函数,在调用有返回值的函数时,因为函数有返回值,所以我们需要保存函数的返回值。也就是需要用东西来接收函数的返回值。示例:
#定义函数
def add2num(a, b):
return a+b
#调用函数,顺便保存函数的返回值
result = add2num(100,98)
#因为result已经保存了add2num的返回值,所以接下来就可以使用了
print(result)
函数根据有没有参数,有么有返回值,可以相互组合,一共有四种组合:
- 无参数,无返回值
- 无参数,有返回值
- 有参数,无返回值
- 有参数,有返回值
局部变量:定义在函数内部的变量,作用范围只在函数内部,在函数外部无效,所以在两个不同的函数内部定义两个相同的变量是不会报错的。当函数被调用时,局部变量被创建,函数运行结束后,变量被销毁。
全局变量:既能在函数内部使用,也能在函数外部使用的变量叫做全局变量。简单来说就是定义在函数外面的变量,全局变量能在所以函数中进行访问。
注意点:当全局变量与局部变量重名时,我们认为在函数内部的变量为函数创建的局部变量,而不是修改全局变量。在函数中如果需要修改全局变量,需要使用 global 关键字。
缺省参数。在形参中默认有值的参数叫缺省参数。调用函数的时候,如果没有给缺省参数传值,则取默认值。注意点:缺省参数一定要写在参数列表的最后。
不定长参数。有时候需要函数能处理比声明时更多的参数,这些参数叫做不定长参数,声明时不会命名。格式:
def functionname(*args, **kwargs):
"""函数_文档字符串"""
pass
*args会存放所有未命名的变量参数,args为元组;** kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.
注意点:
- 如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面, 但如果有**kwargs的话,**kwargs必须是最后的