0.前言
如果可以的话,请先关注(专栏和账号),然后点赞和收藏,最后学习和进步。你的支持是我继续写下去的最大动力,个人定当倾囊而送,不负所望。谢谢!!!
1.前提
基于win10专业版64位系统+64位jdk1.8+64位python3.6.5+社区版pycharm2018.1.3+unittest+selenium3.141.0。
要学好自动化测试,我们先从python语言基础开始学习,一步一个脚印,欲速则不达哦!
2.函数
在面向过程的语言里面叫函数,在面试对象的语言里面交方法。有关面向对象的知识后面再说。
1)函数定义:
#无形参函数:
def method():
print('hello')
注:def为定义函数的关键字,method为函数名,后面必须跟小括号加冒号,print语句为函数体,即函数实现的功能。
#有形参函数:
def method(name,age):
print('姓名:%s,年龄:%d' %(name,age))
注:name和age为函数的两个形参。
2)函数调用:
上面定义的函数直接运行时没有任何结果的,因为没有调用函数的语句。
#调用方式1:
def method(name,age):
print('姓名:%s,年龄:%d' %(name,age))
method('张三',18)#调用语句
#运行结果:
姓名:张三,年龄:18
注:name和age是形参,张三和18是实参,调用函数时用实参来替换形参。
#调用方式2:
def method(name,age):
print('姓名:%s,年龄:%d' %(name,age))
#调用语句
if __name__ == '__main__':
method('张三',18)
#运行结果:
姓名:张三,年龄:18
注:调用方法时,推荐使用方式2。因为方式1无论是直接调用还是跨文件调动都会执行调用语句;方式2只有在直接运行时才会执行,而在跨文件调用时不会执行,原因是因为跨文件调用时__name__ 不等于 '__main__',即if条件不成立,当然也就不会执行它下面的函数调用语句了。
3)函数传参:
函数传参有四种方式,分别为:必须参数,默认参数,关键字参数和不定长参数。
a)必须参数:实参的个数,顺序和类型必须与形参一致。
def method(name,age):
print('姓名:%s,年龄:%d' %(name,age))
if __name__ == '__main__':
method('张三',18)
#运行结果:
姓名:张三,年龄:18
b)默认参数:调用时,传了实参用实参的数据,如果没有传就用形参默认的数据。没有指定默认值的新参必须放前面,不然会报错。
def method(name,age=28):
print('姓名:%s,年龄:%d' %(name,age))
if __name__ == '__main__':
method('张三',18)#指定了实参用实参的数据
#运行结果:
姓名:张三,年龄:18
def method(name,age=28):
print('姓名:%s,年龄:%d' %(name,age))
if __name__ == '__main__':
method('张三')#没有指定实参用形参的默认数据
#运行结果:
姓名:张三,年龄:28
c)关键字参数:调用时,实参的顺序可以不与形参一致。
def method(name,age):
print('姓名:%s,年龄:%d' %(name,age))
if __name__ == '__main__':
method(age=18,name='张三')#实参的顺序可任意
#运行结果:
姓名:张三,年龄:18
d)不定长参数:又叫可变参数,意思参数的个数是可变的,0到多个。什么时候用?不确定调用者会传递几个实参时,函数定义者就可以定义一个不定长参数的函数。
def method(*args):
if len(args) != 0:
for i in range(len(args)):
print("第%d个实参是:%s" %(i + 1,args[i]))
else:
print('没有传入任何实参!')
if __name__ == '__main__':
method('one','two','three')
#运行结果:
第1个实参是:one
第2个实参是:two
第3个实参是:three
4)函数返回值:调用函数时通常会使用关键字return返回函数执行结果,用一个对象来接收,然后做显示或判断等后续操作。需要注意的是,函数体中不使用return时,也会有一个默认为None的返回值。
a)返回一个对象:
def add(x,y):
z = x + y
return z
if __name__ == '__main__':
result = add(1,2)
print("两数相加结果是:%d" %result)
b)返回多个对象:返回类型为元组。
def add_reduce(x,y):
z1 = x + y
z2 = x - y
return z1,z2
if __name__ == '__main__':
result = add_reduce(1,2)
print("两数相加结果是:%d;两数相减的结果是:%d" %(result[0],result[1]))
#运行结果:
两数相加结果是:3;两数相减的结果是:-1
另外一种接收函数返回方式,执行结果是一样的:
def add_reduce(x,y):
z1 = x + y
z2 = x - y
return z1,z2
if __name__ == '__main__':
result1,result2 = add_reduce(1,2)
print("两数相加结果是:%d;两数相减的结果是:%d" %(result1,result2))
#运行结果:
两数相加结果是:3;两数相减的结果是:-1
c)没有return的返回:
def method(x,y):
z1 = x + y
z2 = x - y
if __name__ == '__main__':
result = method(1,2)
print(result)
#运行结果:
None
5)匿名函数:往往在一个项目当中开发的时候,给函数起名的时候是件很烧脑的事情。假设你懒的给函数起名,函数只有一行,且只使用一次的话,我们就建议定义一个匿名函数,当然定义成前面那种普通格式的函数也是可以的。
# 定义匿名函数:
method = lambda x,y,z:x + y
# 调用语句:
if __name__ == '__main__':
print(method(1,3,5))
说明:lambda是定义匿名函数关键字;后面的x和y是函数的形参,可以是0到多个;冒号后面是表达式,相当于函数要实现的功能,也是函数默认返回的结果。
6)文档字符串:通常我们在定义函数的时候都会对函数的形参和返回结果做说明,这些说明就是文档字符串。如果想要看别人定义函数的参数和返回值说明怎么办?我们可以直接打开源码定义位置查看,也可以用下面这种方式查看:
def method(x,y):
'''
:param x: 数字1
:param y: 数字2
:return: 返回两个数的和
'''
return (x + y)
if __name__ == '__main__':
print(method.__doc__)
#运行结果:
:param x: 数字1
:param y: 数字2
:return: 返回两个数的和