Github: GitHub -https://github.com/jackfrued/Python-100-Days
(骆昊)
Gitclone: https://gitee.com/viitii/Python-100-Days
2021.10.23
Day05.函数和模块的使用
1.定义函数
C
M
N
=
M
!
N
!
(
M
−
N
)
!
,
(M=7, N=3)
C_M^N =frac{M!}{N!(M-N)!}, text{(M=7, N=3)}
CMN=N!(M−N)!M!,(M=7, N=3)
def factorial(num):
"""求阶乘"""
result = 1
for n in range(1, num + 1):
result *= n
return result
m = int(input('m = '))
n = int(input('n = '))
# 当需要计算阶乘的时候不用再写循环求阶乘而是直接调用已经定义好的函数
print(factorial(m) // factorial(n) // factorial(m - n))
def + 函数名 (放置传递给函数的参数即自变量)——初始化因变量——自变量对因变量的影响——return回到因变量
程序中函数的参数就相当于是数学上说的函数的自变量(标识符是形参,值是实参),而函数执行完成后我们可以通过return关键字来返回一个值,这相当于数学上说的函数的因变量(return在def后一格)。
2.函数的参数
函数是绝大多数编程语言中都支持的一个代码的"构建块"。在Python中,函数的参数可以有默认值,也支持使用可变参数,所以Python并不需要像其他语言一样支持函数的重载(在相同的声明域中的函数名相同的,而参数表不同的,即通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数),因为我们在定义一个函数的时候可以让它有多种不同的使用方式,下面是两个小例子。
from random import randint
def roll_dice(n=2):#如果不输入值的话默认n=2,即摇两次骰子
"""摇色子"""
total = 0
for _ in range(n):
total += randint(1, 6)
return total
# 如果没有指定参数那么使用默认值摇两颗色子
print(roll_dice())
# 摇三颗色子
print(roll_dice(3))
注意:
(1)函数后面记得打冒号。
(2)定义函数中的 自变量 位置中若输入的数字为默认值,这也就意味着如果在调用函数的时候如果没有传入对应参数的值时将使用该参数的默认值。
(3)for _ in range(n),中_表示以下式子循环n次,for…in中没有需要参加循环的变量。
def add(a=0, b=0, c=0):
"""三个数相加"""
return a + b + c
print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3))
# 传递参数时可以不按照设定的顺序进行传递
print(add(c=50, a=100, b=200))
具体有多少个参数是由调用者来决定,我们作为函数的设计者对这一点是一无所知的,因此在不确定参数个数的时候,我们可以使用可变参数,用*在前表示,可以不限制参数的个数与值。
# 在参数名前面的*表示args是一个可变参数
def add(*args):
total = 0
for val in args:
total += val
return total
# 在调用add函数时可以传入0个或多个参数
print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3))
print(add(1, 3, 5, 7, 9))
3.用模块管理函数
最简单的场景就是在同一个.py文件中定义了两个同名函数,由于Python没有函数重载的概念,那么后面的定义会覆盖之前的定义,也就意味着两个函数同名函数实际上只有一个是存在的。
多人编辑同一个项目,会出现同名情况,此时只要:Python中每个文件****就代表了一个模块(module),我们在不同的模块中可以有同名的函数,在使用函数的时候我们通过import关键字导入指定的模块就可以区分到底要使用的是哪个模块中的同名函数即可。



