python-函数

时间:2019-08-04 21:29:55   收藏:0   阅读:90

函数的意义

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()。自己也可以创建函数,这被叫做用户自定义函数。

函数的定义:

函数的调用:
函数的调用就是函数加上():fun()

函数的返回值

函数的返回值:分别是没有返回值、返回一个值、返回多个值,也关键字return [返回对象]

没有返回值

1.
def func():  # 函数的定义
    s = "abc"
    for i in s:
        print(i * 2)  # 打印
ret = func()
print(ret)  # None  没有返回值则为None

2.
def func():  # 函数的定义
    s = "abc"
    for i in s:
        print(i * 2)  # 打印

    return    # 加上一个return 没有加上任何对象

ret = func()

print(ret)  # 返回的还是None

当函数中遇见return 则就结束函数体

def test():
    print("aaa")  
    return   # 程序执行到这里,就结束,后面的代码将不执行
    print("bbb")  

test()  # aaa

一个返回值

def test():
    b = 20
    c = 30
    a,b= b,c

    return a  # 返回参数a
t = test()
print(t)  # 20

多个返回值

返回多个值是也元组的形式进行返回

def test():
    b = 20
    c = 30
    a, b = b, c

    return a, b, c


t = test()
print(t)  # (20, 30, 30)

1.遇到return,此函数结束,return后面的东西将不会在执行
2.return 返回值

 关于返回值:

 如果return什么都不写或者干脆就没写return,返回的结果就是None

 如果return后面写了一个值,返回给调用者这个值

 如果return后面写了多个结果,,返回给调用者一个tuple(元祖),调用者可以直接使用解构获取多个变量

函数的参数

在函数调用的时候具体指定的值,就是参数:

def 函数(参数):
    函数体

测试:

def test(x):
    print("传递的参数是{}".format(x))

test(12)  # 传递的参数是12

参数

参数可以分为:

参数的分类

实参的角度

位置参数
def max_(x, y):
    return x if x > y else y


ret = max_(12, 23)  # 按照位置进行传参数
print(ret)  # 23
关键字参数
def max_(x, y):
    return x if x > y else y


ret = max_(x=12, y=23)  # 关键字进行传递参数
print(ret)  # 23
混合参数
def max_(x, y):
    return x if x > y else y


ret = max_(12, y=23)  # 位置参数和关键字参数混合在一起使用
print(ret)  # 23

注意:位置参数必须在关键字参数的前面,对于一个形参只能赋值一次

形参的角度

1.按照位置传值:位置参数。
def max_(x, y):
    return x if x > y else y


ret = max_(12, 23)  
print(ret)  # 23

如果不传递参数
def max_(x, y):
    return x if x > y else y


ret = max_() # TypeError: max_() missing 2 required positional arguments: 'x' and 'y'
print(ret
2.将变化比较小的值设置成默认数值:默认参数。
def max_(x, y = 20):  # y = 20 默认参数
    return x if x > y else y


ret = max_(10)
print(ret)  # 20
ret1 = max_(10, 30)
print(ret1)  # 30

默认参数如果是一个可变的数据类型
def append_(l, li=[]):

    li.append(l)
    print(li)

append_(2)
append_(3)
append_(4)
append_("abcd")
append_([45,45])  # [2, 3, 4, 'abcd', [45, 45]]

3.可接收所有的位置参数与关键字参数:动态参数。
def test(*args, **kwargs):
    print(args)
    print(kwargs)


test(1,2,3,4,"abdas", False, True, (78, "abc"), name ="Yang", age = 78)  # 
# (1, 2, 3, 4, 'abdas', False, True, (78, 'abc'))
# {'name': 'Yang', 'age': 78}

关于*args和**kwargs中打散和聚合的问题

def test1(a, b, d=0, *args, c=1, **kwargs):  # 将数据放在*args之前,关键字参数会被替换
    print(a, b, c, args, kwargs, d)   # 将数据放在**kwargs之前,关键字参数是默认参数
    # 1 2 1 (5, 6) {'r': 2, 'y': 78} 3
    print(*args)  # 元组打散  5 6
    print(*kwargs)  # 打散 返回key  r y
test1(1, 2, 3, 5, 6, r=2, y=78)
********************************************************************
dic = {"a": "b"}

def test(**kwargs):
    print(kwargs)  # {"a": "b"}
    print(*kwargs)  # "a"

test(**dic)  # a=b

技术分享图片

li = [1, 3, 2]
def test(*args):  #
    print(args)  # args:(1, 3, 2)
    print(*args)  # args:1 3 2

test(*li)  # 1 3 2

技术分享图片

原文:https://www.cnblogs.com/yangchangjie150330/p/10523896.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!