重载

在学了前头很多python的根底项目后,大家总算得以进入下一阶段,前日我们将走进一个函数的新世界。

函数重载省去了为函数起名并切记函数名字的分神,尤其是操作符重载。(C
编写翻译器好像只扶助操作符重载,不帮助函数重载)。

预习:

图片 1图片 2

1、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
2、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
3、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
4、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

View Code

 

① 、函数的概念

函数的出现

借使大家需求相比较俩个数的轻重缓急,比如说(4,5),(10,20),(15,30)等等怎么写?

图片 3图片 4

a,b = 4,5
c,d = 10,20
e,f = 15,30
if a > b:
    print(a)
else:
    print(b)
if a > b:
    print(a)
else:
    print(b)
if a > b:
    print(a)
else:
    print(b)

View Code

那段代码给不会编制程序的人看她也会晤到我们那段代码太多了,功能雷同基本都以再度的代码。

那段代码存在七个难题:

壹 、代码冗余

② 、可读性差

其一时半刻候大家就引入了大家前日的显要——函数

只须求把重复的代码提取出来,放在三个国有的地方,起个名字,今后何人想用那段代码,就通过那么些名字调用就行了

图片 5图片 6

def max_l(a,b) :
    '''
    用来比较两个数值的大小
    :param a: 传进来的第一个数
    :param b: 传进来的第二个数
    :return: 无返回值
    '''
    if a > b:
        print(a)
    else:
        print(b)

max_l(4,5)
max_l(10,20)
max_l(15,30)

View Code

定义:

def
关键词开始,空格之后接函数称呼和圆括号(),最终还有二个”:”。

def
是一直的,不能变,必须是连连的def四个假名,无法分开。。。它们要知心相爱的在一齐。

空格为了将def关键字和函数名分别,必须空,当然你能够空2格、3格仍旧您想空多少都行,但不奇怪依然空1格。

函数名:函数名只好分包字符串、下划线和数字且不可能以数字初始。即使函数名能够随便起,但大家给函数起名字也许要尽量不难,并能表明函数成效

括号:是必须加的

注释:每多少个函数都应有对效率和参数实行对应的证实,应该写在函数下边第①行用多引号引起来。以拉长代码的可读性。

调用:就是 函数名() 要记得加上括号。

小结运用函数的补益

1.代码录取

2.保持一致性,易维护

3.可扩充性


 

贰 、函数的重回值

刚才我们真正已毕了相比大小也将结果打字与印刷了出去然而大家怎么用1个变量来收纳这些值吗?

return关键字

return
是2个至关心器重要字,在pycharm里那个词翻译过来就是“重临”,所以大家管写在return前边的值叫“重临值”

要探究再次来到值,大家还要领悟重回值有三种景况:分别是从未有过重返值、重回一个值、重临四个值

尚无重回值

1、不写return的动静下,会暗中同意再次回到3个None大家写的率先个函数,就不曾写return,那正是从未有过再次回到值的一种状态。

贰 、只写return,前面不写其余情节,也会回来None,既然没有要回到的值,完全能够不写return,为何还要写个return呢?因为return有三个重点用法,就是如若境遇return,结束全体函数

3、 return None

回到三个值

恰好大家曾经写过多个回去叁个值的景观,只需在return前面写上要赶回的始末即可。

图片 7图片 8

def max_l(a,b) :
    '''
    用来比较两个数值的大小
    :param a: 传进来的第一个数
    :param b: 传进来的第二个数
    :return: 无返回值
    '''
    if a > b:
        return a
    else:
        return b

a = max_l(4,5)
b = max_l(10,20)
c = max_l(15,30)
print(a,b,c)

View Code

瞩目:return和再次回到值之间要有空格,可以回去任意数据类型的值

回去多少个值

能够回去任意八个、任意数据类型的值

图片 9图片 10

def ret_demo1():
    '''返回多个值''' 
    return 1,2,3,4


def ret_demo2():
    '''返回多个任意类型的值'''
    return 1,['a','b'],3,4

ret1 = ret_demo1()
print(ret1)
ret2 = ret_demo2()
print(ret2)

View Code

回去的四个值会被社团成元组被重临,也得以用多少个值来选择

图片 11图片 12

def ret_demo2():
    return 1,['a','b'],3,4

#返回多个值,用一个变量接收
ret2 = ret_demo2()
print(ret2)

#返回多个值,用多个变量接收
a,b,c,d = ret_demo2()
print(a,b,c,d)

#用多个值接收返回值:返回几个值,就用几个变量接收

View Code

总结:

归来值数=0:重回None

回去值数=1:重回object

再次回到值数>1:再次来到tuple


 

叁 、函数的参数

刚才比较大小的函数正是1个有参数的函数刚才重临值里举的例子便是不带参的函数

我们告诉 max_l
函数要总结的字符串是何人,这么些进度就称为传递参数,简称传参,大家调用函数时传递的那几个“4,5”“10,20”“15,30”和概念函数时的a,b正是参数

实加入形参

咱俩调用函数时传递的那么些“4,5”“10,20”“15,30”被誉为实际参数,因为那一个是实际的要付出函数的始末,简称实参。

概念函数时的a,b,只是一个变量的名字,被称之为花样参数,因为在概念函数的时候它只是一个款式,表示那里有3个参数,简称形参

传递多少个参数:参数能够传递多少个,多少个参数之间用逗号分割

职位参数

站在实参角度

一 、依照岗位传值

图片 13图片 14

def mymax(x,y):
    #此时x=10,y=20
    the_max = x if x > y else y
    return the_max

ma = mymax(10,20)
print(ma)

View Code

二 、遵照重点字传值

图片 15图片 16

def mymax(x,y):
    #此时x = 20,y = 10
    print(x,y)
    the_max = x if x > y else y
    return the_max

ma = mymax(y = 10,x = 20)
print(ma)

View Code

③ 、地方、关键字情势混着用

图片 17图片 18

def mymax(x,y):
    #此时x = 10,y = 20
    print(x,y)
    the_max = x if x > y else y
    return the_max

ma = mymax(10,y = 20)
print(ma)

View Code

没错用法

岗位参数必须在关键字参数的前头

对此多少个形参只好赋值1遍 

站在形参角度

地方参数必须传值

图片 19图片 20

def mymax(x,y):
    #此时x = 10,y = 20
    print(x,y)
    the_max = x if x > y else y
    return the_max

#调用mymax不传递参数
ma = mymax()
print(ma)

#结果
TypeError: mymax() missing 2 required positional arguments: 'x' and 'y'

位置参数必须传参

View Code

暗中认可参数

1.例行使用

为啥要有暗中认可参数:将转变相比较小的值设置成默许参数

2.私下认可参数的概念

图片 21图片 22

def stu_info(name,sex = "male"):
    """打印学生信息函数,由于班中大部分学生都是男生,
        所以设置默认参数sex的默认值为'male'
    """
    print(name,sex)


stu_info('alex')
stu_info('eva','female')

View Code

3.参数陷阱:默许参数是2个可变数据类型

图片 23图片 24

def defult_param(a,l = []):
    l.append(a)
    print(l)

defult_param('alex')
defult_param('egon')

View Code

动态参数

按岗位传值多余的参数都由*args统一接受,保存成二个元组的款式

图片 25图片 26

def mysum(*args):
    the_sum = 0
    for i in args:
        the_sum+=i
    return the_sum

the_sum = mysum(1,2,3,4)
print(the_sum)

View Code

 按主要性字传值多余的参数都由*kwargs统一接受,保存成2个字典的款式

图片 27图片 28

def stu_info(**kwargs):
    print(kwargs)
    print(kwargs['name'],kwargs['sex'])

stu_info(name = 'alex',sex = 'male')

View Code


 

思考导图:

图片 29

 

预习解答:

图片 30图片 31

def length(str) :
    '''
    计算传入字符串中数字、字母、空格以及其他的个数
    :param s:用户出入的字符串
    :return:各类的个数
    '''
    a = b = c = d = 0
    for i in str :
        if i.isdigit() :
            a += 1
        elif i.isalpha() :
            b += 1
        elif i.isspace() :
            c += 1
        else:
            d += 1
    return a,b,c,d

msg = input("please input:")
a,b,c,d = length(msg)
print("数字:{} 字母:{} 空格:{} 其他:{}".format(a,b,c,d))


def length(str) :
    '''
    判断用户传入的对象(字符串、列表、元组)长度是否大于5。
    :param str: 用户传入的对象
    :return: 返回布尔值
    '''
    if len(str) <= 5 :
        return False
    else:
        return True

msg = length("hello world")
msg1 = length([1,2,3,4])
msg2 = length((1,2,3,4,5,6))
print(msg,msg1,msg2)


def length(str) :
    '''
    检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
    :param str:传入的列表
    :return:返回列表前两位
    '''
    if len(str) > 2 :
        return str[0:2]
    return str

list_l = [1,2,3,4,5,6]
print(length(list_l))


def func(str) :
    '''
    检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
    :param str:传入的列表或元组
    :return:新列表
    '''
    return str[1::2]

msg = (1,2,3,4,5,6,7,8,9)
print(func(msg))

View Code

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图