首页 > 编程语言 >Python: 函数传参、默认参数

Python: 函数传参、默认参数

时间:2022-11-13 21:22:28浏览次数:45  
标签:传参 函数 Python list 默认 print new lista id

python函数是值传递还是引用传递

答案: 都不是, 应该是传对象或对象的引用

函数参数在传递的过程中将整个对象传入,对可变对象的修改在函数外部以及内部都可以见,调用者和被调用者之间共享这个对象,而对于不可变对象,
并不能真正被修改,因此,修改往往是通过生成一个新对象然后赋值来实现的.

def change_me(org_list):
  print(id(org_list))
  new_list = org_list
  print(id(new_list))

  if len(new_list) > 5:
    new_list = ['a', 'b', 'c']

  for i,e in enumerate(new_list):
    if isinstance(e, list):
      new_list[i] = "***"

  print(new_list)
  print(id(new_list))

分别找两个list作为参数尝试一下

警惕函数默认参数潜在的问题

默认参数可以给函数的使用带来很大的灵活性,当函数没有指定形参对应的实参就会自动使用默认参数.

def append_test(new_item, lista = []):
  print(id(lista))
  lista.append(new_item)
  print(id(lista))
  return lista

连续调用两次append_test(1), append_test("a") 函数返回值会怎样呢?

期望是 [1]、['a']

实际: [1], [1, 'a']

如果不想让默认参数所指向的对象在所有的函数调用中被共享,而是函数调用过程中动态生成,可以在定义的时候设置为None对象作为占位符

标签:传参,函数,Python,list,默认,print,new,lista,id
From: https://www.cnblogs.com/zyl007/p/16886988.html

相关文章

  • python字典类型
    什么是字典字典是由多个键(key)及其对应的值(value)所组成的一种数据类型a=dict()a={}person={'name':'qjb','age':33}字典支持的数据类型key支持字符串......
  • 极客编程python入门-调用函数
    调用函数Python内置了很多有用的函数,我们可以直接调用。要调用一个函数,需要知道函数的名称和参数a=abs(100.123)print(a)a=abs(-123)print(a)a=abs(-123.123)print(a......
  • Python_字符串常用操作
    string.count(str)统计str在string中出现的次数s="一花一木一世界"print(s.count("一"))  string.replace(old_str,new_str)将string中的old_str替换为ne......
  • ES6中的解构赋值(数组,对象,嵌套,默认值)
    解构赋值通过解构赋值,可以快速从对象或者数组中取出属性或者数值。解构赋值可以通过定位到数组或者对象的某一个位置,将值直接赋给一个或多个变量。constarr=['das......
  • 【Python】第4章-8 求分数序列前N项和
    本题要求编写程序,计算序列2/1+3/2+5/3+8/5+...的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。输入格式:输入在一行中给出......
  • python pip 安装使用国内镜像源
    pythonpip安装使用国内镜像源一般我们Pthon安装库是通过:pipinstall库不过上面的库安装速度太慢,有时候回不成功,因为他用的是国外的镜像库,所以我们不然用国内的镜像库,安......
  • Python蟒蛇绘制
    Python之turtlePython蟒蛇绘制:importturtleturtle.setup(650,350,200,200)turtle.penup()turtle.fd(-250)turtle.pendown()turtle.pensize(25)turtle.pencolor("purple")tu......
  • 【Python】第4章-7 统计学生平均成绩与及格人数
    本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。输入格式:输入在第一行中给出非负整数N,即学生人数。第二行......
  • 【Python】第4章-6 输出前 n 个Fibonacci数
    本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列......
  • [oeasy]python0014_二进制_binary_bin
    ​ 二进制(binary)回忆上次内容上次我们了解了​​ASCII​​码表​ASCII​​码表就是​​A​​merican​​S​​tandard​​C​​odefor​​I​​nformat......