python默认参数问题】的更多相关文章

笔记:Python 默认参数必须指向不变对象 学习记录 >>> def add_end(L=[]): L.append('END') return L >>> add_end() ['END'] >>> # 但是再次调用 add_end() 时,结果就不对了 >>> add_end() ['END', 'END'] >>> add_end() ['END', 'END', 'END'] 所以默认参数改为 None 就…
对于学习python的人都有这样的困惑 def foo(a=[]): a.append(5) return a Python新手希望这个函数总是返回一个只包含一个元素的列表:[5].结果却非常不同,而且非常惊人(对于新手来说): >>> foo() [5] >>> foo() [5, 5] >>> foo() [5, 5, 5] >>> foo() [5, 5, 5, 5] >>> foo() 实际上,这不是设计缺陷…
默认参数的坑 定义一个函数,传入一个list,添加一个end再返回 def add_end(L=[]): L.append('END') return L 正常调用时,结果似乎不错 print add_end([1,2,3]) #[1, 2, 3, 'END'] 使用默认参数调用时,一开始结果也是对的,但是再次调用时,结果就不对了 print add_end() #['END'] print add_end() #['END', 'END'] print add_end() #['END', '…
定义默认参数 定义函数的时候,还可以有默认参数. 例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数: >>> int('123') 123 >>> int('123', 8) 83 int()函数的第二个参数是转换进制,如果不传,默认是十进制 (base=10),如果传了,就用传入的参数. 可见,函数的默认参数的作用是简化调用,你只需要把必须的参数传进去.但是在需要的时候,又可以传入额外的参数来覆盖默认参数值. 我们来定…
python的默认参数只会在函数定义时被确定,而不是每次调用时重新确定,所以,一旦在函数中修改了默认参数,则在随后的调用中都会生效 由于这个特性,在定义函数时,如果默认参数使用可变的对象类型,如空列表,会导致逻辑出错…
在python函数中, 可以使用如下方式声明并初始化参数 def to_smash(total_candies, n_friends=3): """Return the number of leftover candies that must be smashed after distributing the given number of candies evenly between 3 friends. >>> to_smash(91) 1 "…
def extend_list(v, li=[]): li.append(v) return li list1 = extend_list(10) print(list1) # [10] list2 = extend_list(123, []) print(list2) # [123] list3 = extend_list('a') print(list3) # [10, 'a'] print("-" * 20) print(list1) # [10, 'a'] print(list…
我们在定义默认参数时,有时会遇到一写似乎难以理解的问题.比如,在第二次调用函数时,默认参数记住了上一次执行的结果: >>> def test(L=[3,]): ... L.append("end") ... print(id(L)) ... return L ... >>> test() 2529720312648 [3, 'end'] >>> test() 2529720312648 [3, 'end', 'end'] >&…
一:内置函数 globals() locals() 1.返回的是字典,字典里面的键值对:全局作用域的全部内容 print(globals()) 2.返回的是字典,字典里面的键值对:当前作用域的全部内容 print(locals()) 二:默认参数的陷阱 1.默认参数:没传值,可变数据类型在内存中是同一个 def func(name, alist=[]): alist.append(name) renturn alist r1 = fun('whj') print(r1) >>>['whj…
def StudentInfo(country='中国', name): print('%s,%s' % (name, country)) StudentInfo('美国', '大卫') 上述代码报错: 原因:SyntaxError: non-default argument follows default argument def StudentInfo(country='中国', name): ^ def StudentInfo(name, chineselevel='良好', countr…