黑马程序员2022版Python教程学习笔记——函数

1.函数

1.函数:是组织好的,可重复使用的,用来实现特定功能的代码段

    函数的意义在于为了得到一个针对特定需求,可供重复性利用的代码段,提高了程序的复用性,减少重复代码,提高开发效率。

2.函数的定义

def  函数名(传入参数):

       函数体

       return  返回值

函数的调用:函数名(参数)

注意事项:

1.参数如果不需要,可以省略,但是括号不能省略

2.返回值如不需要,可以省略

3.函数必须先定义后使用,定义完函数之后必须得调用才能正常使用

小练习:

定义一个函数,函数名任意,要求调用函数后可以输出如下欢迎语:

          欢迎来到黑马程序员!

          请出示您的健康码以及72小时核酸证明!

换行符:"\n"

def csgo ():
    print("欢迎来到黑马程序员!\n请出示您的健康码以及72小时核酸证明!")
csgo()

    

 3.函数的传入参数

传入参数的功能:在函数进行计算的时候,接收外部(调用时)提供的数据

  • 传入参数的数量是不受限制的,可以不使用传入参数,也可以仅使用任意N个参数

有如下代码,完成了两个数字的相加,但是函数的功能非常局限,只能计算 1+2。

def add():
    result =1 + 2
    print(f"1 + 2的结果:{result}")
add()

  

 这个时候就显示出传入参数的重要性了,有了传入参数,就可以让add函数的计算范围更加广阔,这个函数也更加实用了。

def add(x,y):
    result = x + y
    print(f"{x}+{y}的结果是:{result}")
add(2,3)

   

  •  函数定义中,提供的x和y称之为:形式参数(形参),表示函数声明将要使用两个参数(参数之间使用逗号进行分隔
  • 函数调用中,提供的2和3,称之为:实际参数(实参),表示函数执行时真正使用的参数值(传入的时候,按照顺序传入数据,使用逗号分隔)

具体案例:

def temperature (x):
    if x <= 37.3:
        print (f"欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!\n体温测量中,您的体温是:{x}度,体温正常请进!")
    else:
         print (f"欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!\n体温测量中,您的体温是:{x}度,需要隔离!")
temperature(35)

4.函数的返回值

返回值的语法:

 def 函数(参数.....):

       函数体

       return 返回值

变量 = 函数(参数)

  • 通过return关键字,就能向调用者返回数据,这样变量就能接收到函数的返回值
def add(a,b):
    result = a + b
    return result
r = add(2 ,3)
print(r)
  • 首先 实际参数2,3进入add函数进行加法运算,然后得出result,通过return关键字把result的具体值返回给r,然后将r打印出来。
  • return后面如果有和它同级别的语句,是不会继续执行的,因为在函数体一遇到return关键字,就表明我们的函数立刻就在这里停止了

   

None类型

  • 如果函数没有使用return语句返回数据,函数也是有返回值的。python中有一个特殊的字面量:None,其类型是:<class'NoneType'>,无返回值的函数,实际上就是返回了:None这个字面量
  • None表示:空的,无实际意义的意思,函数返回的None,就表示,这个函数没有返回什么有意义的内容,也就是返回了空的意思。
def say_hi():
    print("你好呀")
result = say_hi()
print(f"无返回值函数,返回的内容是:{result}")
print(f"无返回值函数,返回的内容类型是:{type(result)}")

  

None类型的应用场景

  • 用在函数无返回值上
  • 用在if判断上,None等同于False,一般用于函数中主动返回None,配合if判断做相关处理
def check_age(age):
    if age > 18:
        return "SUCCESS"
    else:
        return None

result = check_age(16)
if not result:
    print("未成年,不可以进入")
else:
    print("可以进入")

以上代码,当年龄为16岁的时候,进入函数,返回值是None,等同于False,然后返回给result,在python中,not是逻辑判断,用于布尔值Ture和False,not Ture和not False 分别代表 False 和 Ture。如果只写 "if result:"  就会导致16进入函数之后,由于不足18,返回值变成None,就是False,那就不会输出第一个print 里面的值了,而是输出第二个print里面的值。因为第一个print运行的条件是True。

  • 用于声明无内容的变量上,定义变量,但暂时不需要内容的具体值,可以用None来代替

5.函数的说明文档

函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低。我们可以给函数添加说明文档,辅助理解函数的作用。

基础语法:

def func(x,y):

      """

     函数说明

     :param x:形参x的说明

     :param y:形参y的说明

     :return: 返回值的说明

     """

     函数体

     return 返回值

  • 通过多行注释的形式,对函数进行说明解释,内容应写在函数体之前

6.函数的嵌套调用

所谓嵌套调用指的是一个函数里面又调用了另一个函数

def func_b():
    print('-----2------')

def func_a():
    print('------1-----')
    func_b()
    print('---------3------')

func_a()

 

7.变量的作用域

变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)

局部变量:定义在函数体内部的变量,即只在函数体内部生效

局部变量的作用:在函数体内部,临时保存数据,当调用函数完成之后,立刻销毁局部变量

def testA():
    num = 100
    print(num)
testA()    #100
print(num) #报错: name 'num' is not defined.

全局变量:在函数体内,外都能生效的变量

num = 100
def testA():
    print(num)

def testB():
    print(num)

testA()    #100
testB()    #100

 global关键字

使用global关键字,可以在函数内部声明变量为全局变量

num = 100
def testA():
    print(num)

def testB():
    num = 500
    print(num)

testA()
testB()
print(num)

 

  •  从上面结果可以分析出,testB的num被改变了,但是全局变量num没有改变,说明testB里面的num是局部变量,无法在testB里面修改全局变量。
num = 100
def testA():
    print(num)

def testB():
    global num
    num = 500
    print(num)

testA()
testB()
print(num)

  

  •  使用global之后,就可以在函数体内部修改全局变量的值了

8.综合案例

#定义全局变量money name
money = 5000000
name = None
#要求客户输入姓名
name = input("请输入您的姓名:")
#定义查询函数
def query(show_header):
    if show_header:
      print("---------查询余额----------")
    print(f"{name},您好,您的余额剩余:{money}元")
#定义存款函数
def saving(num):
    global money  #money在函数内部定义为全局变量
    money += num
    print("---------存款-------------")
    print(f"{name},您好,您存款{num}元成功")
#调用query函数查询余额
    query(False)
#定义取款函数
def get_money(num):
    global money
    money -= num
    print("---------取款-------------")
    print(f"{name},您好,您取款{num}元成功")
    query(False)
#定义主菜单函数
def main():
    print("----------主菜单----------")
    print(f"{name},您好,欢迎来到黑马ATM.请选择操作:")
    print("查询余额\t[输入1]")
    print("存款\t\t[输入2]")
    print("取款\t\t[输入3]")
    print("退出\t\t[输入4]")
    return input("请输入您的选择:")
#无限循环不退出
while True:
    keyboard_input = main()
    if keyboard_input == "1":
        query(True)
        continue#通过continue继续下一次循环,一进来就是回到主菜单
    elif keyboard_input == "2":
        num = int(input("您想要存多少钱?请输入:"))
        saving(num)
        continue
    elif keyboard_input == "3":
        num = int(input("您想要取多少钱?请输入:"))
        get_money(num)
        continue
    else:
        print("程序退出啦")
        break#通过break退出循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值