wuyangteam 发表于 2020-8-23 20:58

[笔记]第四天Python-100-Days-master跟我一起学(06.函数和模块的使用)

本帖最后由 wuyangteam 于 2020-8-23 22:10 编辑

# 写在前面的话

今天我们进入第四天的学习,本节内容为函数与模块。今天的知识,是要小伙伴们融会贯通的,请与前面的第三天内容,分支与循环一起做练习。

# 06.函数与模块

## 一.函数

### 1. 基础

假如:我们想要打印如下图案

```
*
**
***
****
*****
```

```
*
**
***
****
*****
******
*******
********
```

甚至行数更多,怎么办呢,我们不可能每个地方都来一下这几句代码,太浪费精力了,重复造轮子。因此我们会将它抽象,构建一个函数,或者后面的类,模块。
其实宗旨就只有一个,包装,封装,以便代码重用。

```python
def func(row=5):
    for i in range(1, row + 1):
      print('*'*i)
```

这个代码,我们已经很熟悉了,只不过我们将它包在了一个函数里,函数就是为了实现某些功能,利于代码的重用。

------

**注意事项:**

1. `def func(row=5):`row被成为参数,row本身是变量,其值是可以被调用者的变量值替代的。而row = 5是默认参数值,如果调用者不传参数,则该值就为5,你可以这样使用:

```python
def func(row=5):
    for i in range(1, row + 1):
      print('*'*i)
func() #不带参数,因为幽默认值
func(6) #带参数
func(row = 7) #指定参数名称
a = 10
func(a) #指定参数名称
```

### 2. 参数

考虑最简单的求三个数的和函数

```python
def add(a, b=0, c=0): #未设默认值的参数,应放到有默认参数值的前面,例如:add(a=0,b,c)这个是错误的。
    """三个数相加"""
    return a + b + c
print(add(3)) #a=3, b=0, c=0
print(add(3, c=4)) #a=3, b=0, c=4
```

可变参数

```python
# 在参数名前面的*表示args是一个可变参数
def add(*args):
    total = 0
    for val in args:
      total += val
    return total
   
# 在调用add函数时可以传入0个或多个参数
print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3))
print(add(1, 3, 5, 7, 9))
```

## 二.模块

考虑我这里有个python文件,test.py,内容如下:

```python
def add(a, b=0, c=0): #未设默认值的参数,应放到有默认参数值的前面,例如:add(a=0,b,c)这个是错误的。
    """三个数相加"""
    return a + b + c
print(add(3)) #a=3, b=0, c=0
print(add(3, c=4)) #a=3, b=0, c=4
```

现在,项目组里张三想用我的模块test.py,那么张三只需要import test,例如:

```python
import test
print(test.add(1)) #a=3, b=0, c=0
```

输出结果:

3
7
1

但该输出结果并不是我们需要的,Python解释器在导入这个模块时就会执行这些代码,因此如果我们在模块中编写了执行代码,最好是将这些执行代码放入如下所示的条件中,这样的话除非直接运行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是"\_\_main\_\_"。

修改test.py如下:

```python

def add(a, b=0, c=0): #未设默认值的参数,应放到有默认参数值的前面,例如:add(a=0,b,c)这个是错误的。
    """三个数相加"""
    return a + b + c
if __name__ == "__main__":
    print(add(3)) #a=3,b=0,c=0
    print(add(3, c=4)) #a=3,b=0,c=4
```

nulla2011 发表于 2020-8-23 21:24

学习了。

大兵马元帅 发表于 2020-8-23 21:26

最后一段代码和上面一样了,看不出来哪里改了,谢谢

w547890 发表于 2020-8-23 21:28


学习了。

2513002960 发表于 2020-8-23 21:28

还是系统的学习好,继续学习!

wuyangteam 发表于 2020-8-23 22:11

大兵马元帅 发表于 2020-8-23 21:26
最后一段代码和上面一样了,看不出来哪里改了,谢谢

已改正,谢谢提醒

清风徐来L 发表于 2020-8-23 22:11

感谢,我已经学到第8天了哈哈哈,一起加油
页: [1]
查看完整版本: [笔记]第四天Python-100-Days-master跟我一起学(06.函数和模块的使用)