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

     

    一、位置参数

    二、默认参数

    三、关键字参数

    四、可变参数

    五、字典参数

    tip:

    # parameter 形参
    # argument 实参

    一、位置参数

    调用函数时根据函数定义的参数位置来传递参数

    1 def test(a, b):  # a和b都是位置参数
    2     print(a)  
    3     print(b)
    4     
    5     
    6 test(1,2)

    二、默认参数

    在定义函数时,已经设有默认值的参数。调用函数时可不传该默认参数的值(注意:无论是函数定义还是调用,所有位置参数都必须出现在默认参数前)

     1 def test(a=1, b=2):  # 此时调用test时,可以不写参数,a默认为1,b默认为2
     2     print(a, end=",")  # 可以发现print()中end= 的默认参数为 换行符
     3     print(b)
     4 
     5 
     6 test()
     7 test(3, 4)
     8 test(5)  # 指定值时,只能从左开始,不能单蹦指定b
     9 
    10 """
    11 执行结果
    12 1,2
    13 3,4
    14 5,2
    15 """
    16 
    17 # def test1(a=1, b):
    18 #     print(a)
    19 #     print(b)
    20 #
    21 #
    22 # test2(3) # 3会给到a,b则没有参数传入。执行会报错:默认参数只能放在位置参数之后。

    三、关键字参数

    函数/方法在调用时,通过“键-值”形式,指定实参赋值的形参变量名,对应的实参称为关键字参数
    即:为指定变量赋值

    1 def test(a=100,b=200):
    2     print(a)
    3     print(b)
    4 
    5 
    6 test(b=1)  # 关键字参数。通过“键-值”形式,指定实参赋值的形参变量名(将1赋给b)

    四、可变参数

    函数/方法,在定义时,一个形参可以接收调用时传入的任意数量的实参,对应的形参称为可变参数

    排列顺序:(位置参数,可变参数,关键字参数)

    可变参数中包裹的是 不定个数的 位置参数

    1 def sum(*args):   # *args 为可变参数,传过来的是个元组,可以接收任意多的值
    2     sums = 0
    3     for num in args:  # 拆包 不用加*了
    4         sums += num
    5     print(sums)  # 15
    6 
    7 
    8 sum(1, 2, 3, 4, 5)

    当前面有位置参数时,可变参数只能捡剩

    1 def sum(a, b, *args): # *args 只能捡剩
    2 
    3     print(a)  # 1
    4     print(b)  # 2
    5     print(args)  # (3, 4, 5) 是个元组哦
    6 
    7 
    8 sum(1, 2, 3, 4, 5)

    可变参数*args 后,放关键字参数

     1 def sum(*args,a, b):  # *args 后可以放关键字参数
     2 
     3     print(a)  # 4
     4     print(b)  # 5
     5     print(args)  # (1, 2, 3)
     6 
     7 
     8 sum(1, 2, 3, a=4, b=5)
     9 
    10 # def sum(a=1, b=2,*args): # 报错,所以 关键字参数必须放在可变参数之后
    11 #
    12 #     print(a)
    13 #     print(b)
    14 #     print(args)
    15 #
    16 # sum(a=4, b=5, 1, 2, 3)

    五、字典参数

    字典参数定义格式
    def 函数名(**形参)
    函数体

    调用:
    函数名(未定义变量名 = 实参1···)

    参数混用时的 顺序
    (位置参数,可变参数,关键字参数,字典参数)

     1 def test(**kwargs):
     2     print(kwargs)   # {'a': 1, 'n': 3}
     3     for key in kwargs:
     4         print(key, end=",")
     5         print(kwargs[key])
     6 
     7 
     8 test(a=1,n=3)
     9 
    10 """
    11 执行结果:
    12 {'a': 1, 'n': 3}
    13 a,1
    14 n,3
    15 """

    字典参数和默认参数一起使用时,默认参数指哪儿打哪儿(好通俗的说法哈哈哈)

     1 def test(m=1, **kwargs):  # m 还是会对到实参里的m=5,指哪儿打哪儿
     2     print(m)
     3     print(kwargs)
     4 
     5 
     6 test(a=1, m=5, n=3)
     7 
     8 """
     9 执行结果
    10 5
    11 {'a': 1, 'n': 3}
    12 """


    函数/方法多层级调用间的关键字参数传递

    范例1:

     1 # 任务 " hello python ni hao " ==》 "HELLO--PYTHON--NI--HAO--"
     2 
     3 def change_str(s, **kwargs):
     4     str1 =s.strip()  # 移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
     5     str2 = str1.upper()
     6     return split_str(str2, **kwargs)
     7 
     8 
     9 def split_str(s,end):
    10     str1 = s.split(" ")  # 从空格处切割字符串(空格被切掉了),并生成列表
    11 
    12     for i in str1:
    13         print(i, end=end)
    14 
    15 
    16 change_str(" hello python ni hao ", end="--")

    范例2:

     1 def test1(a=1,**kwargs):
     2     print(a)
     3     return test2(**kwargs)
     4 
     5 
     6 def test2(b=2):
     7     print(b)
     8 
     9 
    10 test1(a=3,b=4)
    11 
    12 """
    13 执行结果:
    14 3
    15 4
    16 """

    【本文仅用于学习交流】

  • 相关阅读:
    Docker最全教程之MySQL容器化 (二十四)
    Docker最全教程之使用Node.js搭建团队技术文档站(二十三)
    Docker最全教程之使用PHP搭建个人博客站点(二十二)
    构建自己的简单微服务架构(开源)
    使用Jmeter进行http接口测试
    Appium 服务关键字
    Appium入门示例(Java)
    Appium for win7 环境搭建
    android adb常用指令
    Android测试环境搭建(win7)
  • 原文地址:https://www.cnblogs.com/ykit/p/11251204.html
Copyright © 2011-2022 走看看