首页 > 其他分享 >第六章 2 函数-参数 练习题

第六章 2 函数-参数 练习题

时间:2022-09-04 13:33:49浏览次数:61  
标签:练习题 函数 args 传递 关键字 参数 kwargs 第六章


第六章 2 函数-参数 练习题
[进阶拓展]
1 Python 函数调用的时候参数的传递方式是值传递还是引用传递?
python函数的参数传递有: 位置参数、默认参数、可变参数、关键字参数

函数的传值到底是值传递,还是引用传递,要分情况:

不可变参数用值传递: 像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何
都不可能在原处改变不可变对象。

可变参数是引用传递的: 比如像列表、字典这样的对象,是通过引用进行传递的,可变对象能在函数内进行改变。


2 对缺省参数的理解 ?
缺省参数指在调用函数的时候,没有传入参数的情况下,调用默认的参数。
在调用函数的同时赋值时,所传入的参数会替代默认参数。
*args是不定长参数,它可以表示输入参数是不确定的,可以是任意多个。
**kwargs是不定长关键字参数,赋值的时候是以键=值的方式,参数是可以任意多对,
在定义函数的时候,如果不确定会有多少参数传入时,就可以使用这两个参数。

3 为什么函数名字可以当做参数用?
python中,一切都是对象。
函数名是函数在内存栈区中的一个空间,也是一个对象。

4 可变参数定义*args,**kwargs 的区别是什么?并且写出下边代码的输入内容
*args用来接收溢出的位置参数,将多出来的位置参数组织成元组。
**kwargs用来接收溢出的关键字参数,将多出来的关键字参数组织成字典。

def foo(*args, **kwargs):
print("args=", args)
print("kwargs=", kwargs)
print("-----------------")
if __name__ == '__main__':
foo(1, 2, 3, 4)
foo(a=1, b=2, c=3)
foo(1, 2, 3, 4, a=1, b=2, c=3)
foo("a", 1, None, a=1, b='2', c=3)

args= (1,2,3,4)
kwargs= {}
----------------
args= ()
kwargs = {‘a':1, ’b':2, ‘c':3}
----------------
args=(1,2,3,4)
kwargs = {‘a':1, ’b':2, ‘c':3}
----------------
args=("a", 1, None,)
kwargs = {‘a':1, ’b':’2‘, ‘c':3}
----------------

[面试真题]
1 Python 中函数参数有哪些类型?
位置参数:按从左到右的顺序定义的参数
关键字参数:按key=value的形式定义的参数
默认参数:函数在定义时,就为形参赋值
可变长参数:*args **kwargs
命名关键字参数:*后面定义的参数,必须被传值,且必须按关键字实参的形式传递。

2 关于函数的参数,以下选项中描述错误的是()
• A:可选参数可以定义在非可选参数的前面
• B:一个元组可以传递给带有星号的可变参数
• C:在定义函数时,可以设计可变数量参数,通过在参数前增加星号(*)实现
• D:在定义函数时,如果有些参数存在默认值,可以在定义函数时直接为这些参数
A

3 关于函数的关键字参数使用限制,以下选项中描述错误的是( )
A:关键字参数必须位于位置参数之前
B:不得重复提供实际参数
C:关键字参数必须位于位置参数之后
D:关键字参数顺序无限制
A

4 说下你对*args 和**kwargs 的理解
# *args 用来将参数打包成 tuple 给函数体调用
# **kwargs 打包关键字参数成 dict 给函数体调用

5 判断:使用可变长参数函数 fun(*args,**kwargs),按照 fun(2,3,4)
调用,则 args 值为(2,3,4),kwargs 为空字典()

标签:练习题,函数,args,传递,关键字,参数,kwargs,第六章
From: https://www.cnblogs.com/leeyong49/p/16654943.html

相关文章