python基础:9.函数

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: 返回两个数的和

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值