def封装
1**,**from 公共方法 import bmicheck
2,import 公共方法
公共方法.bmi_check
全选,tab键缩进
# 作业1:Jeremy身高1.76米,体重76.6公斤,请先根据BMI公式(体重除以身高的平方)帮Jeremy计算他的BMI指数,并根据BMI指数:# - 低于18.5:过轻# - 18.5-25:正常# - 25.1-28:过重# - 28.1-32:肥胖# - 高于32:严重肥胖# 使用if-elif-else判断并打印最终体检结果
def bmi_check():
height = float(input('Please write down your height(meter, example: 1.76):'))
#input里面输出的是字符串,所以要加float转为小数类型
weight = float(input('请按格式输入你的体重(单位:公斤,例:76.6):'))
bmi = weight/(height**2)
bmi = round(bmi, 2) # Python的round()函数的作用是自定义需要保留小数点的后几位,然后返回给变量_
print('你的的BMI指数是:{}。'.format(bmi))
if bmi < 18.5:
print('你过轻。')
elif 18.5 <= bmi <= 25:
print('你正常。')
elif 25.1 <= bmi <= 28:
print('你过重。')
elif 28 < bmi <= 32:
print('你肥胖。')
elif bmi > 32:
print('你严重肥胖。')
else:
pass
实现一个功能,这个方法叫做“学猫叫,学狗叫”,如果用户想听狗叫,狗就会叫给你听,依次类推,猫也是
#def animal_voice(): 封装
#
#想听的声音=input(‘你想听什么声音,请写下关键字(猫/狗):’)
#if想听的声音==’猫’:
#print(‘喵,喵,喵’)
#elif想听的声音==’狗’:
#print(‘汪,汪,汪’)
#else:
#print(‘不好意思,请按指定格式输入,你当前输入的【%s】有误’%想听的声音)
#__animal_voice()
入参
#自己写一个my_print方法(),功能和print()一样
#defmy_print(print_content):
#print(print_content)
def myprint(name):
print(str(name)+“是世界上最帅的人”)
def **星语心愿(愿望):
print(愿望)
#from公共方法importbmicheck
#import公共方法
#公共方法.animal_voice
例如:import公共方法
公共方法.星语心愿
愿望=‘**暴富,娶霞霞**’
公共方法.星语心愿(愿望)
from公共方法import星语心愿
愿望=‘**顺利毕业,拿高薪**’
星语心愿(愿望)
接口报文响应结果 = {
“success”: True,
“topic_id”: “5ec7976ddda04006aa6ed326”
}
测试结果1 = False
测试结果2 = False
success的预期结果 = True
success的实际结果 = 接口报文响应结果[‘success’]
if success的实际结果 == success的预期结果:
print(‘测试结果1通过’)
测试结果1 = True
topic_id的实际结果 = 接口报文响应结果[‘topic_id’]
if len(topic_id的实际结果) > 0:
print(‘测试结果2通过’)
测试结果2 = True
if 测试结果1 == True and 测试结果2 == True: # 等价于: if 测试结果1 and 测试结果2
print(‘本条测试用例测试通过!’)
今天我们来学习下如何自定义方法,以及编写python类文件,在公司中我们不可能一个python文件几千几万行代码,不利于代码的维护及排查问题的及时性,而面向对象则是解决了这一问题!
def(方法的定义)
在python中,我们使用def这个关键字进行自定义方法,可以供其他方法,其他类的调用,而不需要再写一次这个方法的内容了。
以上我们可以看到一个简单的方法定义,方法后面必须要加’()’。上面这个方法的主要内容就是打印一个字符串,如果我们需要一个方法里面的某个值传给调用他的代码,那么我们可以使用return进行返回:
运行以上代码,我们可以看到控制台并未任何输出,因为我们需要对这个方法赋值给某个变量,可以通过打印print看到,方法返回的内容。
接下来我们可以看一个实例:
上述中的e就是test()方法返回的值,所以e的值就为a+b=3。
刚才所说,方法后面都是需要加括号,那么这个括号里面是否可以传值呢,答案肯定是可以的!
我们可以看到方法括号里传了值(形参:形式上的参数),那么我们在调用这个方法的时候,括号里面就需要传参数,否则将会报错,缺少参数。
方法括号内还可以传不定长参数,就是不明确具体传的参数个数,根据实际调用情况进行传参:
我们可以看到不定长参传参的方式args,是以tuple元组的形式进行传参,还可以使用*args,我们也可以查看到,参数是以dict字典的形式进行的传参!
Class(面向对象)
class就是代表着一个类,什么是类,你可以把它理解为一个家庭,家庭里面包含了方法,不同类型的方法则是不同的家庭成员,但是对外又是一个家庭的,只有一个户口本,类和家庭一样可以继承,爷爷生爸爸,爸爸生了你,分别最后又组成了新的家庭。
上面我们可以看到,定义了一个类,这个类,里面包含了eat(),drink(),sleep()等方法,对类进行一个实例,然后通过实例去调用这个类里面的方法。
类有一个名为 init() 的特殊方法(构造方法),该方法在类实例化时会自动调用,像下面这样:
我们可以看到init方法中的name,在前面加了self之后,可以直接被其他方法所调用,那么这个self是什么呢,实际就是类里面的内部的实例,不需要氮素对类进行实例,直接加self之后,就可以传给其他的方法。
类的继承
所谓类的继承就类似于家族中的基因遗传,父类的一些方法及元素,可以供子类使用
我们可以看到下面的子类继承了上面的父类,不但可以调用自身的方法,同样可以调用父类中的方法。子类还可以继承父类的子类:
我们可以看到tiger继承了animal,然后ele则又继承了tiger,那么类ele则可以使用上面两个类中的所有方法。
类中的方法也存在集中不同的形态,静态类方法,类方法,属性等形式!
我们可以看到不同类型的方法调用的方式也存在区别,同学们可以根据自身的需求去编写不同的类形式!