请稍候,加载中....

函数定义

函数是我们python编程中主要的编程手段,通过函数我们可以有效的组织代码,提高代码的可维护性,可读性,简化代码设计,提高代码重用性,是编程中非常重要的手段。

函数分为系统函数(内置函数)与用户定义函数。内置函数是编译在python运行环境内部的,用户定义函数由我们用户自己来定义,完成一个项目,通常需要编写大量的函数方法

函数定义语句结构

def 函数名(*args, **kwargs):  

    ''' 函数功能docstring

    函数具体说明
    '''

    #函数体
    ...

    return

函数结构说明

def关键字: python中通过def关键字来定义一个函数
函数名: def后面是函数名称,函数名称的取名有一些要求。

  1. 遵守与变量标识符名一样的规则
  2. 遵守语法规范(使用驼峰或者_连字符,首字母小写或者全部小写)
  3. 函数名与功能或者方法相关联,比如加运算的函数名可以取名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"

Python学习手册-