首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python参数默认值

__defaults__[0]) 注意,当python执行def语句时,它会根据编译好的函数体字节码和命名空间等信息新建一个函数对象,并且会计算默认参数的值。...如果上面的内容你已经搞明白了,那么你可能会觉得默认参数值的这种设计是python的设计缺陷,毕竟这也太不符合我们对默认参数的认知了。...然而事实可能并非如此,更可能是因为: Functions in Python are first-class objects, and not only a piece of code....可变对象作为参数默认值? 参数的默认值为可变对象时,多次调用将返回同一个可变对象,更改对象值可能会造成意外结果。...比如我们可以用可变对象作为参数默认值来统计函数调用次数,下面例子中使用collections.Counter()作为参数的默认值来统计斐波那契数列中每一个值计算的次数。

1.8K80
您找到你想要的搜索结果了吗?
是的
没有找到

Python函数默认值参数的2个坑

在定义函数时,Python支持默认值参数,在定义函数时可以为形参设置默认值。...在调用带有默认值参数的函数时,可以不用为设置了默认值的形参进行传值,此时函数将会直接使用函数定义时设置的默认值,当然也可以通过显式赋值来替换其默认值。...也就是说,在调用函数时是否为默认值参数传递实参是可选的,具有较大的灵活性。...i的值不影响参数n的默认值 >>> f() 3 >>> i = 7 >>> f() 3 >>> def f(n=i): #重新定义函数 print(n) >>> f() 7 (2)默认值参数只初始化一次...如果参数的默认值是数字、字符串、元组或其他不可变类型的数据,并不会有什么影响,但是如果参数的默认值是列表、字典、集合等可变类型数据的话,这里有个大坑。

1.2K60

python中函数关键字参数与默认值

三、自定义函数的参数的默认值。...三、自定义函数的参数的默认值 1.在书写的时候后,默认值参数要从函数的最右边开始赋值。 2.如果有默认值参数的位置,那么就可以不需要再次传递参数,如果有传递参数,那么以传递的参数值为准。...第三种 4 第四种 4 普通传值与关键字传参混用: 第五种 4 姓名:老妹儿,职业:烧芹菜 姓名:翠花,职业:上酸菜 开始抢活干: 姓名:翠花,职业:烧芹菜 姓名:老妹儿,职业:红烧鱼 相关文章: python...中lambda表达式与函数,函数传参、引用、作用范围、函数文档 python中函数概述,函数是什么,有什么用 python中字典中的赋值技巧,update批量更新、比较setdefault方法与等于赋值...python中进一步理解字典,items方法、keys方法、values方法 python批量默认初始化与获取字典,fromkeys方法和get方法 python深度复制字典,copy方法与deepcopy

1.2K20

Python新手常见错误之默认值设定错误

原因在于,在Python里,函数的默认值是在函数定义的时候实例化的,而不是在调用的时候。 那么我们仍然会问,为什么在调用函数的时候这个默认值却被赋予了不同的值?...因为在你每次给函数指定一个默认值的时候,Python都会存储这个值。如果在调用函数的时候重写了默认值,那么这个存储的值就不会被使用。...当你不重写默认值的时候,Python就会让默认值引用存储的值(这个例子里的numbers)。 它并不是将存储的值拷贝来为这个变量赋值。...通常,当人们听到这里,大家会问另一个关于默认值的问题。 请看案例: ? 当我们运行它的时候,其结果完全是我们期望的: ? 这又是什么原因? 其秘密不在与默认值被赋值的时候,而是这个默认值本身。...这个问题和它的解决方案在 Python 2.x 和 3.x 里都是类似的,在Python 3.x 里面唯一的不同,是里面的print 表达式应该是函数调用的方式(print(numbers))。 ?

81860

python函数——字典设置默认值get() 与 setdefault()区别

python 中 get()以及setdefault() 都可以达到默认值的作用,但是功能不一样,接下来将用示例对其做说明和解释。...,但是我们把字典打印出来: >>> dict_1 {} >>> dict_2 {'name': 'wangcongying'} 这下看到区别了,使用get()做的默认值操作是不能给字典赋值的,只是作为取数据的默认值操作...wangcongying" >>> dict_1 {'name': 'wangcongying'} >>> dict_2 {'name': 'wangcongying'} >>> dict_1.get("name", "python...") 'wangcongying' >>> dict_2.setdefault("name", "python") 'wangcongying' 所以在给已经有值的key 做默认值操作的时候,返回的是字典中原有的值...总结 get() 只是设置的是取值的初始值,不保留于字典中; setdefault()设置的默认值不只是取值的时候打印,并且会保留于字典中。

2.4K30
领券