函数的参数

一 形参与实参介绍

函数的参数分为形式参数和实际参数,简称形参和实参:形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。实参即在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的组合在调用有参函数时,实参(值)会赋值给形参(变量名)。在Python中,变量名与值只是单纯的绑定关系,而对于函数来说,这种绑定关系只在函数调用时生效,在调用结束后解除。

位置参数

位置即顺序,位置参数指的是按顺序定义的参数,需要从两个角度去看:

在定义函数时,按照从左到右的顺序依次定义形参,称为位置形参,凡是按照这种形式定义的形参都必须被传值

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

func(1,2,3,4)  #1 2 3 4

在调用函数时,按照从左到右的顺序依次定义实参,称为位置实参,凡是按照这种形式定义的实参会按照从左到右的顺序与形参一一对应

关键字参数

在调用函数时,实参可以是key=value的形式,称为关键字参数,凡是按照这种形式定义的实参,可以完全不按照从左到右的顺序定义,但仍能为指定的形参赋值
 

def func(a, b, c, d):
    print(a, b, c, d)
func(d=4,c=3,b=2,a=1)  # 1 2 3 4

需要注意在调用函数时,实参也可以是按位置或按关键字的混合使用,但必须保证关键字参数在位置参数后面,且不可以对一个形参重复赋值

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

func(1,2,d=4,c=3) # 1 2 3 4

默认参数

在定义函数时,就已经为形参赋值,这类形参称之为默认参数,当函数有多个参数时,需要将值经常改变的参数定义成位置参数,而将值改变较少的参数定义成默认参数。例如编写一个注册学生信息的函数,如果大多数学生的性别都为男,那完全可以将形参gender定义成默认参数 定义时就已经为参数gender赋值,意味着调用时可以不对gender赋值,这降低了函数调用的复杂度

def info(username,age,gender="男"):
    print(username,age,gender)

info("卢开心",18) # 卢开心 18 男
info("卢开心",18,"女") # 卢开心 18 女

需要注意:

  1. 默认参数必须在位置参数之后
  2. 默认参数的值仅在函数定义阶段被赋值一次
m=400
def fuc(a,b=m):
    print(a,b)
m=800
fuc(2)

     3.默认参数的值通常应设为不可变类型

     

def foo(n, arg=[]):
    arg.append(n)
    return arg
print(foo(1)) # [1]
print(foo(2)) # [1, 2]
print(foo(3)) # [1, 2, 3]
def func(n, arg=None):
    if arg is None:
        arg = []
        arg.append(n)
        return arg
print(func(1))
print(func(2))
print(func(3))

可变长度的参数(*与**的用法)

可变长度的位置参数

如果在最后一个形参名前加*号,那么在调用函数时,溢出的位置实参,都会被接收,以元组的形式保存下来赋值给该形参

def func(a, b,*args):
    print(a, b, args)   
func(1,3,4,5,6,7)   #1 3 (4, 5, 6, 7)

如果我们事先生成了一个列表,元祖,集合以及字符串 仍然是可以传值给*args

def func(a, b,*args):
    print(a, b, args)
lic=[8,9,10,11,12]
func(1,3,*lic)   1 3 (8, 9, 10, 11, 12)
def func(a, b,*args):
    print(a, b, args)
lic="helloword"
func(1,3,*lic) #1 3 ('h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'd')

可变长度的关键字参数

如果在最后一个形参名前加**号,那么在调用函数时,溢出的关键字参数,都会被接收,以字典的形式保存下来赋值给该形参

def func(a, b,**kwargs):
    print(a,b,kwargs)
func(1,b=3,c=5,d=8)  #1 3 {'c': 5, 'd': 8}

如果我们事先生成了一个字典,仍然是可以传值给**kwargs的

def func(a, b,**kwargs):
    print(a,b,kwargs)
info={"name":"ljg","age":"16"}
func(1,b=3,c=5,d=8,**info)

 函数的参数的顺序

 位置参数 >  *args > 默认值参数 > **kwargs

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
函数参数是在定义函数时用于接收传递给函数的值或变量的占位符。在Python中,函数参数有以下几种类型: 1. 位置参数(Positional Arguments):按照定义函数时的顺序,依次传递给函数参数。调用函数时,传递的参数值与函数定义时的参数一一对应。 2. 默认参数(Default Arguments):在定义函数时,为参数提供默认值。调用函数时,如果不传递该参数的值,则使用默认值。 3. 关键字参数(Keyword Arguments):调用函数时,通过参数名来指定传递的参数值,不需要按照定义函数时的顺序传递。 4. 可变长度参数(Variable-Length Arguments):可以接受任意数量的参数。在函数定义时使用星号 (*) 来表示,有两种形式: - *args:接受任意数量的位置参数,以元组(tuple)的形式传递给函数。 - **kwargs:接受任意数量的关键字参数,以字典(dictionary)的形式传递给函数。 下面是一个示例,展示了不同类型的函数参数: ```python def greet(name, message="Hello"): print(f"{message}, {name}!") def calculate_sum(*args): total = sum(args) print(f"The sum is: {total}") def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") # 调用函数 greet("Alice") # 使用默认值 greet("Bob", "Hi") # 提供自定义值 calculate_sum(1, 2, 3, 4, 5) print_info(name="Alice", age=25, city="New York") ``` 输出结果为: ``` Hello, Alice! Hi, Bob! The sum is: 15 name: Alice age: 25 city: New York ``` 这是函数参数的基本概念和用法,希望能对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值