1.函数定义
def functionname():
代码块
def functionname(num1,num2):
result = num1+num2
print(result)
2.打印函数文档
functionname.__doc__//打印函数文档
help(functionname)//打印函数文档
3.关键字参数
调用的时候用functionname(num =200,num1= 100),这样就不会因为位置变了,打印出错
4.收集参数
def test(*params):
print('参数的长度是:',len(params));
print('第二个参数是:',params[1]);
5.返回时可以返回一个元组
def functionname(num1,num2):
return 1,‘火星人’,3.14
6.lamdb表达式:
def ds(x):
return 2*x+1//原函数
g = lamdb x : 2 * x + 1
g(5)
f = lamdb x,y : x+y
lamdb表达式优点:Python写一些脚本时,可以省下定义函数过程,节约命名问题,简化代码的可读性
6.filter:把任何非True的过滤掉
例如:
>>> def odd(x):
return x % 2
>>> temp = range(10)
>>> temp
range(0, 10)
>>> show = filter(odd,tenp)
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
show = filter(odd,tenp)
NameError: name 'tenp' is not defined
>>> show =filter(odd,temp)
>>> list(show)
[1, 3, 5, 7, 9]
>>> list(filter(lambda x :x % 2,range(10)))
[1, 3, 5, 7, 9]
>>>
7.map:两个参数,第一个是函数,第二个是个序列,把序列的每一个元素作为函数的参数运算加工,返回所有加工后的新序列。
8.递归(阶乘和斐波那契数列的实现)
>>> list(map(lambda x :x % 2,range(10)))
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
>>> list(map(lambda x :x * 2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>>
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
number = int(input('请输入一个正整数:'))
result =factorial(number)
print("%d 的阶乘是:%d" % (number,result))
def fab(n):
n1 = 1
n2 = 1
n3 = 1
if n<1:
print('输入有误')
return -1
while(n-2) > 0:
n3 = n2 + n1
n1 = n2
n2 = n3
n -= 1
return n3
result = fab(20)
if result != -1:
print('总共有%d对小兔子诞生' % result)
递归版本:
def fab(n):
n1 = 1
n2 = 1
n3 = 1
if n<1:
print('输入有误')
return -1
if n == 1 or n == 2:
return 1
else:
return fab(n-1)+fab(n-2)
result = fab(20)
if result != -1:
print('总共有%d对小兔子诞生' % result)
分治思想:把复杂的问题不断的分解