美文网首页
004-函数

004-函数

作者: 痞子_4ae7 | 来源:发表于2020-05-14 11:45 被阅读0次

函数介绍

  • 函数概念
一般情况下,某段代码需要反复使用多次,
而且这段代码又具备特定的功能,
我们会把这段代码组织成为单独的功能模块,
这个功能模块就可以叫做函数
  • 函数的定义和调用

    • 函数的定义(函数可以重复调用,不能重复定义)
    语法格式:
    def  函数名():
        代码块...
    
    • 函数的调用
    调用格式:
    函数名()
    
  • 练习 封装函数打印99乘法表:

# 函数的定义
def show99():
    i = 1
    while i < 10:
        j = 1
        while j <= i:
            print("%d * %d = %d\t"%(j,i,i*j),end=" ")
            j += 1
        i += 1
        print("")
        # 函数的调用,只有调用函数,函数中的代码才会被执行
show99()
  • 函数的文档说明
使用help(自定义方法名) 可以查看函数的文档说明
help(show99)
显示结果:
Help on function show99 in module __main__:
show99()
    # 函数的定义: 打印99乘法表

函数的参数

  • 定义带有参数的函数
语法格式:
def 方法名(形参...):
    代码块(带代码中,形参可以被理解为定义好的一个变量)
  • 带参数的函数的调用
方法名(实际参数)
注意:参数的个数要匹配
  • 练习 :
定义可以完成三个数字求和的方法,求从键盘录入的三个数字的和

函数的返回值

  • 什么叫做返回值(生活实例)
让同桌帮你买饭回来,对你来说,饭,就是返回值
  • 开发中的返回值
两个数字求和函数,有时候,调用者只是想得到这个和。
  • 带返回值函数的案例:
def getSum(a,b):
    c = a + b
    return c
#简化:
def getSum(a,b):
    return a + b
#调用
result = getSum(10,20)
#这时候的result就是得到的返回值

四种函数的类型

  • 无参数,无返回值
  • 无参数,有返回值
  • 有参数,无返回值
  • 有参数,有返回值

函数的封装强化练习

  • 函数的嵌套调用
def test2():
    print("test2")
def test1():
    #调用函数2
    test2()
test1()
  • 封装函数练习

    • 封装函数,完成自定义个数的*组成的直线
    比如:参数为5,打印出如下内容
    
    *****
    
    • 封装函数,完成 自定义行数的 上题 实现的直线
    例如:参数为3,打印如下效果
    
    *****
    *****
    *****
    
    • 封装函数
    封装求3个数字平均数的函数
    

局部变量

  • 概念
在函数内部定义,用来存储临时数据的变量,称为临时变量,形参也是局部变量
  • 注意
    • 在函数内部定义,作用域为函数内部

    • 不同函数中可以存在同名变量,互不干涉,没有关系

全局变量

  • 概念

    • 既能在其中一个函数中使用,又能在其他函数中使用的变量,成为全局变量
    #例:
    a = 100
    def test1():
        print(a)
    def test2():
        print(a)
    
  • 全局变量与局部变量同名问题

    • 可以重名
    a = 100
    def test():
        a = 200
        print(a)
    test()
    #这种写法是允许的,打印出的结果为“200”,访问的为离的近的
    
    • 函数内部修改全局变量问题
    a = 100
    def test():
         # global a(需要手动声明a 为全局的才可以进行修改)
        a += 10
        print(a)
    

如果在函数内部,想修改全局变量的值,需要手动将变量前使用global进行修饰(可变类型的全局变量,不需要修饰)

例:
a = [1]
def test():
   a.append(10)
   print(a) 
test()

函数应用:图书管理系统

def showMenu():
    print("1.添加图书")
    print("2.查询图书")
    print("3.删除图书")
    print("4.修改图书")
    print("5.退出系统")

函数的返回值二

  • 多个返回值问题
允许多个返回值,本质利用的是元组
def divid(a,b):
    shang = a // b
    yushu = a % b
    return shang,yushu
value1,value2=divid(10,20)
print(value1)
print(value2)

函数的参数二

  • 缺省参数
# 缺省参数
def test3(a,b=10):
    print(a)
    print(b)
test3(100)
  • 可变参数
# 可变参数  *tu    元组形式
def test4(*tu):
    print(a)
test4(1)
test4(1,2,3)
test4([1,2,3])
test4((1,2,3))
# 可变参数 **kw    字典形式
def test5(**kw):
    print(kw)
test5(m=1,b=2)
  • 引用参数(可以画图讲解)

    • 基本参数
    a=100
    # 在方法中修改变量的值
    def changValue(v):
        v = 200
    changValue(a)
    # 打印发现a的值依旧为100
    print(a)
    
    • 引用参数
    list1=[1,2,3]
    # 在函数中修改变量的值
    def changValue(v):
        v[0] = 100
    changValue(list1)
    # 打印发现list1的值变成了[100, 2, 3]
    print(list1)
    

递归函数

  • 递归概念
在函数中不是调用其他而是调用自身,这种调用方式,称为递归调用
  • 递归的使用
    • 递归求 ∑100
    • 求 n!

匿名函数

  • 概念
用lambda关键字创建的简单的没有函数
名的函数,这种函数不用def声明
  • 语法
语法格式:
lambda  参数... :  表达式
sum = lambda args1,args2: args1+args2
print(sum(1,2))
#结果为:3
  • 注意事项:
    • 在匿名函数中,不能有return
    • 可以有0、1、多个参数
    • 表达式计算后只能返回一个值

课后练习

  • 完善图书管理系统其他功能
  • 封装函数:判断一个数字是否为质数
  • 打印1-1000之间所有的质数,两个一排
  • 封装函数:判断一个数字是否为水仙花数
  • 打印所有的水仙花数

相关文章

网友评论

      本文标题:004-函数

      本文链接:https://www.haomeiwen.com/subject/zdftohtx.html