zoukankan      html  css  js  c++  java
  • Python函数参数

    Python函数参数:

    注:变量没有类型,有类型的是变量指向的内存空间中的值

    可变类型:列表、集合、字典

    不可变类型:数字、字符串、元组

    可变类型在函数中发生改变时,原变量也会跟着发生变化

    示例程序:

    列表使用 赋值,+=,append,extend,insert 方法均会使列表的值发生改变

    def add_elem(args,string):
        '''将 lst_num 添加到 args 中'''
    
        args.append(string)
        # args += string
        # args.extend(string)
        # args.insert(len(args),string)
    
        return args
    
    lst = [1,2,3,4]
    string = "ABC"
    
    print(add_elem(lst,string))
    # [1, 2, 3, 4, 'A', 'B', 'C']
    print(lst)
    # [1, 2, 3, 4, 'ABC']
    
    
    
    def add_elem(args,string):
        '''将 lst_num 添加到 args 中'''
    
        args[len(args)-1] = string
    
        return args
    
    lst = [1,2,3,4]
    
    string = "ABC"
    
    print(add_elem(lst,string))
    # [1, 2, 3, 'ABC']
    print(lst)
    # [1, 2, 3, 'ABC']

     位置参数:

    实参必须以正确的顺序传入函数,调用时的数量必须与声明时一致

    # 必需参数
    
    def hello(name):
        '''输出欢迎信息'''
        print("hello {0}".format(name))
    
    name = "XiaoMing"
    hello(name)
    # hello XiaoMing
    # hello() 会报错,因为没有传入参数

    关键字参数:

    函数在调用时使用关键字确定传入参数的值(可以不根据参数位置)

    注:关键字即为函数定义时使用的形参名

    对应关键字名进行传递:

    # 关键字参数
    
    def add(num_1,num_2):
        '''将两个数字进行相加'''
        print("num_1:",num_1)
        print("num_2:",num_2)
        print("num_1 + num_2",num_1 + num_2)
    
    add(num_2 = 6,num_1 = 8)
    # num_1: 8
    # num_2: 6
    # num_1 + num_2 14

    默认参数:

    当调用函数时,如果没有传递参数,则会使用默认参数

           如果传递了参数,则默认参数不起作用

    注:程序有时会设置好已经修改好的默认参数,调用只需要传入不是默认参数的参数即可

    # 默认参数
    
    def add(num_1,num_2 = 10):
        '''将两个数字进行相加'''
        print("num_1:",num_1)
        print("num_2:",num_2)
        print("num_1 + num_2",num_1 + num_2)
    
    # add(15)
    # # num_1: 15
    # # num_2: 10
    # # num_1 + num_2 25
    
    # 不传入 num_2 的值,使用 num_2 的默认参数
    add(num_1 = 15)
    # num_1: 15
    # num_2: 10
    # num_1 + num_2 25
    
    # 传入 num_2 的值,不使用 num_2 的默认参数
    add(num_2 = 6,num_1 = 8)
    # num_1: 8
    # num_2: 6
    # num_1 + num_2 14

    不定长参数:

    当需要的参数不确定,又还想使用参数进行函数内的运算时,可以考虑不定长参数

    不定长参数:

    * 变量

      1.形参使用 *变量名: 实参通常为传入的多余变量(可以是字典变量)、 列表 或 元组 等

          如果实参使用了 *列表,*元组,则函数中接收的是列表或元组中的所有的元素值

      2.形参使用 **变量名:通常为 **字典变量 或 字典元素(键值对) 等 

    示例:

    # 不定长参数
    
    def print_info(*vartuple):
    
        print(vartuple)
    
    # 调用 printinfo 函数
    print_info(70, 60, 50)
    # (70, 60, 50)

    当不定长参数前面存在位置参数时:

    传入参数的值先传递给位置参数,剩余的传递给不定长参数

    注:如果没有剩余的实参,则不定长参数没有值

    不使用位置参数:

    可以接收所有数据类型数据,除了 a = 2 这种键值对,**字典变量等

    注:如果实参中使用了 *列表,*元组,则函数接收的为列表或元组的所有元素值

    # 不定长参数
    # 不使用位置参数
    def print_info(*vartuple):
    
        # print(type(vartuple))
    
        print(vartuple)
    
        # for i in vartuple:
        #     print(i,end =" ")
        # print(type(vartuple[5]))
        #
        # print(vartuple[5])# 不定长参数
    # 不使用位置参数
    def print_info(*vartuple):
    
        # print(type(vartuple))
    
        print(vartuple)
    
        # for i in vartuple:
        #     print(i,end =" ")
        # print(type(vartuple[5]))
        #
        # print(vartuple[5])
    
    # 调用 printinfo 函数
    # print_info(70,12.3,5+9j,True,"hello",[1,2,3],(7,8,9),{'a':123})
    # # (70, 12.3, (5+9j), True, 'hello', [1, 2, 3], (7, 8, 9), {'a': 123})
    # print_info([1,2,3])
    # # ([1, 2, 3],)
    # print_info(*[1,2,3],'a')
    # # <class 'tuple'>
    # # (1, 2, 3, 'a')
    # print_info((1,2,3))
    # # ((1, 2, 3),)
    # print_info(*(1,2,3),'a')
    # # (1, 2, 3, 'a')
    
    # 调用 printinfo 函数
    # print_info(70,12.3,5+9j,True,"hello",[1,2,3],(7,8,9),{'a':123})
    # # (70, 12.3, (5+9j), True, 'hello', [1, 2, 3], (7, 8, 9), {'a': 123})
    # print_info([1,2,3])
    # # ([1, 2, 3],)
    # print_info(*[1,2,3],'a')
    # # <class 'tuple'>
    # # (1, 2, 3, 'a')
    # print_info((1,2,3))
    # # ((1, 2, 3),)
    # print_info(*(1,2,3),'a')
    # # (1, 2, 3, 'a')

    使用位置参数:

    # 使用位置参数
    def print_info(num,*vartuple):
    
        print(num)
        print(vartuple)
    
    # 调用 printinfo 函数
    print_info(70, 60, 50)
    # 70
    # (60, 50)

    ** 变量名:

      形参使用 **变量名:实参可以使用 a = 2、**字典元素

    # ** 变量名:
    #   形参使用 **变量名:实参可以使用 a = 2、**字典元素
    def print_info(**attrs):
    
        print(attrs)
        print(type(attrs))
    #     <class 'dict'>
    dic = {'a':123}
    print_info(**dic,b = 4,c = 6)
    # {'a': 123, 'b': 4, 'c': 6}

    在形参中使用 * 和 ** 参数接收:

    def print_info(num,*vartuple,**attrs):
    
        print(num)
        print(vartuple)
        print(attrs)
    
    # 调用 printinfo 函数
    
    print_info(70, 60, 50,{'a':123},b = 456,c = 789)
    # 70
    # (60, 50, {'a': 123})
    # {'b': 456, 'c': 789}

    2020-02-11

  • 相关阅读:
    springboot maven打包插件
    maven打包指定main入口插件
    团队开发环境一致性性要求
    springboot 在idea中实现热部署
    IDEA 2018.1可用License服务(持续更新)
    IDEA打jar包
    3月18号
    3月17号
    3月16号
    3月13号
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12295062.html
Copyright © 2011-2022 走看看