inullbyte 发表于 2020-12-29 16:49

【笔记07】制造轮子,函数反复调用

欢迎来到我的《Python 扫盲栏目》,力求用最短的时间,最简明的文字,让你了解、掌握 Python 基础语法。

我分享的笔记都是自己学习时的记录整理而成,不保证有多厉害,但还是那两句话:

**不要嫌弃内容简陋,循序渐进嘛!**
**不要嫌弃知识简单,动手敲敲吧!**

第 0 期:[《做个尝试,从零到一》](https://www.52pojie.cn/thread-1316697-1-1.html)
第 1 期:[《铺石造路,我学会了输入输出》](https://www.52pojie.cn/thread-1317221-1-1.html)
第 2 期:[《玩转数据,这是第一步》](https://www.52pojie.cn/thread-1317496-1-1.html)
第 3 期:[《学会判断,告诉电脑怎么做》](https://www.52pojie.cn/thread-1318454-1-1.html)
第 4 期:[《数据升级,列表字典能处理》](https://www.52pojie.cn/thread-1319099-1-1.html)
第 5 期:[《打破重复,循环解放双手》](https://www.52pojie.cn/thread-1330081-1-1.html)
第 6 期:[《亦真亦假,布尔值和四种语句》](https://www.52pojie.cn/thread-1335850-1-1.html)
第 7 期:《制造轮子,函数反复调用》

---

> 函数是组织好的、可以重复使用的、用来实现单一功能的代码

# 定义函数

eg.

```python
#函数名:最好是取体现函数功能的名字,一般用小写字母和单下划线、数字等组合
#参数:根据函数功能,括号里可以有多个参数,也可以不带参数,命名规则与函数名相同
#规范:括号是英文括号,后面的冒号不能丢
def say_hello(name):
#函数体:函数体就是体现函数功能的语句,要缩进,一般是四个空格
    print(name + '早上好!')
    return
```

函数的参数是根据函数的功能是否需要参数以及需要什么参数来定的。

当函数定义好之后,函数内部的功能就被封装起来了,当我们需要使用函数的功能的时候就需要调用函数。

# 调用函数

只需要直接在代码里输入函数名和参数就可以了。

eg.

```python
def say_hello(name):
    print(name + ' 早上好!')
    return

say_hello('Python')
```

output:

> Python 早上好!

在调用函数时需要给参数赋值,这个过程叫做函数参数的传递。

函数的参数有很多类型,eg. 位置参数、默认参数、不定长参数 etc.

eg.

```python
def eating(a, b, c):
    print("I'm eating " + a)
    print("I'm eating " + b)
    print("I'm eating " + c)
   
eating('Chocolate', 'Rice', 'Oatmeal')
```

output:

> I'm eating Chocolate
>
> I'm eating Rice
>
> I'm eating Oatmeal

在这里的三个参数 a b c 会根据位置顺序自动填入,这就是位置参数。

我们也可以在设定参数时就给参数赋值:

eg.

```python
def eating(a, b, c = 'Oatmeal'):
    print("I'm eating " + a)
    print("I'm eating " + b)
    print("I'm eating " + c)
   
eating('Chocolate', 'Rice')
```

output:

> I'm eating Chocolate
> I'm eating Rice
> I'm eating Oatmeal

在这里,c 的参数是固定的,我们为了避免每一次调用函数都要重新赋值,我们就可以在定义函数时就将其赋值,这就是默认参数。

不定长参数是一个很特殊的参数类型:

eg.

```python
def eating(*a):
    print(a)
   
eating('Chocolate', 'Rice', 'Oatmeal')
```

output:

> ('Chocolate', 'Rice', 'Oatmeal')

在这里的三个参数全部传递给了 a,a 就是不定长参数,在设定不定长参数时需要在参数前加上 * 符号,而输出的结果的数据类型是元组(tuple),其中的元素是不可更改的。

**注意:**默认参数要放在最后

# return 语句

在函数中,return 的作用是返回值,当你输入参数给函数,函数就会返回一个值,并且每一个函数都有返回值,而 `print()` 函数返回的则是一个空值。

所以当我们自定义函数的时候,我们可以用 return 语句规定函数要返回什么值给我们。

一般来说,return 都是返回一个值,但是也可以返回多个值,且返回的值的数据类型是元组。

eg.

```python
def dream(a, b):
    c = a
    d = b
    return c, d

flag = dream('driving', 'eating')
print(flag)
```

output:

> ('driving', 'eating')

一个函数拥有多个返回值着是 Python 特有的。

**注意:**没有 return 语句的函数会默认返回空值,且一旦函数内部遇到了 return 语句,函数就会停止执行并返回值。

# 变量作用域

在一个函数内定义的变量只能在函数内部使用(局部作用域),即局部变量。

在所有函数之外赋值的变量,可以在程序的任何位置使用(全局作用域),即全局变量。

所以建议全局变量和局部变量不要使用相同的名字。

当然,Python 也可以将局部变量转换成全局变量。

eg.

```python
def dream():
    # global 语句将 num 声明成全局变量
    global num
    num = 3

# 这里必须先调用函数,不然 num 就还未定义
dream()
print(num)
```

# 列表生成式

要生成一个列表可以有很多种方法。

eg.

```python
# 第 1 种
flag =
print(flag)

# 第 2 种
flag = list(range(1, 6))
print(flag)

# 第 3 种
flag =
print(flag)

# 第 4 种
flag = for b in '12']
print(flag)

# 第 5 种
flag =
print(flag)
```

output:

>
>
>
>
>
>
> ['A1', 'A2', 'B1', 'B2']
>
>

# Tips:

1. **extend()** 的用法:

eg.

```python
flag =
flag.extend(['ABC'])
flag.extend('123')
print(flag)
```

output:

>

可见:extend() 里是列表的话会将其合并,里面是字符串的话会将每个字符当成列表中的一个元素。

2. **index**() 函数:

eg.

```pytho
num =
print(num.index(4))
print(num.index(2))
```

output:

> 1
>
> 2

index() 函数可以找出列表中某一个元素第一次出现的索引位置。

3. **try...except..**

这是 Python 提供的一种异常处理机制,可以在异常出现时及时捕获,然后内部消化,让程序可以继续运行。

```python
try:
    aaa
    aaa
except XxxError:
    bbb
    bbb
```

以上:XxxError 是报错类型,程序运行起来后执行 aaa 的代码,只要不报错,except 里的代码就不执行,一旦报错就执行 bbb 的代码。

**给个免费评分我能写得更好!**

寒冰流火 发表于 2020-12-30 08:10

看了楼主的分享很有收获谢谢了
页: [1]
查看完整版本: 【笔记07】制造轮子,函数反复调用