lijinlei 发表于 2024-11-23 02:52

【《人工智能实践教程》测评】Python 函数

# 【《人工智能实践教程》测评】Python 函数

## 函数

如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数。

> Tips: 如果一件事需要重复两遍以上,请务必编程完成……

函数这个数学名词是 **莱布尼茨 (Leibniz)** 在 1694 年开始使用的,以描述曲线的一个相关量,如曲线的斜率或者曲线上的某一点。莱布尼兹所指的函数现在被称作可导函数,数学家之外的普通人一般接触到的函数即属此类。对
于可导函数可以讨论它的极限和导数。此两者描述了函数输出值的变化同输入值变化的关系,是微积分学的基础。

中文的“函数”一词由清朝数学家**李善兰**译出。其《代数学》书中解释:
“凡此變數中函(包含)彼變數者,則此為彼之函數”。

## 定义一个函数

```python
def test(a,b):
        "sum of a and b"
        print("%d"%(a+b))
test(1,2)
```

输出 `3`

### 形参与实参

定义时小括号中的参数,用来接收参数用的,称为 “形参”
调用时小括号中的参数,用来传递给函数用的,称为 “实参”

```python
def area(width, height): # parameter
    return width * height
w = 4 # argument
h = 5 # argument

print(area(w,h))
```

使用函数的好处:代码重用、便于修改、易于扩展。

## 函数的参数



### 参数检查

调用函数时,如果参数个数不对,Python 解释器会自动检查出来,并抛出 TypeError;

- 如果参数类型不对,Python 解释器就无法帮我们检查。
- 数据类型检查可以用内置函数 isinstance 实现。

### 默认参数

需求: 定义一函数,计算x值的n次方。那如果计算x平方时只需要传入x值时怎么解决?

- - 默认参数可以降低调用函数的难度。
- - 默认参数注意事项:
- - 有多个参数时,变化大放前面,变化小的放后面;
- - 必选参数在前,默认参数在后

默认函数容易出错点:

先定义一个函数,传入一个 list,添加一个 END 再返回.

### 可变参数

可变参数就是==传入的参数个数是可变的==,可以是 1 个、2 个到任意个,还可以是 0 个。

- 以数学题为例子,给定一组数字 a,b,c ..
- 请计算 a 2 + b 2 + c 2 + ..

如果已经有一个 list 或者 tuple,要调用一个可变参数怎么办?

1. Python 允许你在 list 或 tuple 前面加一个 * 号;
2. 把 list 或 tuple 的元素变成可变参数传进去;

```python
largs =
func(largs,largs,largs)
func(*largs)
```

### 关键字参数

- 关键字参数允许传入 0 个或任意个含参数名的参数;
- 这些关键字参数在函数内部自动组装为一个 dict;
- 关键字参数用 **kwargs;

### 参数组合

- 参数组合是指可以必选参数、 默认参数、 可变参数和关键字参数一起使用。
- 参数定义的顺序必须是:必选参数、 默认参数、可变参数和关键字参数。

对于任意函数,都可以通过类似 `func(*args, **kw)` 的形式调用它。

## 匿名函数

匿名函数指一类无须定义标识符的函数或子程序。Python用 lambda 语法定义匿名函数,只需用表达式而无需申明。(省略了用def声明函数的标准步骤)

```python
# define anonymous function
sum = lambda arg1, arg2: arg1 + arg2
# call sum function
print("Value of total : ", sum(10,20))
print("Value of total : ", sum(20,20))
```

lambda 函数的语法只包含一个语句

```
lambda ]:expression
```

lambda 函数能接收任何数量的参数但只能返回一个表达式的值

## 递归函数

已知: 函数可以调用函数。

结论: 一个函数在内部调用自己本身,这个函数就是递归函数。

例如:求阶乘

```python
def factorial(num):
    """递归方法求 num 的阶乘"""
    result = 1
    # product fo 1, 2, 3, ... , n
    for item in range (1, num + 1):
      # result
      result *= item
    return result

if __name__ == '__main__':
   print("2! is ", factorial(2))
   print("3! is ", factorial(3))
   print("3! is ", factorial(5))
```

输出



## 练习

```
# 打印九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
      print("{}*{} = {} \t".format(i,j,i*j),end=" ")
    print()
```

### 效果

fgsrgsrgsfavsfv 发表于 2024-11-23 08:43

<p>ok</p>

fgsrgsrgsfavsfv 发表于 2024-11-23 08:46

<p>定义时小括号中的参数,用来接收参数用的,称为 &ldquo;形参&rdquo;<br />
调用时小括号中的参数,用来传递给函数用的,称为 &ldquo;实参&rdquo;</p>

chejm 发表于 2024-11-23 09:05

<p>楼主分享的python函数相关基础知识值得我这样的入门者学习收藏,感谢</p>

吾妻思萌 发表于 2024-11-25 17:51

99乘法表 我以前用c语言打印过~,记得换行
页: [1]
查看完整版本: 【《人工智能实践教程》测评】Python 函数