python函数参数讲解(上)

参数种类

种类:函数参数分为可变类型和不可变类型,其调用结果是不同的。

1.可变类型:类似c++的引用传递,如列表、字典等。如果传递的参数是可变类型,则在函数内部对传入参数的修改会影响到外部变量。

2.不可变类型:类似c++的值传递,如整数、字符串、元组等。如果传递的参数是不可变类型,则在函数内部对传入参数的修改不会影响到外部变量。

可变参数示例:

def change_int(my_list):
    "修改传入的列表"
    my_list.append([1, 2, 3])
    print("函数内修改后的变量:", my_list)


my_list = [10, 20, 30]
change_int(my_list)
print("函数外变量的值:", my_list)

从示例中可知,在调用函数时,如果传入的参数是可变类型,则外部变量也会被更改。在上述例子中,传入函数的list对象和在末尾添加新内容的mylist对象用的是同一个引用。

不可变类型参数示例:

def change_int(a):
    a = 10


b = 2
change_int(b)
print(b)  # 结果是2

示例中展示有int类型的对象2,指向它的变量是b。在传递给change_int()函数时,按传值方式复制了变量b,a和b都指向了同一个int对象。在a=10时,则新生成一个int值对象10,并让a指向它。

总结:

知识点:

1.在定义函数时,开发者把参数的名字和位置确定后,函数的接口定义就完成了。

2.Python语言的函数定义非常简单,但灵活度却非常大。

3.函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。

4.想让函数传递实参的方式有很多,可使用位置实参,要求传入参数和定义参数的顺序相同;也可使用关键字实参,每个实参都由变量名和值组成。

参数位置

概念:调用函数时,Python语言必须将函数调用中的每个实参都关联到函数的相应形参。最简单的关联方式是基于实参的顺序,这种关联方式被称为位置实参。

示例:包含学生信息的函数,该函数输出学生的名字及年龄。

def describe_student(person_name, student_age):
    "函数功能:显示学生的信息"
    print("my name is ", person_name)
    print(person_name + "is" + student_age + "years old")


describe_student('Jack', '24')

输出结果:

my name is  Jack
Jackis24years old

示例中:函数describe_student()的定义表明,它需要姓名和年龄两个参数。调用describe_student()函数时,需要按顺序提供姓名和年龄参数。函数调用时,实参’Jack’ 存储在形参person_name中,而实参’24’ 存储在形参student_age 中。定义了函数后,开发者可以根据需要多次调用函数。如果增加学生数量,则需要再调用describe_student() 。

示例:

def describe_student(person_name, student_age):
    "函数功能:显示学生的信息"
    print("my name is ", person_name)
    print(person_name + "is" + student_age + "years old")


describe_student('Jack', '24')
describe_student('Bob', '17')

输出结果:

my name is  Jack
Jackis24years old
my name is  Bob
Bobis17years old

调用函数是一种高效率的开发方式。示例中,开发者只需在函数中编写描述学生的代码一次,之后描述新学生时,都可调用这个函数,并向它提供新的学生信息。

在函数中,可根据需要使用任意数量的位置实参。Python语言将按顺序将函数调用中的实参关联到函数定义中相应的形参。

注意:在使用位置实参来调用函数时,如果实参的顺序不正确,会出现不同的结果。

示例:

def describe_student(person_name, student_age):
    "函数功能:显示学生的信息"
    print("my name is ", person_name)
    print(person_name + "is" + student_age + "years old")


describe_student('18', 'Jack')

 输出结果:

my name is  18
18isJackyears old

示例中:开发者先指定名字,再指定学生年龄。由于实参’18’ 在前,这个值将存储到形参person_name中;同理,‘Jack’ 将存储到形参student_age中。在实际开发中,如果执行结果和预期不一致,请核查函数调用中实参的顺序与函数定义中形参的顺序是否一致。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

威胁情报收集站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值