# 从零开始学Python：第八课-函数和模块

``````
"""

Version: 0.1

Author: 骆昊

"""
m = int(input(
'm = '))
n = int(input(
'n = '))

# 计算m的阶乘

fm = 1

for num in range(1, m + 1):

fm *= num

# 计算n的阶乘

fn = 1

for num in range(1, n + 1):

fn *= num

# 计算m-n的阶乘

fm_n = 1

for num in range(1, m - n + 1):

fm_n *= num

# 计算C(M,N)的值

print(fm // fn // fm_n)``````

### 定义函数

``````
""
"

Version: 0.1

Author: 骆昊

"
""

# 定义函数：def是定义函数的关键字、fac是函数名，num是参数（自变量）
def fac(num):

""
"求阶乘"
""
result =
1

for n in
range(
1, num +
1):
result *= n
# 返回num的阶乘（因变量）

return result

m =
int(input(
'm = '))
n =
int(input(
'n = '))
# 当需要计算阶乘的时候不用再写重复代码而是直接调用函数fac
# 调用函数的语法是在函数名后面跟上圆括号并传入参数

print(fac(m)
// fac(n) // fac(m - n))``````

### 参数的默认值

``````
"""

Version: 0.1

Author: 骆昊

"""

from random
import randint

# 定义摇筛子的函数，n表示筛子的个数，默认值为2

def roll_dice(n=2):

"""摇筛子返回总的点数"""

total = 0

for _ in range(n):

total += randint(1, 6)

# 如果没有指定参数，那么n使用默认值2，表示摇两颗筛子

print(roll_dice())

# 传入参数3，变量n被赋值为3，表示摇三颗筛子获得点数

print(roll_dice(3))``````

``````
"""

Version: 0.1

Author: 骆昊

"""

def
(a=
0, b=
0, c=
0):

"""三个数相加求和"""

return a + b + c

# 传递参数时可以不按照设定的顺序进行传递，但是要用“参数名=参数值”的形式

### 可变参数

``````
"""

Version: 0.1

Author: 骆昊

"""

# 用星号表达式来表示args可以接收0个或任意多个参数

total = 0

# 可变参数可以放在for循环中取出每个参数的值

for val in args:

total += val

### 用模块管理函数

``````

def
foo
():
print(
'hello, world!')

def
foo
():
print(
'goodbye, world!')

foo()
# 大家猜猜调用foo函数会输出什么``````

module1.py

``````

def
foo
():
print(
'hello, world!')``````

module2.py

``````

def
foo
():
print(
'goodbye, world!')``````

test.py

``````
import module1
import module2

# 用“模块名.函数名”的方式（完全限定名）调用函数，

module1.foo()    # hello, world!

module2.foo()    # goodbye, world!``````

test.py

``````
import module1
as m1
import module2
as m2

m1.foo()
# hello, world!

m2.foo()    # goodbye, world!``````

test.py

``````
from module1
import foo

foo()    # hello, world!

from module2
import foo

foo()    # goodbye, world!``````

test.py

``````
from module2
import foo
from module1
import foo

foo()
# hello, world!``````

test.py

``````
from module1
import foo
as f1
from module2
import foo
as f2

f1()
# hello, world!

f2()    # goodbye, world!``````

### 标准库中的模块和函数

Python标准库中提供了大量的模块和函数来简化我们的开发工作，我们之前用过的random模块就为我们提供了生成随机数和进行随机抽样的函数；而time模块则提供了和时间操作相关的函数；上面求阶乘的函数在Python标准库中的math模块中已经有了，实际开发中并不需要我们自己编写，而math模块中还包括了计算正弦、余弦、指数、对数等一系列的数学函数。随着我们进一步的学习Python编程知识，我们还会用到更多的模块和函数。

Python标准库中还有一类函数是不需要import就能够直接使用的，我们将其称之为内置函数，这些内置函数都是很有用也是最常用的，下面的表格列出了一部分的内置函数。

### 简单的总结

Python 900集全套视频教程（全家桶）

• 博文量
995
• 访问量
583996