Python3 函数的定义和调用
发布时间: 2023-12-21 04:34:03 阅读量: 54 订阅数: 44
# 一、Python3 函数的基本概念
## 二、 Python3 函数的定义
### 三、 Python3 函数的调用
在这一章节中,我们将学习Python3中函数的调用方式。函数调用是指程序执行流程跳转到函数体中去执行,然后再返回继续执行函数调用后的语句。
#### 3.1 调用内置函数
Python3内置了许多常用的函数,比如print()、len()等。直接调用这些函数非常简单,只需按照函数名加上括号的方式进行调用即可。例如:
```python
# 调用内置函数
result = len("Hello, World!")
print(result) # 输出:13
```
#### 3.2 调用自定义函数
除了调用内置函数,我们还可以自定义函数并进行调用。定义自定义函数的方式我们在前面已经学习过了,这里重点介绍如何调用自定义函数。
```python
# 定义自定义函数
def greet(name):
print("Hello, " + name + "!")
# 调用自定义函数
greet("Alice") # 输出:Hello, Alice!
```
#### 3.3 处理函数返回值
当函数有返回值时,我们可以通过赋值给变量来接收函数的返回值,或者直接在其他表达式中使用函数返回值。
```python
# 定义带返回值的函数
def add(a, b):
return a + b
# 处理函数返回值
result = add(3, 5)
print(result) # 输出:8
# 直接在表达式中使用函数返回值
print(add(2, 4)) # 输出:6
```
### 四、 Python3 函数的参数
在 Python3 中,函数的参数可以分为必需参数、默认参数、可变参数和关键字参数。接下来我们将依次介绍它们的概念和用法。
#### 4.1 必需参数
必需参数是指在调用函数时必须传入的参数,对应的形参在函数定义时已经确定,且调用函数时必须传入相同数量的参数值。
下面是一个求和的函数示例,该函数接受两个必需参数并返回它们的和:
```python
def add(a, b):
result = a + b
return result
# 调用函数
sum = add(3, 5)
print("3 + 5 =", sum) # 输出结果:3 + 5 = 8
```
在上面的示例中,`add` 函数接受两个必需参数 `a` 和 `b`,在调用函数时必须传入两个参数值,否则会报错。
#### 4.2 默认参数
默认参数是指在函数定义时为参数指定默认值,如果调用函数时没有传入对应参数的值,则会使用默认值。
下面是一个带有默认参数的函数示例,该函数接受一个必需参数和一个默认参数,并返回它们的乘积:
```python
def multiply(a, b=2):
result = a * b
return result
# 调用函数
product1 = multiply(3) # 只传入一个参数,默认 b=2
product2 = multiply(3, 4) # 传入两个参数,覆盖默认值
print("3 * 2 =", product1) # 输出结果:3 * 2 = 6
print("3 * 4 =", product2) # 输出结果:3 * 4 = 12
```
在上面的示例中,`multiply` 函数中的参数 `b` 被指定为默认参数,如果调用函数时不传入 `b` 的值,则默认使用 2。
#### 4.3 可变参数
可变参数允许在调用函数时传入任意个数的参数,这些参数将被收集到一个元组中进行处理。在 Python3 中,可变参数使用 `*args` 来表示。
下面是一个接受可变参数的函数示例,该函数将传入的所有参数进行求和并返回结果:
```python
def add_all(*args):
result = 0
for num in args:
result += num
return result
# 调用函数
total = add_all(1, 2, 3, 4, 5)
print("1 + 2 + 3 + 4 + 5 =", total) # 输出结果:1 + 2 + 3 + 4 + 5 = 15
```
在上面的示例中,`add_all` 函数接受可变参数 `*args`,并将传入的所有参数值进行求和。
#### 4.4 关键字参数
关键字参数允许在调用函数时传入带有参数名的参数,这些参数将被收集到一个字典中进行处理。在 Python3 中,关键字参数使用 `**kwargs` 来表示。
下面是一个接受关键字参数的函数示例,该函数将传入的关键字参数进行输出:
```python
def keywords_example(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
# 调用函数
keywords_example(name="Alice", age=25, city="New York")
```
在上面的示例中,`keywords_example` 函数接受关键字参数 `**kwargs`,并输出每个参数的键值对。
以上就是 Python3 函数的参数部分内容,下面将继续介绍其他函数相关内容。
### 五、 Python3 匿名函数与高阶函数
匿名函数和高阶函数是Python中非常重要的概念,它们能够帮助我们更加灵活地处理函数和数据。接下来我们将详细介绍匿名函数和高阶函数的定义和应用。
#### 5.1 匿名函数的定义和用法
在Python中,可以使用lambda关键字来创建匿名函数。匿名函数可以接受任意数量的参数,但只能返回一个表达式的值。
```python
# 使用lambda关键字定义匿名函数
sum = lambda x, y: x + y
# 调用匿名函数
result = sum(3, 4)
print(result) # 输出 7
```
匿名函数通常用于函数内部,或者作为参数传递给其他函数时使用,它的简洁性和灵活性使得代码更加易读和简洁。
#### 5.2 高阶函数的概念和示例
高阶函数是指能够接受函数作为参数,或者能够返回一个函数作为结果的函数。在Python中,内置的高阶函数包括map、filter和reduce等,它们可以方便地对列表等数据结构进行操作。
```python
# 使用map高阶函数
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared) # 输出 [1, 4, 9, 16, 25]
# 使用filter高阶函数
ages = [18, 25, 30, 15, 22]
adults = list(filter(lambda age: age >= 18, ages))
print(adults) # 输出 [18, 25, 30, 22]
```
以上示例中,map和filter都接受了一个匿名函数作为参数,并对列表中的元素进行了操作,这展示了高阶函数极大地提高了代码的可读性和简洁性。
### 六、 Python3 递归函数
递归函数是指在函数定义中使用函数自身的方法。它在解决问题时可以让问题简化,但必须定义一个明确的结束条件,否则会陷入无限循环。接下来我们将详细介绍递归函数的基本思想、应用场景以及注意事项。
#### 6.1 递归函数的基本思想
递归函数的基本思想是将问题分解成规模更小的子问题,直到问题简化到最小的规模,然后逐步解决这些子问题,最后原问题就迎刃而解了。在递归函数中,一定要有明确的结束条件,否则会出现无限递归。例如,计算阶乘就是一个经典的递归函数示例。
```python
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n-1)
```
#### 6.2 递归函数的应用场景
递归函数适合解决那些问题可以被分解成同种类型子问题,且这些子问题可以用相同的解决方法来解决的场景。经典的例子包括计算阶乘、斐波那契数列、汉诺塔问题等。
#### 6.3 递归函数的注意事项
- 递归函数的效率通常不高,因为涉及到重复计算和函数调用的开销。
- 递归深度有限制,如果递归层次太多会导致栈溢出的错误。
- 需要明确设置结束条件,避免进入无限递归的循环。
0
0