Python_9

  1. 1.
#简单的函数
#个人版
def fibs1(num):
    fib=[0,1]
    for i in range(2,num):
        fib.append(fib[i-1]+fib[i-2])
    return fib
#课本版
def fibs2(num):
    fib=[0,1]
    for i in range(num-2):
        fib.append(fib[-1]+fib[-2])
    return fib
print fibs1(10)
print fibs2(10)

课本版的更有Python的风格,个人版的则感觉像是C的风格。

输出:

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

  1. 2.
def change_word(name):
    name='Bob'

my_name='Mary'
print my_name
change_word(my_name)
print my_name

当变量name改变时,my_name不变。函数参数储存在局部作用域内。
输出:

Mary
Mary

def change(n):
    n[0]='Bob'

names=['Mary','Jack']
print names

change(names)

print names

当两个变量引用同一个列表的时候,它们用的就是一个列表。如果想避免这个问题,就要再创建一个副本。

输出:

[‘Mary’, ‘Jack’]
[‘Bob’, ‘Jack’]


  1. 这里是一个储存名字并能用名字的前中后三部分查找联系人的程序。
def init(data):
    'init the data_structure'
    data['first']={}
    data['middle']={}
    data['last']={}

def lookup(data,label,name):
    'look for the full_name'
    return data[label].get(name)

def store(data,full_name):
    'stroe new message'
    names=full_name.split()
    if len(names)==2:
        names.insert(1,' ')
    labels='first','middle','last'
    for label,name in zip(labels,names):
        people=lookup(data,label,name)
        if people:
            people.append(full_name)
        else:
            data[label][name]=[full_name]

My_names={}
init(My_names)

在store函数中,首先将输入进来的全名进行分片,如果只有两部分,则在中间加一个部分,为空格;
然后,获得属于给定标签和名字的列表,如果full_name可以放,就放在原列表中,否则创建一个新列表存储。

测试结果:

>>> My_names
{'middle': {}, 'last': {}, 'first': {}}
>>> store(My_names,'Ma Ag ss')
>>> store(My_names,'Ma Hood')
>>> lookup(My_names,'first','Ma')
['Ma Ag ss', 'Ma Hood']
>>> store(My_names,'Alice Wang')
>>> lookup(My_names,'middle',' ')
['Ma Hood', 'Alice Wang']
  1. 4.
#通常情况无法改变参数
def iadd(n):
    return (n+1,n+2)

c=5
(a,b)=iadd(c)
print c,a,b

#如果你非要改变参数
def inc(x):
    x[0]=x[0]+1
foo=[10]
print foo
inc(foo)
print foo

无法直接改变参数,只能从函数中返回值;如果非要改变,参考第二种写法。

  1. 5.
def hello_4(name='Bob',greeting='Hello',punctuation='!'):
    print '%s, %s%s' %(greeting,name,punctuation)

hello_4()
hello_4('Mary')
hello_4(greeting='hi')
hello_4('Mary','hi')
hello_4('Mary',punctuation='...')

这里使用了关键字参数位置参数两种方法,不过不难,看例子很容易就可以明白。

输出:

Hello, Bob!
Hello, Mary!
hi, Bob!
hi, Mary!
Hello, Mary…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值