• python函数


    函数

    • 函数就是执行特定任务以完成特定功能的一段代码。

    1.函数的创建

    def 函数名([输入参数]):
    	函数体
    	[return xxx]
    
    • 1
    • 2
    • 3

    2.函数的参数传递

    2.1 位置实参
    • 根据参数对应的位置进行实参传递
    2.2 关键字实参
    • 根据形参名称进行实参传递
    def calc(a, b):  # a,b为形式参数(形参),形参的位置在函数的定义处
        print('a=',a)
        print('b=',b)
        c = a + b
        return c
    
    ans = calc(10, 20) # 10,20为实际参数的值(实参),实参的位置就是函数的调用处
    print(ans)
    
    res = calc(b = 13, a = 15)  # 左侧的变量名为关键字参数
    print(res)
    
    '''
    a= 10
    b= 20
    30
    a= 15
    b= 13
    28
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    2.3 传递的内存分析
    • 在函数调用过程中,进行参数的传递
    • 如果是不可变对象,在函数体的修改不会影响实参的值:arg1的修改为100,不影响n1的值
    • 如果是可变对象,在函数体的修改会影响到实参的值:arg2的修改,append(10),会影响到n2的值
    def fun(arg1, arg2):
        print('arg1', arg1)  # arg1 11
        print('arg2', arg2)  # arg2 [22, 33, 44]
        arg1 = 100
        arg2.append(10)
        print('arg1', arg1)  # arg1 100
        print('arg2', arg2)  # arg2 [22, 33, 44, 10]
    
    n1 = 11
    n2 = [22, 33, 44]
    print('n1', n1)  # n1 11
    print('n2', n2)  # n2 [22, 33, 44]
    fun(n1, n2)
    print('n1', n1)  # n1 11
    print('n2', n2)  # n2 [22, 33, 44, 10]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3.函数的返回值

    • (1)如果函数没有返回值【执行完毕之后,不需要给调用处提供数据处理】,return可以省略不写
    • (2)函数的返回值,如果是1个,直接返回类型
    • (3)函数的返回值,如果是多个,返回的结果为元组
    def fun1():
        print("world")
    fun1()  # world
    
    def fun2():
        return 'hello'
    print(fun2())  # hello
    
    def fun3():
        return 'hello', 'world'
    print(fun3())  # ('hello', 'world')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4.函数的参数定义

    • 函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参
    def fun(a, b = 10):  # b成为默认参数
        print(a, b)
    
    fun(100)  # 100 10
    fun(20, 30)  # 20 30
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 个数可变的位置参数
      • 定义函数时,可能无法事先确定传递的位置实参的个数,使用可变的位置参数
      • 使用*定义个数可变的位置形参
      • 结果为一个元组
    def fun(*args):  # 函数定义时,可变的位置参数
        print(args)
    
    fun(10)  # (10,)
    fun(10,20)  # (10, 20)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 个数可变的关键字形参
      • 定义函数时,可能无法事先确定传递的关键字实参的个数时,使用可变的关键字形参
      • 使用**定义个数可变的关键字形参
      • 结果为一个字典
    def fun(**args):  # 函数定义时,可变的位置参数
        print(args)
    
    fun(a = 10)  # {'a': 10}
    fun(a = 10,b = 20, c = 30)  # {'a': 10, 'b': 20, 'c': 30}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 错误类型
    '''
    def fun1(*args, *a):
        pass
        以上代码,程序会报错,可变的位置参数,只能是1个
    '''
    
    '''
    def fun2(**args, **a):
        pass
        以上代码,程序会报错,个数可变的关键字参数,只能是1个
    '''
    
    def fun3(*args1, **args2):
        pass
    
    '''
    def fun4(**args1, *args2):
        pass
        在一个函数的定义过程中,既有个数可变的关键字形参,也有个数可变的位置形参
        要求:个数可变的位置形参,放在个数可变的关键字形参之前
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    5.函数的参数总结

    序号参数的类型函数的定义函数的调用备注
    1位置参数
    将序列中的每个元素都转换为位置参数使用*
    2关键字实参
    将字典中的每个键值对都转换为关键字实参使用**
    3默认值参数
    4关键字形参使用*
    5个数可变的位置形参使用*
    6个数可变的关键字形参使用**
  • 相关阅读:
    springMVC 导出Excel ,并提供下载(处理日期格式问题)
    《影响力》笔记
    我自己理解的JAVA反射
    iOS 16 SwiftUI 4.0 列表(List)项分隔线变短的原因及解决
    java面试题-微服务面试题
    ip_vs 原理解析 (四)hook 后的开始 NF_INET_LOCAL_OUT
    Windows下Rosetta Commons ,PyRosetta软件安装方法,API在线及离线文档,Zeal工具安装方法
    web安全day03
    Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)
    1824. 最少侧跳次数-动态规划算法实现
  • 原文地址:https://blog.csdn.net/weixin_45865773/article/details/133025637