又是好几天没来认真学

今天看函数的参数

位置参数:

def power( x ):

    return x * x

如果要计算x的N次方,

def power( ):

    s = 1

    while n> 0:

        n = n -1

        s = s * x

    return s


默认参数:

即默认上述参数中N = 2

def power ( x, n=2):

    s =1

    while n > 0:

        n = n - 1

        s = s * x

    return s


调用power(5)时相当于输入power(5,2)

而 power(5,3)中的3必须输入

默认参数的问题:

def add_end(L =[] ):

    L.append('END')

    return L

正常调用时:add_end([1,2,3])-------->[1, 2, 3, 'END' ]

使用默认参数进行调用:add_end( )----->['END']

继续调用:add_end( )-------->['END','END']

add_end( )-------> ['END',  'END', 'END']

原因是:在定义函数时 默认参数L 的值就被计算出来,即【 】,因为默认参数L 也是一个变量,

指向对象[ ],每次调用函数,返回了L 的值已经是’END‘,而append方法,所以,每次L都在增加

要修改这个问题,就需要使用None这个不变对象

def add_end(L = None):

    if L is None:

        L = [ ]

    L.append('END']

    return L

这个好像还是回返回L的值?,那就是append会改变L 本身这个对象?有点不太好理解


可变参数:

就是指参数的个数可以变,不是固定的,

计算a^2+b^2+c^2+.....


def calc(numbers):

    sum = 0

    for n in numbers:

        sum = sum + n*n

    return sum 


在参数前加 * 将其变为可变参数:

def calc (*numbers):

    sum =0 

    for n in numbers:

        sum = sum + n * n

    return sum

思考:当a^2不是2次方而是 n 次方呢?


关键字参数:

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

关键字参数有什么用?它可以扩展函数的功能。比如,在person函数里,我们保证能接收到nameage这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值