Python函数和代码复用(一)

今天学习一下Python函数和代码复用,进一步学习python。

函数的定义和使用

函数的定义

函数是一段代码的表示

  • 函数是一段具有特定功能的、可重用的语句组
  • 函数是一种功能的抽象,一般函数表达特定功能
  • 两个作用:降低编程难度代码复用
    案例:计算n!
    1
    2
    3
    4
    5
    def fact(n):
    s = 1
    for i in range(1,n+1):
    s *= i
    return s

函数的使用和调用过程

1
2
3
4
5
6
7
def fact(n):
s = 1
for i in range(1,n+1):
s *= i
return s
a = fact(10)
print(a)

函数的参数传递

函数可以有参数,也可以没有,但必须保留括号

1
2
3
def <函数名>():
<函数体>
return <返回值>

可选参数传递:函数定义时可以为某些参数指定默认值,构成可选参数

1
2
3
def <函数名>(<非可选参数>,<可选参数>):
<函数体>
return <返回值>

可变参数传递:

1
2
3
def <函数名>(<参数>,*b):
<函数体>
return <返回值>

实例:计算n!乘数

1
2
3
4
5
6
7
def fact(n,*b):
s = 1
for i in range(1,n+1):
s *= i
for item in b:
s *= item
return s

参数传递的两种参数:按位置或者按名称

函数的返回值

可以返回0个或多个元组类型的结果

1
2
3
4
5
6
def fact(n,m=1):
s = 1
for i in range(1,n+1):
s *= i
return s//m,n,m
a,b,c = fact(10,5)

局部变量和全局变量

  • 局部变量和全局变量是不同变量
  • 函数中使用全局变量:使用global关键字
  • 局部变量为组合数据类型且未创建,等同于全局变量

lambda函数

<函数名> = lambda<参数>:<表达式>
f = lambda x,y : x+y
lambda 函数谨慎使用

实例:七段数码管绘制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import time
import turtle as t
def drawLine(draw): #绘制单段数码管
t.pendown() if draw else t.penup()
t.fd(40)
t.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)
t.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)
t.left(180)
t.penup()
t.fd(20)
def drawDate(date):
for i in date:
drawDigit(eval(i))
def main():
t.setup(800,350)
t.penup()
t.fd(-300)
t.pensize(5)
t.pencolor('red')
drawDate(time.strftime('%Y%m%d',time.gmtime()))
t.hideturtle()
t.done()
main()

Python函数和代码复用(一)
https://chujian521.github.io/blog/2018/08/09/Python函数和代码复用(一)/
作者
Encounter
发布于
2018年8月9日
许可协议