函数是我们python编程中主要的编程手段,通过函数我们可以有效的组织代码,提高代码的可维护性,可读性,简化代码设计,提高代码重用性,是编程中非常重要的手段。
函数分为系统函数(内置函数)与用户定义函数。内置函数是编译在python运行环境内部的,用户定义函数由我们用户自己来定义,完成一个项目,通常需要编写大量的函数方法
函数定义语句结构
def 函数名(*args, **kwargs):
''' 函数功能docstring
函数具体说明
'''
#函数体
...
return
函数结构说明
def
关键字: python中通过def
关键字来定义一个函数
函数名: def
后面是函数名称,函数名称的取名有一些要求。
- 遵守与变量标识符名一样的规则
- 遵守语法规范(使用驼峰或者_连字符,首字母小写或者全部小写)
- 函数名与功能或者方法相关联,比如加运算的函数名可以取名add
形参: 函数名称后面是一对()
,用于向函数内部传递参数,括号内的参数称为形参,函数形参不是必需的
定义语句末尾是:
,初学者很容易忘记,如果发生语法错误,检查这里
函数体: 函数功能代码部分称为函数体,需要按照层级缩进规则缩进
return:
用于返回函数执行之后的结果, return
不是必需的,没有return
的函数,默认返回None
,称为过程
函数定义后,需要进行调用,函数内部的代码才会生效
函数定义举例
定义一个名为myfun的函数
# 定义一个名为myfun的函数
def myfun():
print("hello world")
# 进行调用
# 函数调用很简单,函数名+()即可完成函数调用
myfun()
# 输出
hello world
定义一个求和的函数
# 定义一个求和的函数
def sum():
number_1 = input("请输入数字1:")
number_2 = input("请输入数字2:")
try:
result = float(number_1) + float(number_2)
except:
print("发生了错误,请检查输入")
else:
return result
# 调用
sum()
定义一个带docstring的函数
# 定义一个带docstring的函数
def test_docstring():
'''这是一个测试函数
这个函数没有参数,也没有返回值
'''
print("hello world")
函数形参与实参
函数形参是函数定义传递参数的一种占位方法,形参名在函数内部可以像变量标识符一样使用,但是只能在函数内部有效
实参是在函数调用的时候传递的实际值或者变量
# 函数示例
# 在函数内部,number 就是一个变量,只是这个变量的值需要等到调用传参时确定
def myfun(username):
welcome = "欢迎"+username+"光临"
print(welcome)
# 函数调用
# 传入实参 luxp
myfun("luxp")
# 形参数量不限
def get_rect_area(width, height):
try:
if width < 0 or height < 0:
return "输入错误"
else:
return width * height
except Exception as e:
print(e)
return None
return语句与函数返回值
将上面的myfun
函数中的print(res)
修改为 return res
即可
# 如果没有return语句,函数返回None
def test_fun():
print("hello world")
# return 示例
def myfun(number):
res = number + 10
return res
# 调用myfun,执行结果会返回,赋值给myres
myres = myfun(10)
print(myres)
myres
是函数外部的一个变量,当调用myfun(10)
后,函数执行结果res
就会通过return
返回给myres
注意事项:
当函数中包含多条return语句时,只要有一个return语句被执行,函数就不再执行后续代码,
所以:
多个return只有第一个执行的return会返回值
下面myfun执行后,只会执行第一个return "hello luxp"
# 多条return示例
def myfun():
return "hello luxp"
return "hello python-xp.com"
# 调用myfun
myfun()
# 执行 hello luxp后就退出了
下面的return x + y
永远不会执行
# 不太容易看出来的废代码
# 最后的一行return无论如何也不会执行
def myfun(x, y):
if x > y:
return x
else:
return y
return x + y
try异常语句只有finally
部分会执行
# try...finally
def myfun(x, y):
try:
return x - y
except:
return x, y
else:
return x + y
finally:
return "hello world"
讨论区