python第五章总结——函数和代码的复用、模块4:PyInstaller库

一.函数

1.函数的定义
def <函数名>(<参数(0个或多个)>):
	<函数体>
	return <返回值>
2.函数的参数传递
  1. 为某些参数提供默认值,构成可选参数。如:
#  def <函数名>(<非必须参数>, <必须参数>):
def fact(n, m=1):
	s = 1
	for i in range(1, n+1):
		s *= i
	return s//m
fact(10)

fact(10, 5)
  • 如果实参提供了值,就用实参的值;否则用可选参数的值
  • python规定,可选参数要放在必须参数的后面
  1. 不确定参数总数时,可设计可变数量参数。如:
# def <函数名>(<参数>, *b);
def fact(n, *b):
	s = 1
	for i in range(1, n+1):
		s *= i
	for item in b:
		s *= item
	return s
fact(10, 3)

fact(10, 3, 5, 8)
  1. 函数调用时,参数可以按照位置或名称方式传递。如:
def fact(n, m=1):
	s = 1
	for  i in range(1, n+1):
		s *= i
	return s//m
fact(10, 5)#位置传递

fact(m=5, n=10)#名称传递
3.函数的返回值

在python中,返回值的个数不限制。如:

def fact(n, m=1):
	s = 1
	for i in range(1, n+1):
		s *= i
	return s//m, n ,m
fact(10, 5)

在这里插入图片描述

4.全局变量

规则1:在python中,定义的全局变量不能在函数体中直接使用,而要加保留字:global。如:

n, s = 10, 100#分别赋值
def fact(n):
	global s#如果不加global,会编译错误
	for i in range(1, n+1):
		s *= i
	return s
print(fact(n),s)

规则2:局部变量为组合数据类型且未创建,等同于全局变量,也就是不需要加globla。如:

ls = ["F", "f"]
def func(a):
	ls.append(a)#在列表中加一个元素a
	return
func("C")
print(ls)

在这里插入图片描述
如果创建了,即:

ls = ["F", "f"]
def func(a):
	ls = []
	ls.append(a)
	return
func("C")
print(ls)

在这里插入图片描述

5.lambda函数

lambda函数是一种匿名函数,即没有名字的函数,用于定义简单的、能够在一行内表示的函数,它返回函数名作为结果。如:

#  <函数名> = lambda <参数>:<表达式>
f = lambda x, y : x + y
f(10 ,15)#输出25

个人感觉,与C语言中宏定义类似。

二.实例7:七段数码管绘制

基本思路:

  1. 绘制单个数字对应的数码管
  2. 获得一串数字,绘制对应的数码管
  3. 获得当前系统时间,绘制对应的数码管

给出代码:

import turtle, time
def drawGap(): #绘制数码管间隔
    turtle.penup()
    turtle.fd(5)
def drawLine(draw):   #绘制单段数码管
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap()
    turtle.right(90)
def drawDigit(d): #根据数字绘制七段数码管
    drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if d in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if d in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if d 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(-350)
    turtle.pensize(5)
#    drawDate('2018-10=10+')
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
    turtle.hideturtle()
    turtle.done()
main()

在这里插入图片描述

三.实例二:绘制科赫雪花

import turtle
def koch(size, n):
    if n == 0:
        turtle.fd(size)
    else:
        for angle in [0, 60, -120, 60]:
           turtle.left(angle)
           koch(size/3, n-1)
def main():
    turtle.setup(600,600)
    turtle.penup()
    turtle.goto(-200, 100)
    turtle.pendown()
    turtle.pensize(2)
    level = 3      # 3阶科赫雪花,阶数
    koch(400,level)     
    turtle.right(120)
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.hideturtle()
main()

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值