代码如下(示例):
# def 函数名():
# 语句块
# 将要执行的语句进行封装
def num():
print(123)
print(456)
print(678)
# 函数的调用
num()
这样我们就定义好了一个函数
那么如何重复的输出我们想要输出的数字
代码如下(示例):
def weekday():
print("周一")
print("周二")
print("周三")
print("周四")
print("周五")
print("周六")
print("周日")
# 调用多次 就输入多次命名的函数
weekday()
weekday()
代码如下(示例):
def year(month, num):
"""
这是一个月份函数
:param month:几月
:param num: 输出多少次
"""
# print(f"一年有{month}")
for i in range(num):
print(f"这是{month},输出第{i + 1}次,一共{num}")
year("一月", 10)
print("------------")
year("二月", 5)
例题:使用函数编写一个程序完成以下要求
代码如下(示例)
# 定义一个函数
def prime_number(start, stop, step):
# 使用循环来查看是否为质数
for i in range(start, stop + 1 - step):
for j in range(2, i):
if i % j == 0:
break
else:
# 运算相差为step的质数对
for k in range(2, i + step):
if (i + step) % k == 0:
break
else:
print(i, i + step)
prime_number(2, 100, 6)
这里我们会发现我们使用函数来编写代码并没有实现函数的目的也就是提高代码的使用和重复编写
只是利用了代码的灵活性
下面我们来简化一个这个代码
代码如下(示例):
# 定义一个函数判断这个数字是否为质数
def is_prime(n):
"""
判断一个数是不是质数
:param n: 形参 数字
:return: 返回True或者Flase
"""
for i in range(2, n):
if n % i == 0:
return False
else:
return True
def prime_num(start, stop, step):
"""
判断质数对
:param start:开始
:param stop: 结束
:param step: 步长
:return: 返回一个元组 里面为相差为步长的质数对
"""
retult = []
for i in range(start, stop - 1 - step):
if is_prime(i) and is_prime(i + 6):
retult.append((i, i + 6))
return retult
print(prime_num(2, 1000, 6))
我们先是定义一个函数来判断一个数是否为质数
在第二次定义函数的时候我们把第一次定义的函数来调用
判断质数对
最后使用一个元组来接收所返回的值
代码如下(示例):
def max_num(first, second):
"""
这是一个比较大小的函数
:param first: 第一个形参
:param second: 第二个形参
:return: 结果返回比较后的最大值
"""
max_value = first if first > second else second
return max_value
# r = max_num(13, 43)
# print(r)
print(max_num(13,45))
这里我们使用 max_num这个变量来接收返回值
循环的作用域
不推荐在循环外部使用循环内部定义的变量
代码如下(示例):
for i in range(10):
print(i)
print(i)
虽然这里不会报错,但是不推荐使用
函数标量的作用域
函数内部定义的变量在函数外部是不可以直接使用的
会报错
代码如下(示例):
def f1(m): # m 就是实参传入的一个变量
i = 10
print(i, m)
f1(12)
# print(i,m) # 在函数外部使用函数里的变量会报错
a = 10
代码如下(示例):
def f1():
# 第一种情况认为a是外部变量可以直接使用
# print(a)
# 二 因为后续有a的赋值 所以就认为a未定义就直接使用
# print(a)
# a = 20
# a不是修改外部变量卫视在内部有一个新的变量a 的赋值为20 函数结束 此变量消失
# a = 20
# print(a)
# 修改外部变量使用glabal
global a
a = 20
print(a)
f1()
print(a)
代码如下(示例):
def f1(a, b, c=100, d=10):
print(a, b, c, d)
f1(1, 2, 3)
f1(1, 2, 3, 4)
代码如下(示例):
def f2(a, b, c, d):
print(a, b, c, d)
f2(b=20, d=23, c=23, a=23)
代码如下(示例):
def f3(a, b, *args):
print(a, b, args)
f3(1, 2, 3, 4, 5, 6, 71, 32, 3, 4, 5, 6)
这里所返回的是一个元组
可以使用关键字参数来赋值
代码如下(示例):
def f1(a, b, c, *args, **kwargs):
print(a, b, c, args, kwargs)
f1(1, 2, 3, 4, 5, 6, 7, 8, f=9, e=12)
使用递归函数求1-100 的和
代码如下(示例):
def f(n):
# 递归出口
if n == 1:
return 1
else:
# 自己调用自己
return n + f(n-1)
r = f(10)
print(r)
使用递归函数求 5的阶乘
代码如下(示例):
def f(n):
# 递归出口
if n == 1:
return 1
else:
# 自己调用自己
return n * f(n-1)
r = f(1500)
print(r)
使用递归函数求斐波那契数列的第n个数
代码如下(示例):
def f(n):
if n == 1 or n == 2:
return 1
else:
return f(n - 1) + f(n - 2)
r = f(int(imput("输入一个数字"))
print(r)