注:参考骆昊的Python - 100天从新手到大师项目笔记
1. 函数
函数的概念
-
在python中,自变量是函数的参数,因变量是函数的返回值 定义函数:关键字def 这里回忆变量命名规则
-
def那一行的最后面还有一个** : **(冒号别忘了)
如何定义函数(案例)
-
计算组合数
""" 将8个苹果分成四组且每组至少一个苹果有多少种方案,因此该问题还可以进一步等价于 在分隔8个苹果的7个空隙之间插入三个隔板将苹果分成四组有多少种方案, 也就是从7个空隙选出3个空隙放入隔板的组合数,所以答案是C(7,3)=35 输入M和N计算C(M,N) 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)
-
定义函数后
""" """ 输入M和N计算C(M,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))
函数的参数
-
函数的参数和返回值 参数可以没有,但必须有(),允许参数默认值的存在
-
若函数没有return语句,则默认返回None
-
定义函数,若要确定默认值,则直接在定义函数中参数确定一个数值
-
带默认值的参数必须放在不带默认值的参数之后,否则将产生SyntaxError错误(这应该是在定义函数时参数的顺序位置)
-
可变参数:在参数前面加个*
def add(a=0, b=0, c=0): """三个数相加求和""" return a + b + c # 调用add函数,没有传入参数,那么a、b、c都使用默认值0 print(add()) # 0 # 调用add函数,传入一个参数,那么该参数赋值给变量a, 变量b和c使用默认值0 print(add(1)) # 1 # 调用add函数,传入两个参数,1和2分别赋值给变量a和b,变量c使用默认值0 print(add(1, 2)) # 3 # 调用add函数,传入三个参数,分别赋值给a、b、c三个变量 print(add(1, 2, 3)) # 6 # 传递参数时可以不按照设定的顺序进行传递,但是要用“参数名=参数值”的形式 print(add(c=50, a=100, b=200)) # 350 # 用星号表达式来表示args可以接收0个或任意多个参数 def add(*args): total = 0 # 可变参数可以放在for循环中取出每个参数的值 for val in args: total += val return total # 在调用add函数时可以传入0个或任意多个参数 print(add()) print(add(1)) print(add(1, 2)) print(add(1, 2, 3))
标准库中的内置函数
- 熟悉Python语言的标准库中的内置函数,不光是下面这些
2. 模块的使用
Python中每个文件就代表了一个模块(module),在不同模块允许重名
在使用函数时用import关键词导入指定的模块再调用
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!
- 函数别名的创建,使用关键词 as
# 方法一:
import module1 as m1
import module2 as m2
m1.foo() # hello, world!
m2.foo() # goodbye, world!
方法二:
from module1 import foo
foo() # hello, world!
from module2 import foo
foo() # goodbye, world!
# 若需要同时使用两个模块中的foo函数(※)
from module1 import foo as f1
from module2 import foo as f2
f1() # hello, world!
f2() # goodbye, world!