• python课堂整理9---函数1


    函数

    一. 函数就是为了完成某一个特定的功能

    形式参数不占运行空间,只有传入实参后才占,用完立刻释放空间。

    函数一遇到 return 就结束掉了

    函数名() :运行函数,有返回值的话用变量承接

    def test(x):   # x称为形式参数
        #注释函数功能
        x += 1   #代码块
        return x   #返回值
    

    例:

    def test(x):
        y = 2 * x + 1
        return y
    a = test(3)
    print(a)
    

    二、使用函数的好处

    1. 代码的重用

    2. 保持一致性,易维护

    3. 可扩展性

    def logger():
    '日志功能'
    pass
    def index():
    logger() #调用函数使用日志功能
    print('index')
    def home():
    logger() #调用函数使用日志功能
    print('home')

    三、 函数和过程

    过程就是没有返回值的函数

    没有返回值(没有写return),返回None

    返回一个值,返回object

    返回多个值(return 0,1,2,3),返回tuple(0,1,2,3)

    四、函数参数:

    函数定义时也可以不传入形参,但要在函数体中给定值

    def test():
        x = 2
        y = x ** 2
        return y
    a = test()
    print(a)
    

    4.1 位置参数 

    要和形参一一对应,缺一不可,多一也不可

    def test(x, y, z):
        print(x)
        print(y)
        print(z)
    test(1, 2, 3)
    

    4.2 关键字参数

    位置无需固定,缺一不行,多一也不行

    def test(x, y, z):
        print(x)
        print(y)
        print(z)
    test(y = 1, x = 3, z = 2)
    

    若混合使用,位置参数必须在关键字参数的左边

    test(1, y = 2, 3)  #报错
    test(1, 3, z = 2, y = 4)   #报错,y只能传一个值
    test(1, 3, z = 2)   #正确
    

    4.3 默认参数

    def test(x, type = 'dabai'):
        print(x)
        print(type)
    test(1)
    test(1, '唉')  # 传入的实参会覆盖默认参数
    

    五、参数组(非固定长度的参数)  *列表  **字典

    *args 把位置参数处理成列表的形式

    def test(x, *args):
    print(x)
    print(args)
    print(args[0])
    test(1, 2, 3, 4, 5)

    开发的时候,预留一个 *args 用来以后扩展时用,可以先不传入参数,不会报错

    传入列表和字典时,把列表和字典当成一个整体作为了元组的第一个元素

    def test(x, *args):
        print(x)
        print(args)
    test(1, {'name': 'dabai'})
    test(1, [2,3,5,6,7])
    

    如果想把列表中的每一个元素都作为参数传给args  则用 *args

    def test(x, *args):
        print(x)
        print(args)
    test(1, *[2,3,5,6,7])
    

    若是处理多个关键字参数,用 **kwargs

    def test(x, **kwargs):
        print(x)
        print(kwargs)
    test(1, y = 2, z = 3)
    

    混合使用

    def test(x, *args, **kwargs):
        print(x)
        print(args, args[1])
        print(kwargs, kwargs.get('z'))
    test(1, 1, 2, 3, 4, 5, y=2, z=3)
    

    def test(x, *args, **kwargs):
        print(x)
        print(args, args[1])
        print(kwargs, kwargs.get('z'))
    test(1, *[1,2,3,4], **{'z': 1, 'y': 3})
    

    一个奋斗中的产品小白
  • 相关阅读:
    Thread的run方法和start方法
    35. Search Insert Position
    Error:(1, 1) java: 非法字符: 'ufeff'
    final修饰的变量是引用不可变,还是对象不可变
    数组与练习
    java反射机制【转】
    Socket
    面向对象的设计原则和设计模式
    多线程
    为什么有时候修改了css文件,页面的样式却没有改变?
  • 原文地址:https://www.cnblogs.com/dabai123/p/11027965.html
Copyright © 2020-2023  润新知