美文网首页
5.函数和代码

5.函数和代码

作者: 颜斶 | 来源:发表于2018-07-06 01:29 被阅读11次

函数是一段代码的表示.具有特定功能,可重用.

两个作用:降低编程难度和代码复用.

def <函数名>(参数<0个或多个>) #输入
<函数体> #处理
return <返回值> #输出

可变参数传递

def <函数名>(<参数>,*b): #b可变参数
<函数体>
return <返回值>

函数调用时,可以按照位置或者名称方式传递.


函数的返回值
  • 函数可以有0个或多个返回值
  • 可以有return也可以没有
  • return可以传递0个也可以传递任意多个返回值

局部变量和全局变量

  • 局部变量和全局变量是完全不同的变量
  • 使用global保留字在函数内部声明使用全局变量
  • 局部变量为组合数据类型且未被创建,等同于全局变量

如果一个函数在内部调用自身本身,这个函数就是递归函数.
计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出:
fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n
所以,fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。
于是,fact(n)用递归的方式写出来就是:

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

lambda函数返回函数名作为结果.是一种匿名函数.

<函数名>= lambda <参数> :<表达式>

一般情况,建议使用def定义普通函数.


例:七段数码管绘制

import turtle
def drawline(draw):
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    turtle.right(90)
def drawdigit(digit):
    drawline(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 2, 6, 8] else drawline(False)
    turtle.left(90)
    drawline(True) if digit in [0, 4, 5, 6, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawline(False)
    turtle.left(180)
    turtle.penup()
    turtle.fd(20)
def drawdate(date):
    for i in date:
        drawdigit(eval(i))
def main():
    turtle.setup(800, 350, 200, 200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawdate('20180705')
    turtle.hideturtle()
    turtle.done()
main()


模块内部紧耦合,藕块之间松耦合.

函数递归的几个练习

1.字符串反转

def rvs(s):
    if rvs == "":
        return s
    else:
        return rvs(s[1:])+s[0]

2.斐波那契数列

def f(n):
    if n == 1 or n == 2:
        return 1
    else:
        return f(n - 1) + f(n - 2)

3.汉诺塔问题

count = 0
def hanoi(n, src,dst, mid):  #n是圆盘数,src是起始,dst是目标,mid是过度
    global count
    if n== 1:
        print("{}:{}->{}".format(1, src, dst)) #当圆盘是1时,从起始柱子移到目标柱子
        count += 1
    else:
        hanoi(n - 1, src, mid, dst)  #剩余的圆盘从A移到B柱子
        print("{}:{}->{}".format(n, src, dst))  #最大的圆盘从A移到C柱子
        count += 1
        hanoi(n - 1, mid, dst, src) #剩余的圆盘从B柱子到C柱子

相关文章

  • 5.函数和代码

    函数是一段代码的表示.具有特定功能,可重用. 两个作用:降低编程难度和代码复用. def <函数名>(参数<0个或...

  • js基础练习题(2)

    5.函数 1.按要求封装两个函数 2.封装一个函数,求参数的和,注意:参数不固定 3.有下列代码 修改代码,给a,...

  • 第一章:Hello Libgdx

    1.IDEA 新建 Gradle JAVA 项目 Gradle配置 3.Main函数 4.效果 5.代码链接 ht...

  • java子父类中代码块的执行顺序

    1.父类静态代码块 2.子类静态代码块 3.父类非静态代码快块 4.父类构造函数 5.子类非静态代码块 6.子类构...

  • swift——函数

    函数的定义和调用 1.函数的定义 示例代码: 2.函数的调用 示例代码 函数的参数和返回值 1.无参函数 尽管这个...

  • 5.函数

    1、函数:是具有某一特定功能的若干代码的集合,当需要使用这些代码实现某项功能的时候,我们通过该函数的名字就实现这些...

  • 5.函数

    定义函数 函数代码快以def关键字开头,后接函数标识符名称和圆括号() 任何传入参数和自变量必须放在圆括号中间 函...

  • 2018-03-29 EasyUI篇

    1.填充1.1 1.2 待更新 添加 3.删除 4.修改 5.刷新 6.函数 验证 8.html 代码

  • 2.函数与程序结构

    1.函数基础 2.函数的原型 3.变量的类型和作用域 4.函数的变长参数 5.函数的递归

  • 简单介绍Markdown的语法

    1、标题 2. 链接和图片 3. 横线 4.加粗 5.代码段 5.列表

网友评论

      本文标题:5.函数和代码

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