鱼C论坛

 找回密码
 立即注册
查看: 5624|回复: 19

[知识点备忘] 第042讲:函数(II)

[复制链接]
发表于 2021-12-9 23:10:59 | 显示全部楼层 |阅读模式
购买主题 已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-10 16:58:25 | 显示全部楼层
函数的参数有很多种玩法,包括位置参数、关键字参数、默认参数。其中,在调用函数时,位置参数必须在关键字参数之前;在定义函数时,默认参数要放在最后。另外还有两个“冷知识”:定义函数时,斜杠“/”限制位置参数,即斜杠左侧的参数必须传递位置参数,而不能传递关键字参数(斜杠右侧的参数随意);星号“*”限制关键字参数,即星号右侧的参数必须传递关键字参数,而不能传递位置参数(星号左侧的参数随意)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-12-30 14:29:43 | 显示全部楼层
  1. >>> ['函数的参数']
  2. ['函数的参数']
  3. >>> ['1--位置参数']
  4. ['1--位置参数']

  5. >>> def myfunc(s,vt,o):
  6.         return"".join((o,vt,s))

  7. >>> myfunc("我","打了","小甲鱼")
  8. '小甲鱼打了我'
  9. >>> myfunc("小甲鱼","打了","我")
  10. '我打了小甲鱼'
  11. >>> ['2--关键字参数']
  12. ['2--关键字参数']
  13. >>> myfunc(o="我",vt="打了",s="小甲鱼")
  14. '我打了小甲鱼'
  15. >>> myfunc(o="我","清蒸","小甲鱼")
  16. SyntaxError: positional argument follows keyword argument
  17. >>> ['位置参数必须在关键字参数之前']
  18. ['位置参数必须在关键字参数之前']
  19. >>> myfunc("我","清蒸了",s="小甲鱼")
  20. Traceback (most recent call last):
  21.   File "<pyshell#11>", line 1, in <module>
  22.     myfunc("我","清蒸了",s="小甲鱼")
  23. TypeError: myfunc() got multiple values for argument 's'
  24. >>> myfunc("我","清蒸了",o="小甲鱼")
  25. '小甲鱼清蒸了我'
  26. >>> ['默认参数--在函数调用时如果没有采用实参,那么在函数调用时就会采用默认参数来代替']
  27. ['默认参数--在函数调用时如果没有采用实参,那么在函数调用时就会采用默认参数来代替']
  28. >>> def myfunc(s,vt,o="小甲鱼"):
  29.         return "".join((o,vt,s))

  30. >>> myfunc("香蕉","吃")
  31. '小甲鱼吃香蕉'
  32. >>> myfunc("香蕉","吃","不二如是")
  33. SyntaxError: invalid character ',' (U+FF0C)
  34. >>> myfunc("香蕉","吃","不二如是")
  35. '不二如是吃香蕉'
  36. >>> ['当给了一个实参之后,就不会使用默认参数']
  37. ['当给了一个实参之后,就不会使用默认参数']
  38. >>> def myfunc(s="苹果",vt,o="小甲鱼"):
  39.        
  40. SyntaxError: non-default argument follows default argument
  41. >>> def myfunc(s="苹果",vt,o="小甲鱼"):
  42.        
  43. SyntaxError: non-default argument follows default argument
  44. >>> ['这是因为默认参数也要滞后']
  45. ['这是因为默认参数也要滞后']
  46. >>> def myfunc(vt,s="苹果",o="小甲鱼"):
  47.         return "".join((o,vt,s))

  48. >>> myfunc("爱吃")
  49. '小甲鱼爱吃苹果'
  50. >>> help(abs)
  51. Help on built-in function abs in module builtins:

  52. abs(x, /)
  53.     Return the absolute value of the argument.

  54. >>> abs(-1.5)
  55. 1.5
  56. >>> abs(x=-1.5)
  57. Traceback (most recent call last):
  58.   File "<pyshell#30>", line 1, in <module>
  59.     abs(x=-1.5)
  60. TypeError: abs() takes no keyword arguments
  61. >>> [' abs(x,/)  中 /  的含义是斜杠的左边的参数必须传递位置参数,而不能是一些关键字参数之类']
  62. [' abs(x,/)  中 /  的含义是斜杠的左边的参数必须传递位置参数,而不能是一些关键字参数之类']
  63. >>> sum([1,2,3],4)
  64. 10
  65. >>> sum([1,2,3],start=4)
  66. 10
  67. >>> def abc(a,/,b,c):
  68.         print(a,b,c)

  69.        
  70. >>> abc(1,2,3)
  71. 1 2 3
  72. >>> abc(a=1,2,3)
  73. SyntaxError: positional argument follows keyword argument
  74. >>> ['斜杠的左边不能出现关键字参数']
  75. ['斜杠的左边不能出现关键字参数']
  76. >>> abc(3,b=2,c=1)
  77. 3 2 1
  78. >>> def abc(a,*,b,c):
  79.         print(a,b,c)

  80.        
  81. >>> [' * 号的左侧既可以是位置参数,也可以是关键字参数;而*号的右边只可以是关键字参数']
  82. [' * 号的左侧既可以是位置参数,也可以是关键字参数;而*号的右边只可以是关键字参数']
  83. >>> abc(1,b=2,c=3)
  84. 1 2 3
  85. >>> abc(1,2,3)
  86. Traceback (most recent call last):
  87.   File "<pyshell#46>", line 1, in <module>
  88.     abc(1,2,3)
  89. TypeError: abc() takes 1 positional argument but 3 were given
  90. >>> abc(a=1,b=2,c=3)
  91. 1 2 3
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2022-4-27 07:39:19 | 显示全部楼层
楼上的同学很赞。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-16 16:07:05 | 显示全部楼层
def myfunc(s,vt,o):
    return "".join((o,vt,s))
myfunc("我","打了","小甲鱼")
SyntaxError: invalid syntax
def myfunc(s,vt,o):
    return "".join((o,vt,s))
myfunc("我","打了","小甲鱼")
SyntaxError: invalid syntax
为什么总是会出现这种情况呢???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-28 11:00:36 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-28 20:59:35 | 显示全部楼层
码农心 发表于 2022-5-16 16:07
def myfunc(s,vt,o):
    return "".join((o,vt,s))
myfunc("我","打了","小甲鱼")

同样也遇到类似情况,我的Py版本为3.10.3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-30 08:39:43 | 显示全部楼层
另起一行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-4 23:11:13 | 显示全部楼层
学习打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 15:16:58 | 显示全部楼层
码农心 发表于 2022-5-16 16:07
def myfunc(s,vt,o):
    return "".join((o,vt,s))
myfunc("我","打了","小甲鱼")

''.join() 功能默认不返回结果
加一句
print(myfunc())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 15:52:44 | 显示全部楼层
为什么我的sum是这样:  sum(iterable, start=0, /),不能使用关键字参数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-2 16:18:33 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-11 14:44:57 | 显示全部楼层
>>> sum([1,2],start=2)
Traceback (most recent call last):
  File "<pyshell#169>", line 1, in <module>
    sum([1,2],start=2)
TypeError: sum() takes no keyword arguments
>>> sum([1,2],2)
5

我使用这个,右侧start=2,报错,不知道是什么原因?


滴滴滴~打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-6 20:58:43 | 显示全部楼层
墨墨在努力吖 发表于 2022-10-11 14:44
>>> sum([1,2],start=2)
Traceback (most recent call last):
  File "", line 1, in

用help(sum)查看你的sum函数情况,sum(iterable, /, start=0),看/在哪个位置.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-30 11:09:51 | 显示全部楼层
def myfunc(s,vt,o):
    return"".join(o,vt,s)

myfunc("我","打了","小甲鱼")
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    myfunc("我","打了","小甲鱼")
  File "<pyshell#10>", line 2, in myfunc
    return"".join(o,vt,s)
TypeError: str.join() takes exactly one argument (3 given)
def myfunc(s,vt,o):
    return"".join((o,vt,s))

myfunc("我","打了","小甲鱼")
'小甲鱼打了我'
myfunc("香蕉","打了","大海")
'大海打了香蕉'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-11 16:49:01 | 显示全部楼层
码农心 发表于 2022-5-16 16:07
def myfunc(s,vt,o):
    return "".join((o,vt,s))
myfunc("我","打了","小甲鱼")

交互模式里应该在隔一行,不然myfunc的缩进与上面def是对齐的,自然就报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-11 16:50:35 | 显示全部楼层
andyleesh 发表于 2022-12-30 11:09
def myfunc(s,vt,o):
    return"".join(o,vt,s)

return后加空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-12 20:58:19 | 显示全部楼层

感谢指导,我学到现在感觉跟没学一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-2 15:11:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-2 15:13:12 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-30 18:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表