函数
Built-in Functions
https://docs.python.org/3/library/functions.html
函数定义
位置参数 默认参数
def power(x, n=2): # 默认参数必须指向不变对象
if not isinstance(x, (int, float)):
raise TypeError(‘bad operand type’) # 输出错误类型
s = 1
while n > 0:
n = n-1
s = s*x
return s, n # 可输出多个值
**可变参数 **
计算a2 + b2 + c2 + ……
def calc(*numbers):
sum = 0
for n in numbers: # 当做输入参数为list
sum = sum + n*n
return sum
可变参数的使用
sum = calc(1, 2, 3) # 方法1, 直接输入
nums = [1, 2, 3]
sum = calc(*nums) # 方法2,*nums表示把nums所有元素传入, 自动组装为tuple
关键字参数
允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
def person(name, age, **kw):
if ‘city’ in kw:
pass
if ‘job’ in kw:
pass
print(‘name:’, name, ‘age:’, age, ‘other:’, kw)
person(‘Adam’, 45, gender=’M’, job=’Engineer’)
顺序 必选参数 默认参数 可变参数 *, 命名关键字参数 关键字参数
递归函数
阶乘
def fact(n):
if n=1:
return 1
elif n=0:
return 1
return n * fact(n-1)
尾递归
尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧
def fact(n):
return fact_iter(n, 1)
def fact_iter(num, product):
if num==1:
return product
return fact_iter(num-1, num*product)
汉诺塔