Python 函数定义及调用(2)——参数详解
目录
一、函数的参数和返回值
(1)参数: 负责给函数传递一些必要的数据或者信息
- 形参(形式参数): 在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参;
- 实参(实际参数): 在调用函数的时候输入的值。
(2)返回值: 函数的执行结果
- 使用return关键字;
- 如果没有return,默认返回一个None;
- 函数一旦执行return语句,则无条件返回,即结束函数的执行;
关于返回值案例可以看上一个博客(https://blog.****.net/zaishuiyifangxym/article/details/83271882)
参数分类:
(1)普通参数;(2)默认参数;(3)关键字参数;(4)收集参数。
二、举例说明
1、普通参数
形式:
def 函数名(参数1, 参数2,....):
函数体
# 调用
函数名(value1, value2,.......)
# 调用的时候,具体值参考的是位置,按位置赋值
例如:
def hello(person):
print("大家好,我是函数{0}".format(person))
return "我结束了,啦啦啦"
p = "XiaoMing"
rst = hello(p) # 调用函数 hello
print(rst)
运行结果:
2、默认参数
(1)形参带有默认值;
(2)调用的时候,如果没有对相应形参赋值,则使用默认值。
形式:
def func_name(p1=v1, p2=v2..........):
函数体
# 调用1
func_name()
# 调用2
value1 = 100
value2 = 200
func_name(value1, value2)
例如:
# 默认参数示例
# 报名函数,需要知道学生性别
# 学习python的学生基本都是男生,所以,报名的时候如果没有特别指定,我们默认是男生
def reg(name, age, gender="male"):
if gender == "male":
print("{0} is {1}, and he is a good student".format(name, age))
else:
print("{0} is {1}, and she is a good student".format(name, age))
# 调用
reg("mingyue", 21) # 没有给第三个参数的值,则使用默认值
reg("xiaojing", 23, "female")
运行结果:
3、关键字参数
形式:
def func(p1=v1, p2=v2.....):
func_body
调用函数:
func(p1=value1, p2=value2.......)
从形式上看,比较麻烦,但是有以下优点:
(1)不容易混淆, 一般实参和形参只是按照位置一一对应即可,容易出错
(2)使用关键字参数,可以不考虑参数位置
例如:
# 普通参数案例
def stu(name, age, addr):
print("I am a student")
print("我叫 {0}, 我今年 {1}岁了, 我住{2}".format(name, age, addr))
n = "jingjing"
a = 18
addr = "我家"
# 普通参数,只按照位置传递,容易出错
stu(a, n, addr)
print("-" * 50)
# 对于关键字参数 案例
def stu_key(name="No name", age=0, addr="No addr"):
print("I am a student")
print("我叫 {0}, 我今年 {1}岁了, 我住{2}".format(name, age, addr))
n = "jingjing"
a = 18
addr = "我家"
运行结果:
4、 收集参数
(1)把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中。
(2)参数名args不是必须这么写,但是,我们推荐直接用args,约定俗成 参数名args前需要由星号
(3)收集参数可以和其他参数共存
形式:
def func(*args):
func_body
# 按照list使用方式访问args得到传入的参数
#调用:
func(p1, p2, p3, .....)
例如:
# 函数模拟一个学生进行自我介绍,但具体内容不清楚
# args把他看做一个list
def stu(*args):
print("Hello 大家好,我自我介绍以下,简答说两句:")
print(type(args)) # type函数作用是检测变量的类型
for item in args:
print(item)
stu("Xiaoming", 18, "浙江省杭州市", "爱好:喜欢打篮球")
print("-" * 50)
stu("Xiaohong")
运行结果:
5、 收集参数之关键字收集参数
(1)把关键字参数按字典格式存入收集参数;
(2)kwargs一般约定俗成;
(3)调用的时候,把多余的关键字参数放入kwargs;
(3)访问kwargs需要按字典格式访问。
形式:
def func(**kwargs):
func_body
# 调用:
func(p1=v1, p2=v2, p3=v3........)
例如:
# 自我介绍
# 调用的时候需要使用关键字参数调用
def stu(**kwargs):
# 在函数体内对于kwargs的使用不用带星号
print("Hello 大家好,我先自我介绍一下:")
print(type(kwargs))
for k, v in kwargs.items():
print(k, "---", v)
stu(name="Xiaoming", age=18, addr="浙江省杭州市", hobby="Play basketball") # 调用1
print("-" * 50)
stu(name="Xiaohong") # 调用2
运行结果:
参考资料
[1] https://study.163.com/course/introduction/1004987028.htm