[笔记]第四天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
``` 学习了。 最后一段代码和上面一样了,看不出来哪里改了,谢谢
学习了。 还是系统的学习好,继续学习! 大兵马元帅 发表于 2020-8-23 21:26
最后一段代码和上面一样了,看不出来哪里改了,谢谢
已改正,谢谢提醒 感谢,我已经学到第8天了哈哈哈,一起加油
页:
[1]