首页 > 编程语言 > 详细

python的函数参数

时间:2020-06-26 22:44:31      阅读:62      评论:0      收藏:0      [点我收藏+]

在声明函数的时候,一般会根据函数所要实现的功能来决定函数是否需要参数。在多数情况下,我们声明的函数都会使用到参数。

函数的参数可分为两种:形参(形式参数)、实参(实际参数)

形式参数:定义在函数声明中的参数。

实际参数:在使用函数的时候实际传给函数的参数。

1 # 例如
2 def func(param1, param2):    # 这里的参数为形式参数
3     print("参数1", param1)
4     print("参数2", param2)
5 
6 func("name", "age")    # 这里的参数为实际参数

参数的类型

  在C/C++、JAVA等语言中,声明参数的时候都要规定参数的类型是什么,并且在传参的过程中,也必须根据相应的类型来传。但是,在python中,并不需要这么做,因为python是一门弱类型的语言,它对于类型的要求远远没有上述的语言强,所以在编程的时候,不需把太多心思花在类型对应上。

  在声明参数的时候,没有指明参数的类型,所以在调用函数时,可以传任意的类型,如int、str、list、tuple、dict、函数类型等。

 1 def func(param):
 2     print(type(param))
 3 
 4 def func2():
 5     pass
 6 
 7 func(12)    # 传整数类型
 8 func("hello world")    # 传字符串类型
 9 func([1, 2])    # 传一个列表
10 func({"name": "tom"})    # 传一个字典
11 func((a, b))    # 传一个元组
12 func(func2)    # 传一个函数
13 
14 # --------------运行结果-----------------
15 # <class ‘int‘>
16 # <class ‘str‘>
17 # <class ‘list‘>
18 # <class ‘dict‘>
19 # <class ‘tuple‘>
20 # <class ‘function‘>

参数的种类

在函数中,实参必须依据形参而存在。要实现功能强大的函数,肯定不能只有单一形式的参数,那么它都有哪些形式的参数呢?

在python中,参数大致有这几种:位置参数、关键字参数、默认参数、可变参数

位置参数:位置参数为python中最常用的参数形式,它要求形参跟实参一一对应,如果没有一一对应就会报错,并且,位置参数必须在函数括号内的最左边。

关键字参数:关键字参数的形式与位置参数一样,所以在形参中看不出它们的区别,它们的区别是在传参的时候,关键字参数要求在传参的过程中要指明要传给哪个参数,并赋予值,要注意的是,关键字参数必须在位置参数的后面,使用过的位置参数不能再作为关键字参数传值。

默认参数:默认参数就是在声明参数的时候给参数一个初始值,这样在调用函数的时候,如果没有给该参数传值,就会使用默认值,注意,默认参数必须声明在位置参数后面。

可变参数:可变参数声明在所有参数的后面,可变参数有两种,*args和**kwargs。*args是将多余的位置参数按元组的形式组合到一起,当所传的是一个序列,并且序列前有一个*,表示该序列中的每一个元素按位置参数的形式传,多余的在以列表的形式整合到一起;**kwargs是以字典的方式存储未声明的并以键值形式对出现的参数,或者是以**{}形式的字典,并且该形式必须是函数的最后部分。

 1 def func(x, y, z=0, *args, **kwargs):
 2     print(x)
 3     print(y)
 4     print(z)
 5     print(args)
 6     print(kwargs)
 7 
 8 func(1, 2, 3)   # 位置参数,按x、y、z的位置传参
 9 print("==================")
10 func(1, y=3)     # 关键字参数,指定y传的是什么
11 print("==================")
12 func(1, 2)  # 默认参数,不传参数给z,z将使用默认值
13 print("==================")
14 func(1, 2, 3, [4, 5])   # 可变参数,将多余的参数传给args
15 print("==================")
16 func(*[1, 2, 3, 4, 5])   # 将列表里面的元素按位置参数一一传值,多余的将传给args
17 print("==================")
18 func(*[1, 2, 3, 4, 5], a=0)  # 将以键值对出现的声明中未指定参数名的参数传给kwargs
19 print("==================")
20 func(*[1, 2, 3, 4, 5], {"age": 18}, **{"name": "tom"})   # 将**{}形式的字典传给kwargs
21 
22 # ---------------运行结果------------------
23 # 1
24 # 2
25 # 3
26 # ()
27 # {}
28 # ==================
29 # 1
30 # 3
31 # 0
32 # ()
33 # {}
34 # ==================
35 # 1
36 # 2
37 # 0
38 # ()
39 # {}
40 # ==================
41 # 1
42 # 2
43 # 3
44 # ([4, 5],)
45 # {}
46 # ==================
47 # 1
48 # 2
49 # 3
50 # (4, 5)
51 # {}
52 # ==================
53 # 1
54 # 2
55 # 3
56 # (4, 5)
57 # {‘a‘: 0}
58 # ==================
59 # 1
60 # 2
61 # 3
62 # (4, 5, {‘age‘: 18})
63 # {‘name‘: ‘tom‘}

注意事项:

1.在使用函数时,要先弄清楚函数需不需要参数,或需要哪些参数

2.在传参的时候,一定要与形参相对应

3.关键字参数不能再位置参数之前,不能重复传参

4.声明函数时,默认参数必须定义在可变参数之前,其它参数之后

 

python的函数参数

原文:https://www.cnblogs.com/yulinjun/p/13196537.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!