创建函数
返回斐波那契数列的函数(任一个数是前两数之和的数字序列)
def fib(s)
result= [0,1]
fori in range(num-2) #循环N-2次
result.append(result[-2]+ result[-1]) #每次循环把(result[-2]+result[-1]的值加入result数组)
return result
改变参数
在函数内为参数赋予新值不会改变外部任何变量的值:
>>>def try_to_change(n):
n=’Mr. Gumby’
>>>name =’Mrs. Entity’
>>>try_to_change(name)
>>>name
‘Mrs.Entity
当2个变量引用同一个列表时,值则可以改变
def hello(greeting,name):
print ‘%s , %s!’ %(greeting,name)
>>>hello(‘Hello’,’world’)
Hello,world
关键字参数和默认参数
>>>def change(n):
n[0]=’Mr.Gumb’
>>>name=[‘Mrs.Entity’ ,’Mrs Thing’]
>>>change(name)
>>>name
[‘Mr.Gumb’ , ‘Mrs Thing’]
若调用函数时,提供参数的名字,叫做关键字参数(明确每个参数的作用)
>>>hello(greeting=’Hello’ , name=’world’)
Hello,world
在函数定义的时候也可以提供默认参数
def hello1(greeting=’Hello’,name=’world’)
print ‘%s,%s!’ %(greeting,name)
当函数有默认参数时,调用时可以不提供参数,也可以提供单个或两个参数。
收集参数
在参数前加星号将所有值放在一个元组。
def print_params(*params):
printparams
>>>print_params(1,2,3)
(1,2,3)
可联合普通参数使用
def print_params_2(title,*params):
printtitle
printparams
>>>print_params_2(‘Parms:’, 1,2,3)
处理关键字的收集操作,需在参数前加**,收集的所有数值放入字典中。
def print_params_4(x,y,z=3,*pospar,**keypar):
printx,y,z
printpospar
printkeypar
>>>print_params_4(1,2,3,5,6,7,foo=1,bar=2)
1 2 3
(5,6,7)
{‘foo’:1 , ‘bar’:2}
反转过程,调用参数
def add(x,y):return x+y
params=(1,2)
>>>add(*params) #调用函数时,使用*传递元组
3
def hello_3(greeting=’Hello’,name=’world’):
print ‘%s,%s!’ %(greeting,name)
>>>params={‘name’: ‘ Sir Robin’ , ‘greeting’:‘Well met’}
>>>hello_3(**params) #调用函数时使用**传递字典
Well met . Sir Robin
递归
实现n的阶乘
循环实现:
def factorial(n):
result=n
for i in range(1,n)
result*=i
returnresult
伪代码:一、1的阶乘是1;
二、大于1的数n的阶乘是n乘n-1 的阶乘
def factorial(n):
ifn==1:
return1
else:
returnn*factorial(n-1)