1 函数是什么?
将代码实现的功能定义为一个模块,当需要使用的时候再次调用此模块即可,此为我所理解的函数定义,函数可以提高我们在编程中的效率,当一个功能需要多次实现时,我们不可能每次都编写相同代码,如果将实现此功能的代码定义为一个函数,当我们需要再次实现此功能时,只需要调用之前写好的函数即可,这样就可以大大的提高我们的编程效率。
定义一个函数:使用关键字def,然后是函数名加括号(括号内指出函数为完成其任务需要什么样的信息,当然括号也可以是空的,但是一定要有括号),最后定义以冒号结束。
def hello():
print('hello world')
hello()
函数的调用:要调用函数,可依次指定函数名以及用括号括起的必要信息,如是上面的例子所示
函数里面嵌套函数
def hello():
print('hello world')
def westos():
print('hello westos')
hello()
def hello():
print('hello world')
def westos():
print('hello westos')
#嵌套的函数一定要调用,否则在调用hello()函数时,嵌套在其中的westos()不会实现其功能
westos()
hello()
2 形参和实参
形参:即定义函数时,函数名后括号内的变量,形参可以任意起名
实参:根据真实的数据信息,调用函数时传递的参数即调用函数时,函数名后括号内的值
def welcome(a): #这里的a就是形参
print('hello',a)
welcome('lee') #这里的lee和lily就是实参
welcome('lily')
形参的分类
(1)位置参数
调用函数时, python 必须将函数调用中的每个实参都关联到函数定义中的一个形参。形参和实参的位置必须保持一致
def getinfo(name,age):
print('姓名:',name,'年龄:',age)
getinfo('westos',12)
getinfo(12,'westos') #一定要注意形参和实参对应的位置必须一致
getinfo(age=12,name='westos')
(2)默认参数
编写函数时,可给每个形参指定默认值 。在调用函数中给形参提供了实参时, Python 将使用指定的实参值;否则,将使用形参的默认值。
def mypow(x,y=2): #这里的2就是y的默认值
print(x ** y)
mypow(2,3) #这里指定了y的值为3,所以不再使用默认的y值
mypow(2) #这里未指定y的值,故使用函数定义时的默认值
3 函数的返回值和作用域
(1)返回值
返回值:函数运算的结果 还需要进一步操作,给函数一个返回值,return用来返回函数执行的结果 如果函数没有返回值 默认返回None,函数一旦遇到return 函数执行结束 后面的代码不会执行,多个返回值的时候 python会帮我们封装成一个元组类型。
def mypow(x,y=2):
return x**y,x+y
print('!!!!!')
a = mypow(4)
print(a)
(2)作用域
函数的作用域:命名空间,变量名被赋值的位置,决定变量名能被访问到的范围。
1) 局部变量:在函数内部定义的变量,只在函数内部其作用,函数执行结束后,变量会自动删除。
2)全局变量:从定义开始到整个文件结束都可以使用。
a = 1
print('outside:',id(a))
def fun():
global a #声明a为全局变量
a = 5
print('inside:',id(a))
fun()
print(a)
print(id(a))