14_ Python基础到实战一飞冲天(二)-python基础(十四)--函数1
# 14_ Python基础到实战一飞冲天(二)-python基础(十四)--函数1
## 一、九九乘法表-03-九九乘法表数据输出
### 1、使用循环嵌套打印九九乘法表案例代码
```python
# dzs_11_九九乘法表.py
# 需求:打印九乘法表
# 1.定义一个行计数器
row = 1
# 最大打印 9 行
while row <= 9:
# 2.定义一个列计数器变量
col = 1
# 3.最大打印 row 列, 开始循环
while col <= row:
# end = "",表示输出结束后,不换行
# "\t" 可以在控制台输出一个制表符,协助在输出文本时对齐
print("%d * %d = %d " %(col, row, col*row) , end="\t")
col += 1
# 一行打印完成的换行
print("")
row += 1
```
### 2、示例:
## 二、九九乘法表-04-使用转义字符调整格式
### 1、**字符串中的转义字符**
1) `\t` 在控制台输出一个 **制表符**,协助在输出文本时 **垂直方向** 保持对齐。
2) `\n` 在控制台输出一个 **换行符**。
> **制表符** 的功能是在不使用表格的情况下在 **垂直方向** 按列对齐文本。
### 2、其他转义字符
1) `\\\\` 在控制台输出 反斜杠符号 `\\`
2) `\'` 在控制台输出 单引号 `'`
3) `\"` 在控制台输出 双引号 `"`
4) `\n` 在控制台输出 换行
5) `\t` 在控制台输出 横向制表符
6) `\r` 在控制台输出 回车
### 3示例代码:
```python
# dzs_12_转义字符示例.py
# 1.制表符 \t
print("1\t2\t3")
print("10\t20\t30")
# 2.换行符\n
print("hello\n world")
# 3.反斜杠 \\
print("\\\\")
# 4.单引号 '
print("\'hello\'world")
# 5.双引号 "
print("\"hello world\"")
# 6.回车 \r
print("hello\r world")
```
### 4、示例:
## 三、函数-01-明确学习目标
### 函数基础学习 目标
* 函数的快速体验
* 函数的基本使用
* 函数的参数
* 函数的返回值
* 函数的嵌套调用
* 在模块中定义函数
## 四、函数-02-函数的概念以及作用
### 1、函数的概念
所谓**函数**,就是把 **具有独立功能的代码块** 组织为一个小模块,在需要的时候 **调用**。
### 2、函数的使用包含两个步骤:
1)定义函数 —— **封装** 独立的功能。
2)调用函数 —— 享受 **封装** 的成果。
### 3、 **函数的作用**
在开发程序时,使用函数可以提高编写的效率以及代码的 **重用**。
## 五、函数-03-函数的快速体验
### 1、函数的快速体验**演练步骤**
1)新建 `04_函数` 项目。
2)复制之前完成的 ** dzs_11_九九乘法表.py ** 文件,更名为:dzs_01_九九乘法表.py
3)修改文件,增加函数定义 `multiple_table():`
4)新建另外一个文件dzs_02_快速体验函数.py,使用 `import` 导入dzs_01_九九乘法表.py,并且调用函数`multiple_table()`。
5)运行dzs_02_快速体验函数.py 会打印输出九九乘法表。
### 2、dzs_01_九九乘法表.py 代码
```python
# dzs_01_九九乘法表.py
# 功能:打印九乘法表
def multiple_table():
# 1.定义一个行计数器
row = 1
# 最大打印 9 行
while row <= 9:
# 2.定义一个列计数器变量
col = 1
# 3.最大打印 row 列, 开始循环
while col <= row:
# end = "",表示输出结束后,不换行
# "\t" 可以在控制台输出一个制表符,协助在输出文本时对齐
print("%d * %d = %d " %(col, row, col*row) , end="\t")
col += 1
# 一行打印完成的换行
print("")
row += 1
```
### 3、dzs_02_快速体验函数.py 代码
```python
# dzs_02_快速体验函数.py
import dzs_01_九九乘法表
dzs_01_九九乘法表.multiple_table()
```
### 4、示例:
## 六、函数基本使用-01-函数定义语法
### 1、 函数的定义
定义函数的格式如下:
```python
def 函数名():
函数封装的代码
……
```
### 2、函数基本使用与命名规则
1) `def` 是英文 `define` 的缩写。
2) **函数名称** 应该能够表达 **函数封装代码** 的功能,方便后续的调用。
3) **函数名称** 的命名应该 **符合** **标识符的命名规则**。
* 可以由 **字母**、**下划线** 和 **数字** 组成。
* **不能以数字开头**。
* **不能与关键字重名**。
## 七、函数基本使用-02-第一个函数演练
### 1、 函数调用
调用函数很简单的,通过 `函数名()` 即可完成对函数的调用。
### 2、 第一个函数演练
1)**需求**
* 1. 编写一个打招呼 `say_hello` 的函数,封装三行打招呼的代码。
* 2. 在函数下方调用打招呼的代码。
2)代码
```python
# dzs_03_第一个函数.py
# 1.定义函数,解释器知道这里定义了一个函数,只是表示封装了一段代码而已,但不会执行
def say_hello():
print("hello 1")
print("hello 2")
print("hello 3")
# 2.调用函数:只有在调用函数时,之前定义的函数才会被执行
say_hello()
```
3)示例
## 八、函数基本使用-03-函数的定义以及调用执行线路图
### 1、用 **单步执行 F8 和 F7** 观察以下代码的执行过程
```python
# dzs_04_第一个函数改进.py
name = "小明"
# 1.定义函数,解释器知道这里定义了一个函数,只是表示封装了一段代码而已,但不会执行
def say_hello():
print("hello 1")
print("hello 2")
print("hello 3")
print(name)
# 2.调用函数:只有在调用函数时,之前定义的函数才会被执行
say_hello()
print(name)
```
### 2、单步执行思考函数执行顺序。
* 定义好函数之后,只表示这个函数封装了一段代码而已。
* 如果不主动调用函数,函数是不会主动执行的。
### 3、示例
## 九、函数基本使用-04-应该先定义函数再调用函数
### 1、思考:* 能否将 **函数调用** 放在 **函数定义** 的上方?
* 不能!
* 因为在 **使用函数名** 调用函数之前,必须要保证 `Python` 已经知道函数的存在。
* 否则控制台会提示 `NameError: name 'say_hello' is not defined` (**名称错误:say_hello 这个名字没有被定义**)。
### 2、错误示例:
## 十、函数基本使用-05-[扩展]单步越过和单步进入
### 1、 PyCharm 的调试工具
1) **F8 Step Over** 可以单步执行代码,会把函数调用看作是一行代码直接执行。
2)**F7 Step Into** 可以单步执行代码,如果是函数,会进入函数内部。
### 2、单步执行,进行函数内部,示例
`上一节关联链接请点击:`