Python参数传递小结

237 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天

函数定义与使用

语法

 #定义语法
 def 函数名  ([参数列表]) :
     '''注释'''
     函数体
 #调用语法
 函数名(实参)

定义时注意:

  • 不需定义形参类型 不需指定函数返回值类型
  • 无参数也应保留() 不可省略冒号:
  • 函数体相对def关键字保持缩进 允许嵌套定义

参数相关

写在前面

  • 在“/”左边的参数被视为仅位置参数
  • 如果函数定义中“/”没有指定,则函数中所有参数都不是仅位置参数
  • 仅位置参数的可选值的逻辑与位置-关键字参数的逻辑相同。
  • 一旦使用默认值指定了仅位置参数,下面的仅位置参数和位置-关键字参数也需要具有默认值。
  • 没有默认值的仅位置参数在调用的时候必需给值。

位置参数

按顺序赋值给局部变量 顺序不可变 传参时前面不带"变量名="

关键字参数

按名称赋值给与其同名的局部变量 顺序可变 传参时前面带"变量名="

默认值参数

函数定义时即设置参数的默认值

在参数列表最右侧

可通过显示赋值替换其默认值

关键参数

即关键字参数

按名称赋值给与其同名的局部变量 顺序可变 传参时前面带"变量名="

可变长度参数

作用

接收参数并存储

*parameter 接收多个位置参数并将其存放在一个元组中

**parameter 接收多个关键参数并将其存放在字典中

语法

 def demo (*p):
 print(p)
 demo(1,2,3)
 ​
 def demo2(**p):
 for item in p.items():
     print(item)
 demo (x = 1, y = 2)

参数传递序列解包

原始

赋值运算符左边的变量数目与序列中的元素数目相等,你都可以用这种方法将元素序列解包到另一组变量中

作用

将实参解包,传递给多个单变量形参

实参--元组/数组/字典

语法

 def demo(a,b,c):
 printf(a+b+c)
 ​
 seq = [1,2,3]
 demo(*seq)
 #输出6
 tup = (1,2,3)
 demo(*tup)
 #输出6
 dic = {1:'a', 2:'b', 3:'c'}
 demo(*dic)  #解包字典的键
 #输出6
 demo(*dic.values()) #解包字典的值
 #输出abc
 Set = {1,2,3}
 demo(*Set)
 #输出6
 ​
 #当字典的键为函数形参的名称/与**的可变长度参数对应
 dic = {'a'1, 'b': 2, 'c':3}
 demo(**dic)     #解包字典 类似关键字传参
 ​