11. Python脚本学习笔记十一函数与参数

来源:互联网 发布:2007excel数据有效性 编辑:程序博客网 时间:2024/05/16 06:04

11. Python脚本学习笔记十一函数与参数

                  本篇名言:“每当夜深人静的时候望着那灿烂的夜空我会感到那里充满了太多的梦想、告诉自己生命就象一场比赛、不争取就一定会失败!”

 

先来看下python 下实现斐波那契数列

>>> for i in range(8):

...    fibs.append(fibs[-2]+fibs[-1])

...

>>> fibs

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

是不是很简便的就实现了斐波那契算法?

这次我么来看下函数相关。

 

1.  Python函数

函数创建如下:

defhello(name):

    return'hello.'+name  +'!'

 

print hello('friend')

 

然后进行了调用,输出如下:

hello.friend!

通过callable函数来判断是否可以调用。

Callable(hello)

 

1.1      函数记录

函数注释使用#,这个和很多脚本注释一样。

 

def hello(name):

    'hello to name'

    return 'hello.'+ name  +'!'

 

print hello.__doc__

 

这样会输出这个函数用来干什么记录。

__doc__是函数属性。

也可以用help函数如下:

defhello(name):

    'hello to name'

    return'hello.'+name  +'!'

 

printhello.__doc__

print help(hello)

 

 

2.  参数

参数这块和C语言一样涉及到参数传递的方式,是形参还是实参。

传入的是一个副本还是一个地址。如果是副本,那参数的任何修改不会影响外部的值。如果是地址,那么函数内对参数的操作会字节影响到外部的值。

2.1      收集参数

defprint_params(*param):

    print param

上面这个函数实现将参数都打印出来。

*号表示收集所有的位置参数。

如果是关键参数就需要使用**

defprint_params(x,y,z=3,*pospar,**keypar):

    print x,y,z

    print pospar

    print keypar

   

print_params(1,2,3,4,5,6,7,foo=1,bar=2)

输出如下:

1 2 3

(4, 5,6, 7)

{'foo': 1,'bar': 2}

 

2.2      参数练习使用

如下代码:

defstory(**kwds):

    return'Once upon a time,there was a' \

        '%(job)s called %(name)s' % kwds

 

defpower(x,y,*others):

    if others:

        print'Received redundant parameters:',others

    return pow(x, y)

 

definterval(start,stop=None,step=1):

    'Imitates range() for step >0'

    if stopisNone:

        start,stop=0,start

    result=[]

    i=start

    while i < stop:

        result.append(i)

        i += step

    return result

 

 

printstory(job='king',name='Gumby')

printstory(name='sir robin',job='brave knight')

params={'job':'language','name':'Python'}

printstory(**params)

delparams['job']

printstory(job='stroke of genius',**params)

printpower(2,3)

printpower(3,2)

printpower(y=3,x=2)

params=(5,)*2

printpower(*params)

power(3,3,'Hello world')

printinterval(10)

printinterval(1.5)

printinterval(3,12,4)

printpower(*interval(3.7))

PS:这里start,stop=0,start 表示交换赋值

结果如下:

Onceupon a time,there was aking called Gumby

Onceupon a time,there was abrave knight called sir robin

Onceupon a time,there was alanguage called Python

Onceupon a time,there was astroke of genius called Python

8

9

8

3125

Receivedredundant parameters: ('Hello world',)

[0, 1,2, 3, 4, 5, 6, 7, 8, 9]

[0, 1]

[3, 7,11]

Receivedredundant parameters: (2, 3)

0

 

 

 

 

 

 

 

 

 

 

 

 

阅读全文
0 0
原创粉丝点击