day-006--函数和模块的使用

函数和模块的使用

1.函数就是一些可以重复工作的代码,搞在一起,省事,
2.关键字是def
格式:
def foo():
        #do what you want
        #return what you want 
3.参数的定义 就是在函数 foo() 的括号里加上想传的参数 比如
def addtest1(a):# 标准玩法
    c = a + 8
    print(c)


def addtest2(a=2):# 可以赋值初值的玩法
    c = a + 8
    print(c)


def addtest3(*args):# 可变变量玩法
    sum = 0
    for val in args:
        # do something
4.模块化管理,这个比较好玩,Python中每个文件就代表了一个模块(module),我们在不同的模块中可以有同名的函数,在使用函数的时候我们通过import关键字导入,例子如下
from day005 import addtestfromanother
import day005 as day005
5.入口函数,加个下面的判断,不然会执行所有的函数,最好是将这些执行代码放入如下所示的条件中,这样的话除非直接运行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是“__main__”。

想这个样子

if __name__ == '__main__':
    day005code()
6.上代码
#这是一个 可以动的钟
# coding=utf-8

import turtle
from datetime import *
from day005 import addtestfromanother
import day005 as day005


# 抬起画笔,向前运动一段距离放下
def Skip(step):
    turtle.penup()
    turtle.forward(step)
    turtle.pendown()


def mkHand(name, length):
    # 注册Turtle形状,建立表针Turtle
    turtle.reset()
    Skip(-length * 0.1)
    # 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
    turtle.begin_poly()
    turtle.forward(length * 1.1)
    # 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。
    turtle.end_poly()
    # 返回最后记录的多边形。
    handForm = turtle.get_poly()
    turtle.register_shape(name, handForm)


def Init():
    global secHand, minHand, hurHand, printer
    # 重置Turtle指向北
    turtle.mode("logo")
    # 建立三个表针Turtle并初始化
    mkHand("secHand", 135)
    mkHand("minHand", 125)
    mkHand("hurHand", 90)
    secHand = turtle.Turtle()
    secHand.shape("secHand")
    minHand = turtle.Turtle()
    minHand.shape("minHand")
    hurHand = turtle.Turtle()
    hurHand.shape("hurHand")

    for hand in secHand, minHand, hurHand:
        hand.shapesize(1, 1, 3)
        hand.speed(0)

    # 建立输出文字Turtle
    printer = turtle.Turtle()
    # 隐藏画笔的turtle形状
    printer.hideturtle()
    printer.penup()


def SetupClock(radius):
    # 建立表的外框
    turtle.reset()
    turtle.pensize(7)
    for i in range(60):
        Skip(radius)
        if i % 5 == 0:
            turtle.forward(20)
            Skip(-radius - 20)

            Skip(radius + 20)
            if i == 0:
                turtle.write(int(12), align="center", font=("Courier", 14, "bold"))
            elif i == 30:
                Skip(25)
                turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
                Skip(-25)
            elif (i == 25 or i == 35):
                Skip(20)
                turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
                Skip(-20)
            else:
                turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
            Skip(-radius - 20)
        else:
            turtle.dot(5)
            Skip(-radius)
        turtle.right(6)


def Week(t):
    week = ["星期一", "星期二", "星期三",
            "星期四", "星期五", "星期六", "星期日"]
    return week[t.weekday()]


def Date(t):
    y = t.year
    m = t.month
    d = t.day
    return "%s %d%d" % (y, m, d)


def Tick():
    # 绘制表针的动态显示
    t = datetime.today()
    second = t.second + t.microsecond * 0.000001
    minute = t.minute + second / 60.0
    hour = t.hour + minute / 60.0
    secHand.setheading(6 * second)
    minHand.setheading(6 * minute)
    hurHand.setheading(30 * hour)

    turtle.tracer(False)
    printer.forward(65)
    printer.write(Week(t), align="center",
                  font=("Courier", 14, "bold"))
    printer.back(130)
    printer.write(Date(t), align="center",
                  font=("Courier", 14, "bold"))
    printer.home()
    turtle.tracer(True)

    # 20ms后继续调用tick
    turtle.ontimer(Tick, 20)


def functes(x):
    def line(y):
        return 5*y - x
    return line

def addtest():
    c = 8
    print(c)


def addtest1(a):
    c = a + 8
    print(c)


def addtest2(a=2):
    c = a + 8
    print(c)


def addtest3(*args):
    sum = 0
    for val in args:
        sum += val
    print(sum)
def main():
    #测试闭包,理解下
    line = functes(1000)
    print(line(1))
    #函数的定义,理解一波
    addtest()
    addtest1(10)
    addtest2()
    addtest2(3)
    addtest3(1,2,3,4,5)
    addtestfromanother(111)
    day005.addtestfromanother(123)
    # 下面就是除了一个好玩的小钟
    # 打开/关闭龟动画,并为更新图纸设置延迟。
    # turtle.tracer(False)
    # Init()
    # SetupClock(160)
    # turtle.tracer(True)
    # Tick()
    # turtle.mainloop()


if __name__ == "__main__":
    main()

执行结果:

-995
8
18
10
11
15
come form day 005:result 1111
come form day 005:result 1123

有个用turtle做了个电子表的,去掉注释就行了,效果是这样的


day-006--函数和模块的使用_第1张图片
image.png

文集传送门 学习python100天


整个学习python100天的目录传送门


无敌分割线


再最后面附上大神的链接传送门

你可能感兴趣的:(day-006--函数和模块的使用)