python基础之函数

python基础之函数

python函数定义,用def为关键字定义函数,冒号开始使用缩进来区分函数体,如:
def func_add(num1, num2):
    sum = num1 + num2
    return sum
sum = func_addr(12, 34)
print(sum)

函数返回值,若多个值返回,则组成元组返回,但是元组可以省略括号,其形式如下:
def func_return_sum(num1, num2, num3):
    sum1 = num1 + num2
    sum2 = num2 + num3
    sum3 = num1 + num3
    return (sum1, sum2, sum3)
sum = func_return_sum(1, 2, 3)
print(sum)   ---- (3, 5, 4)
元组接收,也可以直接赋值给不同变量,不过要注意一点,用多个变量接收元组里面的值时,变量必须和元组里面的数量保持一致,不然会包ValueError,如下:
sum1, sum2, sum3 = func_return_sum(1, 2, 3)
print(sum1, sum2, sum3)  
sum1 = 3
sum2 = 5
sum3 = 4
注意,元组返回值时,也常常省略括号,写成return sum1, sum2, sum3。这样看起来更加简洁,不过实质还是元组。

函数参数传递,默认参数说明:
def printInfo(age, name, sex):
    print("age = %d, name = %s, sex = %s" %(age, namem sex))
printInfo(12, 'wuli', 'boy')
若此时,要打印全部男孩的信息,是否可以不用输入sex呢,可以的,我们可以设置默认参数,把sex默认输入为男孩,此时就不用在输入,如:
def printInfo(age, name, sex="boy"):
    print("age = %d, name = %s, sex = %s" %(age, namem sex))
printInfo(12, 'wuli')  等价于  printInfo(12, 'wuli', 'boy')
此时,有多个叫张三的人,每次都默认打印自己的信息,在把名字改成默认值,如:
def printInfo(age, name="张三", sex="boy")
    print("age = %d, name = %s, sex = %s" %(age, namem sex))
如果,有个张三的boy,他此时欢喜,只需输入:
printInfo(12)  等价于 printInfo(12, "张三", "boy")
但是,有个张三的girl,她此时也欢喜的输入:
printInfo(12, 'girl'),结果显示不那么欢喜,变成了name='girl', sex='girl',这个是怎么回事,原来,你传递参数是按照位置来传递的,此时只传递了两个参数,即变成:printInfo(12, 'girl', 'girl'),所以默认参数也是按照位置传递的,你添加参数,系统会给你默认添加。
此时,你就是不想添加name,可以写成:printInfo(12, sex="girl")

可变参数传递:
如果一个函数要传递2个变量,我们可以定义两个变量,但是,如果要定义10个变量参数,名字也没有意义,是否有更加简单的方法呢?
可变列表参数:
def printMul(age, name, *args):
    print(age, name)
    for i in args:
        print(i)
此时,args可以传递一个列表,元组。如:
b = [12, 34, 45]
printMul(12, 'lihua', *b) 等价于 printMul(12, 'lihua', 12, 34, 45)
可变字典参数:
def printDict(age, name, **kws):
    print(age, name)
    for key in kws:
        print(kws[key])
此时,kws传递字典参数
a = {'sex': 'boy', 'city': 'Beijin'}
printDict(32, 'ligu', **a) 等价于 printDict(32, 'ligu', city='Beijin', sex='boy')

最后,在说下默认参数传递,如下:
def printList(L=[]):
    L.append("One")
    print(L)
此时连续调用函数,打印对应如下:
printList()   ---  ['One']
printList()   ---  ['One', 'One']
printList()   ---  ['One', 'One', 'One']
此时,是不是感觉三观颠倒了,不是该都输出[‘One’],怎么后面调用输出多了。因为python在定义函数时,若有默认值,会先生成一个对象,并指向它,若对应是个可变变量,其默认调用时会不断修改其值。
所以,默认参数我们最好不要用可变参数,一般用不可变参数。如:
def printList(L=None):
    if L is None:
        L = ['One']
    print(L)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值