2021小白Python入门学习记录Day4(win10系统、Python3.9、使用Pycharm)Python函数学习 上(函数调用 参数类型 函数返回值 函数嵌套调用)

本文介绍了Python中的函数基础知识,包括函数的定义、使用及参数类型,如必选参数、默认参数、可变参数和关键字参数。此外,还讲解了函数返回值的概念和如何进行函数的嵌套调用。通过示例代码,展示了如何通过函数提高代码复用性和可读性。
摘要由CSDN通过智能技术生成

'''

每日更新内容为10天前当天学习内容,想通过写博客的方式复习和记录,欢迎大佬提意见、纠错和萌新学习与讨论。

'''

目录

一、函数是什么,为什么要学习和使用函数

1.函数引出

2.定义一个函数

3.带参数的函数

二、 函数的参数分类

参数简介

1.必选参数

2.默认参数【缺省参数】

3.可变参数

4.关键字可变参数

5.多种参数混合使用

三、函数返回值

函数返回值简介

函数返回值实例

五、函数的嵌套调用

# 根据函数的返回值和函数的参数,对函数进行分类


一、函数是什么,为什么要学习和使用函数

1.函数引出

# 例1 引出
print('小王的体重是%f'%140)
print('小王的身高是%f'%1.83)
print('小王的爱好是%s'%'睡觉')
print('小王的专业是%s'%'计算机')
#   多次打印出小张的信息
print('---------------------多次输出相同的信息很麻烦------------------------')
print('小王的体重是%f'%140)
print('小王的身高是%f'%1.83)
print('小王的爱好是%s'%'睡觉')
print('小王的专业是%s'%'计算机')

针对上面这种情况,每次我们打印信息都要输入这么多内容,不仅代码多麻烦,而且也很难看。

争对上面的场景 需要进一步的优化代码【方案:封装函数】

2.定义一个函数

定义一个函数:
def 函数名(参数列表) :     # 0~n个参数
    函数体[一系列的python语句,表示独立的功能]

函数的调用:
函数名()# 本质上就是去执行函数定义里面的代码块,在调用之前 必须先定义

def printInfo():
    '''
    这个函数用来打印小王个人信息
    :return:
    '''
    #函数的代码块  
    print('小王的体重是%.1f'%140)   # %.1f 表示保留一位小数
    print('小王的身高是%.2f' % 1.83)
    print('小王的爱好是%s' % '睡觉')
    print('小王的专业是%s' % '计算机')
    pass
# 函数的调用
printInfo() # 调用
printInfo() # 第二次调用

运行结果:

可以看到我们调用了两次函数,信息就打印了两次;要打印几次就调用几次函数就可以了,不用每次都写一长串代码。这样使代码结构更清晰,更简洁。

结论:

什么是函数:一系列python语句的组合,可以在程序中运行一次或者多次,一般是完成具体的独立的功能
为什么要使用函数
代码的复用最大化以及最小化冗余代码,使整体代码结构清晰,问题局部化

3.带参数的函数

上面的代码我们只能打印小王的的个人信息 当我们想要打印别人的信息时就用不了。

这时候我们就需要通过传入参数来实现打印不同的信息。

# 进一步的完善需求【输出不同人的信息】 方案:通过传入参数来解决
def printInfo1(name,height,weight,hobby,pro):  #形参
    '''
    这个函数是用来打印个人信息的
    :return:
    '''
    #函数的代码块
    print('%s的身高是%.1f' %(name,height))
    print('%s的体重是%.1f' %(name,weight))
    print('%s的是爱好%s' %(name,hobby))
    print('%s的专业是%s' %(name,pro))
    pass

# 调用带参数的信息
printInfo1('小李',189,200,'打球','计算机')   #实参
print('-----------------------------------')
printInfo1('peter',175,160,'码代码','咨询师')

 运行结果:

通过传入参数就可以输入不同人的信息,下面我来简单介绍一下参数的几种类型

二、 函数的参数分类

参数简介

几种类型:必选参数、默认参数[缺省参数]、可选参数、关键字参数

参数:其实就是函数为了实现某项特定的功能,进而为了得到实现功能所需要的数据 为了得到外部数据  

形参和实参的区别:定义函数时括号内部为形参,调用时填入的为实参。实参和形参的区别可以参考下面这位博主的文章。

Python函数中的形参实参讲解_CapejasmineY的博客-CSDN博客_python实参和形参的区别

1.必选参数

# 必选参数
def sum(a,b):   #形式参数:只是意义上的一种参数,在定义的时候,是不占用内存地址的
    sum=a+b
    print(sum)
    pass
sum(20,26) #调用   20  15 为实际参数:实参,实实在在的参数,是实际占用内存地址的
# sum(15)   #不能这么写  缺少必选参数会报错

运行结果为 46

必选参数在函数调用时必须写上,不然函数内部代码就会因为缺少参数而报错。

比如这里如果执行sum(15):

2.默认参数【缺省参数】

# 2.默认参数【缺省参数】
def sum1(a=20,b=30):
    print('默认参数的使用=%d'%(a+b))
    pass
# 默认参数调用
sum1()    # 结果为50   在调用时如果未赋值,就会用定义函数时给的默认值
sum1(10)  # 结果为40
sum1(15,21) #结果为36

运行结果:

 我们可以看到使用默认参数做形参时,我们调用少填参数也不会报错,会按照默认参数去运行。

3.可变参数

(当参数的个数不确定时使用,比较灵活    加*号即为可变参数)

def getComputer(*args): # 可变长的参数  *args可以用别的替代但是要写*号 通常我们就写*atgs
    '''
    计算累加和
    :param args:可变长的参数类型
    :return:
    '''
    print(args)   # 打印 观察一下参数
    result=0
    for item in args:
        result+=item
        pass
    print('result=%d'%result)
    pass
# 调用
getComputer(1)  #args为(1,)是一个元组
print('-------------------')
getComputer(1,3)  #4

运行结果:

 可以看到这时参数 arg 被封装成了一个 元组

使用可变参数,我们填入变量的个数就不会收到参数类型的限制。

4.关键字可变参数

# 关键字可变参数
# ** 来定义
# 在函数体内 函数关键字是一个字典类型 
def keyFunc(**kwargs):    #长度为0~n个
    print(kwargs)       # 参数传入之后被封装成了 字典
    pass
#调用
# keyFunc(1,2,3) 不可以这样传
dictA={'name1':'liu','age1':25}
keyFunc(**dictA)    #实参必须是字典类型

keyFunc(name2='peter',age2=26)  #  命名参数的形式也可传
keyFunc(name1='peter',age1=26)  #  命名参数的形式也可传
keyFunc()

运行结果:

可以看到通过关键字可变参数传入参数,参数传入后被封装成了一个字典

5.多种参数混合使用

使用时不同类型的参数要按类型摆放!

参数顺序 必选参数->默认参数【缺省参数】->可变参数->关键字可变参数

# 多种参数混合使用 参数顺序 必选参数->默认参数【缺省参数】->可变参数->关键字可变参数
def complexFunc(a=110,*args,**kwargs):
    print(a)
    print(args)
    print(kwargs)
    pass
complexFunc(110,2,3,4,name='刘德华',msd=15)
print('-------------------------')
complexFunc(age=16) # 自动识别参数类型 自动填充

# def TestMup(**kwargs,*args):  # 错误 可变参数必须放到关键字可变参数之前
# 可选参数:接受的数据是一个元组类型
# 关键字可选参数:接受的数据是一个字典类型

运行结果:

一定注意:使用时不同类型的参数要按类型摆放!

不然容意出现错误  大家可以自己尝试一下

三、函数返回值

函数返回值简介

概念:函数执行完以后会返回一个对象,如果在函数的内部有 return,就可以返回实际的值,否则返回None

类型:可以返回任意类型,返回值类型应该取决于return后面的类型

用途:给调用方返回数据 在一个函数体内可以出现多个retur值,但是肯定只能返回一个return

#  如果在一个函数体内 执行了return,就意味着函数执行完成退出了,return后面的代码语句将不会执行

函数返回值实例

程序一:返回求和结果:

def Sum1(a,b):
    sum=a+b
    return sum # 将计算结果返回
    pass

rs=Sum1(10,30) # 将返回值赋给其他的变量
print(rs)

运行结果:40

程序二:求1~10的和

def calComputer(num):
    li=[]
    result=0
    i=1
    while i<=num:
        result+=i
        i+=1
        pass
    li.append(result)
    return li
    pass
# 调用函数
value=calComputer(10)
print(value,type(value))    #类型由return的类型决定

运行结果:

可以看到返回的结果由return 后面的类型决定

五、函数的嵌套调用

# 函数的嵌套调用
# 函数嵌套
def fun1():
    print('--------------fun1111 start-----------------------')
    print('--------------执行代码省略------------------------')
    print('--------------fun1111 end--------------------------')
    pass
def fun2():
    print('--------------fun2222 start------------------------')
    fun1() #调用第一个函数
    print('---------------fun2222 end-------------------------')
    pass
fun2() #调用fun2

运行结果:

在fun2中调用fun1 实现了函数的嵌套。 这个很好理解。

# 根据函数的返回值和函数的参数,对函数进行分类

不过就四种类型

# 有参数无返回值

# 有参数无返回值

# 无参数有返回值

# 无参数无返回值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿左.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值