python的函数参数你了解吗

目录
  • 前言
  • 位置传参
  • 关键字传参
  • 默认参数
  • 不定长参数
  • 混合使用问题
    • 创建时
    • 引用时
  • 总结

前言

python参数类型和参数传递形式多样,相对于其他语言python使用会更加灵活。它传参形式一般分为两种:位置传参,关键字传参。传参形式是相对于实参而言,在函数调用时使用参数类型一般也分为两种:默认参数,不定长参数。参数类型是相对形参而言,在函数创建时定义。

位置传参

位置传参,我们经常使用的一种函数传参形式,它根据实参的位置传递给对应位置的形式参数。在与其他传参形式混合使用时,必须优先输入位置参数。

def func(a, b, c):
    print(a, b, c)

# 位置参数
if __name__ == '__main__':
    func(1, 6, 7)  # 打印结果是1 6 7  位置一一对应
    func(6, 1, 7)  # 打印结果是6 1 7
    # func(6, 1)  # 实参与形参数量必须一致
    # func(6, 1, 7, 9)  # 不能多也不能少

关键字传参

关键字传参,根据形式参数的名字来进行对应的赋值。

def func(a, b, c):
    print(a, b, c)

# 关键字参数
if __name__ == '__main__':
    func(1, b=6, c=7)  # 打印结果是1 6 7
    func(c=3, b=1, a=7)  # 打印结果是7 1 3
    # func(c=2, b=3)  # 不能少赋值
    # func(c=2, b=3,a=6,c=5)  # 不能多赋值
    # func(c=2, b=3,a=5,qq=3) # 也不能无关赋值
    # func(1, b=6, 7)  # 与位置传参混合使用时,必须位置参数在前,而且不能交替使用 

默认参数

默认参数,就是形参会有个默认值,如果有新值传入就使用新值,否则使用默认值。形参使用默认参数时同样需要注意位置,必须写在位置参数后面(其实不能叫位置参数,但是为了理解就把没有赋值的普通形参叫做位置参数),否则会报错。如下方ab必须写在c后面。

# 默认参数必须要写在右侧
def func(a, b=5, c=3):
    print(a, b, c)

# 默认参数
if __name__ == '__main__':
    func(1)  # 打印的结果是 1 5 3
    func(1, 6)  # 打印的结果是 1 6 3
    func(1, 2, 7)  # 打印结果是1 2 7
    func(b=1, a=4)  # 打印结果是4 1 3

不定长参数

不定长参数有两种表现形式。

  • 在形参前面加个*(*args),表示不定长元组形参,可以接收所有通过位置传参进来的实参,将其存入元组里面。
  • 在形参前面加两个*(**kwargs),表示不定长字典形参,可以接收所有通过关键字传参进来的实参,将其存入字典里面。
# 不定长参数
def func(*args, **kwargs):
    print(args)
    print(kwargs)

if __name__ == '__main__':
    func(1, 4, 8, 7, a=5, h=6, l=15)  # 注意实参形参顺序要对应

结果

(1, 4, 8, 7)  # 元组
{'a': 5, 'h': 6, 'l': 15}  # 字典

混合使用问题

创建时

def func1(a, b=5, *args, c=7, **kwargs):
    print(a, b, args, c, kwargs)

我们先给它们一个称呼方便引用。就称a为普通参数,b为默认参数,*args为可变参数(因为它能接收多个实参),**kwargs为可变关键字参数(因为它能接收多个通过关键字传参进来的实参)。

  • 普通参数必须写在最前面(写在其他类型参数前面)
  • 可变关键字参数必须写在最后面(写在其他参数类型后面)
  • 可变参数与可变关键字参数只能出现一次。

引用时

位置传参必须写在关键字参数前面,他们俩不能交替使用。关键字传参什么时候出现合适?出现在可变参数之后,相当于终止条件。

def func1(a, b=5, *args, c=7, **kwargs):
    print(a, b, args, c, kwargs, sep='\n')

if __name__ == '__main__':
    func1(5, 6, 8, 7, 1, 5, 6, 8, c=4, r=2, s=3)

 结果为

5
6
(8, 7, 1, 5, 6, 8)
4
{'r': 2, 's': 3}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • python函数参数,名称空间,以及函数嵌套

    目录 一. 函数参数–动态传参 1.1动态位置接受参数,在参数位置编写*表⽰示接收任意内容 1.2 动态接收关键字参数 1.3无敌传参 * args, * * kwargs 一起使用 1.4 动态参数的另⼀一种传参⽅方式: 二. 命名空间 三. 函数的嵌套 四. 关键字global和nonlocal 一. 函数参数–动态传参 1.1动态位置接受参数,在参数位置编写*表⽰示接收任意内容 注意: 动态参数与位置参数的关系 默认参数和动态参数的关系 小结: 顺序: 位置参数, 动态参数*, 默认值参数

  • Python函数中4种参数的使用教程

    1.必需的参数: 必须参数须以正确的顺序传入函数,调用的数量必须和声明时的一样 def f(name,age): print('I am %s,I am %d'%(name,age)) f('alex',18) f('alvin',16) 输出: I am alex,I am 18 I am alvin,I am 16 2关键字参数: 关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值.使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数

  • Python全栈之文件函数和函数参数

    目录 1. 文件相关函数 2. 函数_函数的参数 2.1 函数 2.2 函数的参数 3. 收集参数 4. 命名关键字_总结 小提示: 5. 小练习 练习问题: 练习答案: 总结 1. 文件相关函数 # ### 刷新缓冲区 """ # 刷新缓冲区 flush # 当文件关闭的时候自动刷新缓冲区 # 当整个程序运行结束的时候自动刷新缓冲区 # 当缓冲区写满了 会自动刷新缓冲区 # 手动刷新缓冲区 """ """ fp =

  • 关于Python函数参数的进阶用法

    目录 1.关键字参数和位置参数 (1)关键字参数 (2)位置参数 2.接受任意数量的参数 (1)接受任意数量的位置参数 (2)接受任意数量的关键字参数 (3)同时接受任意数量的位置参数和关键字参数 3.keyword-only参数 3.可选参数(带默认值的参数) 1.关键字参数和位置参数 关键字参数(positional argument)和位置参数(keyword argument) Python函数的参数根据函数 在调用时 (注意,不是函数定义时)传参的形式分为关键字参数和位置参数. (1)

  • 详解Python函数中的几种参数

    目录 1.必需的参数: 2关键字参数: 3.缺省参数(默认参数): 4.不定长参数 5.高阶函数 总结 1.必需的参数: 必须参数须以正确的顺序传入函数,调用的数量必须和声明时的一样 def f(name,age): print('I am %s,I am %d'%(name,age)) f('alex',18) f('alvin',16) 输出: I am alex,I am 18 I am alvin,I am 16 2关键字参数: 关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定

  • 深入了解python的函数参数

    目录 位置参数 默认参数 关键字参数 多值参数: 总结 位置参数 这是一个求等差数列和的函数,使用必需要传入一个参数n,这就是位置参数 def sum(n): sum=0 i=1 while i<=n: sum+=i i+=1 return sum result=sum(100) print(result) 默认参数 默认参数就是,我在函数中已经将一个参数提前设置好了值,如果你没有传入这个参数的值,就会用我事先设置好的值,如果你传入了就用你的 我这里定义了一个求x的y次方的方法 def powe

  • python下函数参数的传递(参数带星号的说明)

    函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要有四种方式: 1.F(arg1,arg2,...) 这 是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等的 值(实际参数),而且顺序必须相同,也就是说在这种调用方式中,形参和实参的个数必须一致,而且必须一一对应,也就是说第一个形参对应这第一个实参.例 如

  • Python从函数参数类型引出元组实例分析

    本文实例讲述了Python从函数参数类型引出元组.分享给大家供大家参考,具体如下: 自定义函数:特殊参数 def show(name="jack", *info): print(name) #jack print(info) #(22, '男') show("jack",22,"男") 可以看出22,"男"全部归为了函数的第二个参数*info. 我们可以看到打印这个info参数结果是:小括号包起来的形式. 函数的特殊参数升级

  • Python中函数参数匹配模型详解

    当我们的函数接收参数为任意个,或者不能确定参数个数时,我们,可以利用 * 来定义任意数目的参数,这个函数调用时,其所有不匹配的位置参数会被赋值为元组,我们可以在函数利用循环或索引进行使用 def f(*args): # 直接打印元组参数 print(args) print('-'*20) # 循环打印元组参数 [print(i) for i in args] ... # 传递一个参数 f(1) print('='*20) # 传递5个参数 f(1, 2, 3, 4, 5) 示例结果: (1,)

  • Python中函数参数调用方式分析

    本文实例讲述了Python中函数参数调用方式.分享给大家供大家参考,具体如下: Python中函数的参数是很灵活的,下面分四种情况进行说明. (1) fun(arg1, arg2, ...) 这是最常见的方式,也是和其它语言类似的方式 下面是一个实例: >>> def fun(x, y): return x - y >>> fun(12, -2) 14 (2) fun(arg1, arg2=value2, ...) 这种就是所谓的带默认参数的函数,调用的时候我们可以指定

  • Python 限定函数参数的类型及默认值方式

    python作为一门动态语言,在使用变量之前是不需要进行定义,而是通过动态绑定的方法将变量绑定为某种类型.这样做为我们使用变量时提供了方便,但有时也给我们使用变量时造成了一定的困扰,例如在使用变量时不知道变量的类型,使用函数时不知道该传什么类型·的参数.有时候我们定义函数时也想限定参数类型,本片博文主要就是为了解决定义函数时,如何限定参数的类型. 其实在python中限定函数的类型是很简单的,例如: def foo(text:'str',max:'int > 0' = 100,min:'int

  • Python中函数参数设置及使用的学习笔记

    一.参数和共享引用: In [56]: def changer(a,b): ....: a=2 ....: b[0]='spam' ....: In [57]: X=1 In [59]: L=[1,2] In [60]: changer(X,L) In [61]: X,L Out[61]: (1, ['spam', 2]) 函数参数是赋值得来,在调用时通过变量实现共享对象,函数中对可变对象 参数的在远处修能够影响调用者. 避免可变参数修改: In [67]: X=1 In [68]: a=X I

  • python的函数参数你了解吗

    目录 前言 位置传参 关键字传参 默认参数 不定长参数 混合使用问题 创建时 引用时 总结 前言 python参数类型和参数传递形式多样,相对于其他语言python使用会更加灵活.它传参形式一般分为两种:位置传参,关键字传参.传参形式是相对于实参而言,在函数调用时使用.参数类型一般也分为两种:默认参数,不定长参数.参数类型是相对形参而言,在函数创建时定义. 位置传参 位置传参,我们经常使用的一种函数传参形式,它根据实参的位置传递给对应位置的形式参数.在与其他传参形式混合使用时,必须优先输入位置参

  • Python函数参数操作详解

    本文实例讲述了Python函数参数操作.分享给大家供大家参考,具体如下: 简述 在 Python 中,函数的定义非常简单,满足对应的语法格式要求即可.对于调用者来说,只需关注如何传递正确的参数,以及获取相应的返回值就足够了,无需了解函数的内部实现(除非想学习.跟踪源码). 话虽如此,但对于函数的定义来说,灵活性非常高.除了常规定义的必选参数以外,还支持默认参数.可变参数.以及关键字参数.这样以来,不但能处理复杂的参数,还可以简化调用者的代码. 形参和实参 不止 Python,几乎所有的编程语言都

  • Python中函数的参数类型详解

    目录 1.Python的函数参数的类型 2.Python的必传参数 3.关键字参数 4.默认参数 5.不定长参数 1.Python的函数参数的类型 必传参数:调用函数时必须传入的参数,函数定义时只定义参数名 关键字参数:传入时以函数的参数名值对的方式传入 默认参数:函数定义时为参数默认设置一个值,调用时不传输参数即以默认值处理 不定长参数:以*修饰或者**修饰的参数;*修饰的参数是一个元组(tuple),**修饰的参数必须是字典(dict),通常写作*args或者**args 2.Python的

随机推荐