一、函数的定义
def fact(n):#使用关键字def进行函数定义,可以没有参数,但是必须保留括号
s = 1
for i in range(1, n+1):
s *=i
return s
a = fact(10)#调用函数,给形参赋值
print(a)
1.在函数进行定义的过程中,参数分为非可选参数,和可选参数(可以进行赋值),前后关系如下:
2.可变参数:有时,为了使函数方便调试,增加了可变参数,可变参数放在最后,用*进行标识。
3.参数的两种传递方式:位置传递,按照位置进行参数赋值;名称赋值,按照名称进行赋值,与位置无关。
4.局部变量和全局变量
注:使用global保留字可以将函数局部变量声明为全局变量
5.在函数体内,如果函数参数没有在函数体内定义,则使用全局变量
二、lambda函数
注:表达式 = 函数体+返回值,lambda函数中,参数可以省略,直接返回结果
f = lambda x, y:x**y
print(f(3,3))
f = lambda :'没有参数'
print(f())
结果:
没有参数
三、实例
1.绘制七段数码管
import turtle
def drawLine(draw): #绘制单段数码管
turtle.pendown() if draw else turtle.penup() #判断是否开始绘制
turtle.fd(40)
turtle.right(90) #持续右转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('20200121')
turtle.hideturtle()
turtle.done()
main()
结果:
2.绘制系统时间
import turtle
import time
def drawLine(draw): #绘制单段数码管
turtle.pendown() if draw else turtle.penup() #判断是否开始绘制
turtle.fd(40)
turtle.right(90) #持续右转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): #获取绘制的数字
turtle.pencolor('red')
for i in date:
if i == '-':
turtle.write('年',font=('Arial',18,'normal'))
turtle.pencolor('green')
turtle.fd(40)
elif i == '=':
turtle.write('月', font=('Arial', 18, 'normal'))
turtle.pencolor('blue')
turtle.fd(40)
elif i == '+':
turtle.write('日', font=('Arial', 18, 'normal'))
else:
drawDigit(eval(i))
def main():
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
turtle.hideturtle()
turtle.done()
main()
结果: