【零基础学Python】函数

139 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情


一、函数的定义

下面是一个函数定义的大致框架。

其中形参列表可以没有,也可以有若干个;函数体一定要有一级缩进,之前的博客也提到过缩进在Python中非常关键;return语句可有可无。

def 函数名 (形参列表1, 形参列表2, ……): 
	函数体(注意要带有一级缩进)
	return 返回值

这里给出一个求和的例子来帮助理解。

# 定义一个求和函数
def calSum(begin, end):
    res = 0
    # 注意range的范围是左闭右开
    # 注意for需要以:结尾
    for i in range(begin, end + 1):
        res += i
    print(res)


calSum(1, 100)
calSum(101, 200)

运行结果如下图。

在这里插入图片描述


Python中还要求函数必须先定义、再使用。

如果先调用函数、后定义函数,编译就会报错。

在这里插入图片描述


二、返回值

1.返回值的使用

Python中函数的返回值与C/C++中的返回值没有太大区别,而且由于Python动态类型的特性,在使用时会更加简单。

下面的代码和前面功能完全相同,只不过是使用了return将结果返回。

# 定义一个求和函数
def calSum(begin, end):
    res = 0
    # 注意range的范围是左闭右开
    # 注意for需要以:结尾
    for i in range(begin, end + 1):
        res += i
    return res # 用返回值将结果传回调用函数的位置


print(calSum(1, 100))

res = calSum(101, 200)
print(res)

2.返回多个值

一个函数可以返回多个值,这是Python的一个很好用的特性。

def getPoint():
    x = random.randint(0, 10) # 生成0~10的随机数
    y = random.randint(0, 10)
    return x, y # 同时返回两个值


# 一次性定义两个变量
a, b = getPoint()
print(a, b)

# 不需要关注第一个返回值,用_占位,更多的语法这里不展开讲
_, y = getPoint()
print(y)

运行结果如下:

在这里插入图片描述


三、 形参默认值

Python中的函数定义时可以给形参赋予默认值,带有默认值的形参,在调用时可以不传入参数。这个特性和C++中的规则是相同的。

def add(x, y, debug = False):
    if debug:
        print(f'x = {x}, y = {y}')
    return x + y


res = add(10, 20)
print(res)

res = add(10, 20, True)
print(res)

这段代码在debug为真时会打印x、y的值,默认为假,此时不打印。

在这里插入图片描述

注意默认参数必须在非默认参数之后,否则编译器无法确定传入的参数应该给哪个形参。


四、 关键字参数

一般的传参方式是按照形参的先后顺序传入实参的,某一位置的实参赋给相同位置的形参,这种风格也叫作“位置参数”,也是各个编程语言中最普遍的传参方式。

Python提供了一种新的传参方式,即关键字参数。

def add(x, y):
    print(f'x={x} y={y}')


add(x=20, y=10)
add(y=10, x=20)

上面的函数在调用时即可无视形参的顺序问题,直接指定某一个形参为设定的值,更加清晰。

运行结果如下,两种方式是等价的。

在这里插入图片描述

需要特别注意的是位置参数和关键字参数可以混合使用,但混用时要注意位置参数在前,关键字参数在后。


感谢阅读,如有错误请批评指正