函數(shù)和模塊的使用
1.函數(shù)就是一些可以重復(fù)工作的代碼跋破,搞在一起埋哟,省事,
2.關(guān)鍵字是def
格式:
def foo():
#do what you want
#return what you want
3.參數(shù)的定義 就是在函數(shù) foo()
的括號里加上想傳的參數(shù) 比如
def addtest1(a):# 標(biāo)準(zhǔn)玩法
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)毅人,我們在不同的模塊中可以有同名的函數(shù),在使用函數(shù)的時候我們通過import
關(guān)鍵字導(dǎo)入尖殃,例子如下
from day005 import addtestfromanother
import day005 as day005
5.入口函數(shù)丈莺,加個下面的判斷,不然會執(zhí)行所有的函數(shù)送丰,最好是將這些執(zhí)行代碼放入如下所示的條件中缔俄,這樣的話除非直接運行該模塊,if條件下的這些代碼是不會執(zhí)行的器躏,因為只有直接執(zhí)行的模塊的名字才是“__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)
# 開始記錄多邊形的頂點瞎疼。當(dāng)前的烏龜位置是多邊形的第一個頂點。
turtle.begin_poly()
turtle.forward(length * 1.1)
# 停止記錄多邊形的頂點壁畸。當(dāng)前的烏龜位置是多邊形的最后一個頂點贼急。將與第一個頂點相連。
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ài)顯示
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后繼續(xù)調(diào)用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))
#函數(shù)的定義,理解一波
addtest()
addtest1(10)
addtest2()
addtest2(3)
addtest3(1,2,3,4,5)
addtestfromanother(111)
day005.addtestfromanother(123)
# 下面就是除了一個好玩的小鐘
# 打開/關(guān)閉龜動畫令杈,并為更新圖紙設(shè)置延遲走敌。
# turtle.tracer(False)
# Init()
# SetupClock(160)
# turtle.tracer(True)
# Tick()
# turtle.mainloop()
if __name__ == "__main__":
main()
執(zhí)行結(jié)果:
-995
8
18
10
11
15
come form day 005:result 1111
come form day 005:result 1123
有個用turtle做了個電子表的,去掉注釋就行了逗噩,效果是這樣的
image.png
文集傳送門 學(xué)習(xí)python100天
整個學(xué)習(xí)python100天的目錄傳送門
無敵分割線
再最后面附上大神的鏈接傳送門