python~函数1&模块与包
- [1. 函数](#1. 函数)
-
- 1.函数的定义和调用
-
- [1.1 定义](#1.1 定义)
- [1.2 调用](#1.2 调用)
- 2.函数的文档注释
- 3.参数
- [4. 函数的嵌套调用](#4. 函数的嵌套调用)
- 5.函数的返回值
- [2. 模块与包](#2. 模块与包)
-
- [2.1 模块](#2.1 模块)
-
- [2.1.1 模块导入的方法](#2.1.1 模块导入的方法)
- [2.2 __name__变量](#2.2 __name__变量)
- [2.2 包](#2.2 包)
- 3.小案例
1. 函数
1.函数的定义和调用
1.1 定义
语法:
def 函数名():
____函数中的代码
- 在def缩进中的代码都属于这个函数
- 函数名要满足标识符规则,结尾需要冒号
- 函数定义不会执行 函数中的代码,想要执行需要调用
1.2 调用
函数调用就是使用定义的函数中多行代码的过程,语法:函数名()
2.函数的文档注释
- 本质就是注释,对函数的作用和使用方法进行说明
- 书写位置:在def的下方,用三对双引号引起来
- 快捷键:在函数名上:Ctrl q 查看文档注释,Ctrl B 查看函数定义,按住Ctrl 点击函数名可以跳转到函数定义
python
def say_hello():
"""打招呼函数"""
print('hello1')
print('hello2')
print('hello3')
3.参数
- 在函数定义的时候,在括号中写入变量,这个变量就是函数的参数
- 在函数调用时,可以给定义时候的形参传递具体的数值使用
python
def sum_2_num(num1,num2):#num1,num2 是形参
"""两个数字求和"""
print(num1+num2)
sum_2_num(10,20)
4. 函数的嵌套调用
就是在一个函数中调用另一个函数
函数中的代码执行结束,会回到调用的地方继续向下执行
python
def test01():
print(1)
print('func01')
print(2)
def test02():
print(3)
print('func02')
test01()
print(4)
print(5)
test02()
print(6)
#运行结果依次为5 3 1 2 4 6
5.函数的返回值
函数执行的结果
print() ---> None
input() ---> 键盘输⼊的内容, 类型 字符串
type() ---> 变量的数据类型
len() ---> 容器⻓度
- 在一个函数中想要返回一个数据需要使用return关键字
- 函数执行完成后可以返回一个值,调用函数时可以接收这个值
- 遇到return会结束函数的执行
- return只能用在函数中,如果一个函数中没有用return,可以认为返回值是None
python
def get_max(a,b):
"""获取两个数字中的较大值"""
if a > b:
return a
else:
return b
num = get_max(10,20)
print(num)
小案例:
python
def input_username():
return input("请输入用户名:")
def input_password():
return input("请输入密码:")
def login():
if input_username() =='admin' and input_password() =='123456':
print("登录成功")
else:
print("登录失败")
login()
2. 模块与包
2.1 模块
- 在Python 中,每个代码⽂件都可以称为是⼀个模块
- 在模块中别⼈书写好的功能(变量, 函数, 类),我们可以拿来直接使⽤
- 我们⾃⼰写的代码⽂件,想要作为模块让别⼈使⽤,你的代码⽂件名(模块名) 满⾜标识符的规则
- 想要使⽤别⼈模块中写好的功能,需要**先导⼊**别⼈写好的功能
- as 关键字,可以给模块或者功能起别名
2.1.1 模块导入的方法
方式一:多用于系统的模块导入
python
import random
num = random.randint(1,10)
print(num)
方法二:多用于自己写的或者第三方模块,可使用快捷键 alt+enter 导入
python
from random import randint
num = randint(1,10)
print(num)
练习:
python
def sum_2_num(a,b):
return a+b
调用
python
from tools import sum_2_num as sum2 #as:将sum_2_num函数重命名为sum2
print((sum2(10, 20)))
2.2 __name__变量
导入模块时,会执行模块中的代码,如果模块中的部分代码不想被执行,就可以用_ _ name _ _解决
在模块中运行代码, _ _ name _ _ 的值为 _ _ main _ _
如果是在导入模块的代码中, _ _ name _ _的值为模块名
语法:
python
if __name__ == '__main__'
输入时可以输入main直接回车即可
2.2 包
包的导入
#⽅式⼀:
import 包名.模块名
#使⽤
包名.模块名.⼯具名
#⽅式⼆:
from 包名 import 模块名
#使⽤
模块名.⼯具名
#⽅式三:使⽤快捷键导包
from 包名.模块名 import ⼯具名
#直接使⽤⼯具名
⼯具名
3.小案例
1.模拟开发人员实现登录功能,定义一个函数能够接收用户输入的用户名、密码、验证码根据不同的测试数据返回不同的验证结果
2.已知正确的登录信息(用户名:admin、密码:123456、验证码:8888)
3.要求1:创建login_service.py模块开发登录功能代码,并存放到service包中
4.要求2:创建test_login.py模块开发测试代码,并存放到script包中
5.要求3:至少测试3种测试场景
login_service.py
python
def login(name,pwd,code):
if name=='admin' and pwd=='123456' and code=='8888':
return '登录成功'
else:
return '登录失败'
test_login.py
python
from fun_import.service.login_service import login
print(login('admin','123456','8888')); # 登录成功
print(login('admin','12345','8888')); # 登录失败
print(login('good','123456','8888')); # 登录失败
print(login('admin','123456','88888')); # 登录失败
