现在的位置: 首页 > 综合 > 正文

python抽象

2016年12月11日 ⁄ 综合 ⁄ 共 1509字 ⁄ 字号 评论关闭
创建函数

返回斐波那契数列的函数(任一个数是前两数之和的数字序列)

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)

抱歉!评论已关闭.