Python 函数定义及调用(2)——参数详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zaishuiyifangxym/article/details/83272365

目录

一、函数的参数和返回值

二、举例说明 

1、普通参数

2、默认参数

3、关键字参数

4、 收集参数


一、函数的参数和返回值

(1)参数: 负责给函数传递一些必要的数据或者信息

  • 形参(形式参数): 在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参;
  • 实参(实际参数): 在调用函数的时候输入的值。

(2)返回值: 函数的执行结果

  • 使用return关键字;
  • 如果没有return,默认返回一个None;
  • 函数一旦执行return语句,则无条件返回,即结束函数的执行;

关于返回值案例可以看上一个博客(https://blog.csdn.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

猜你喜欢

转载自blog.csdn.net/zaishuiyifangxym/article/details/83272365