鱼C论坛

 找回密码
 立即注册
查看: 1902|回复: 0

[技术交流] 《零基础入门学习python》第十八讲笔记:函数:灵活及强大

[复制链接]
发表于 2017-7-31 10:51:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. >>>def MyFirstFunction(name):
  2.             '函数定义过程中的name是叫形参'
  3.             #因为Ta只是一个形式,表示占据一个参数位置
  4.             print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值')

  5. >>> MyFirstFunction('小甲鱼')
  6. 传递进来的小甲鱼叫做实参,因为Ta是具体的参数值
复制代码


形式参数(parameter): 在定义函数时设置  实际参数(argument):在调用函数时设置

函数文档:给函数写文档是为了让人家更好的理解你的函数,一般写在定义函数语句的下一行,用一对单引号或双引号

  1. >>> def MyFirstFunction(name):
  2.             '函数定义过程中的name是叫形参'
  3.             #因为Ta只是一个形式,表示占据一个参数位置
  4.             print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值')


  5. >>> MyFirstFunction('小甲鱼')   
  6. 传递进来的小甲鱼叫做实参,因为Ta是具体的参数值
  7. >>> MyFirstFunction.__doc__     # 打印此函数的函数文档
  8. '函数定义过程中的name是叫形参'
  9. >>> help(MyFirstFunction)    # 同上,打印此函数的函数文档
  10. Help on function MyFirstFunction in module __main__:

  11. MyFirstFunction(name)
  12.     函数定义过程中的name是叫形参

  13. >>>
复制代码

  1. 关键字参数:
  2. >>> SaySome('小甲鱼','让编程改变世界')
  3. 小甲鱼->让编程改变世界
  4. >>> SaySome('让编程改变世界','小甲鱼')
  5. 让编程改变世界->小甲鱼
  6. >>> SaySome(words='让编程改变世界',name='小甲鱼')     # 关键字参数,关键字就是当初定义函数时给的形参,这样能避免实参调用顺序出错
  7. 小甲鱼->让编程改变世界
  8. >>>

  9. 默认参数:定义了默认值的参数
  10. >>> def SaySome(name='小甲鱼',words='让编程改变世界'):  # 为形参赋初值
  11.     print(name + '->' + words)


  12. >>> SaySome()  # 当没传递参数时,系统调用初值
  13. 小甲鱼->让编程改变世界
  14. >>> SaySome('苍井空')   # 按默认顺序传递一个实参
  15. 苍井空->让编程改变世界
  16. >>> SaySome('苍井空','我脱光衣服躺在镜头前,是为了生存,而你衣冠楚楚的站在镜头前,却只是为 了私欲和欺骗!')  #按默认顺序,传递两个实参
  17. 苍井空->我脱光衣服躺在镜头前,是为了生存,而你衣冠楚楚的站在镜头前,却只是为 了私欲和欺骗!
  18. >>>
复制代码


  1. 收集参数:可变参数
  2. >>> def test(*params):   #  *表示定义一个可变参数,参数打包成一个元组,元组名字为params
  3.     print('参数的长度是:',len(params));
  4.     print('第二个参数是:',params[1]);


  5. >>> test(1,'小甲鱼',3.14,5,6,7,8)   # 实参为元组,因为元组只需逗号隔开就行
  6. 参数的长度是: 7
  7. 第二个参数是: 小甲鱼

  8. >>> def test(*params,exp):  # 除了可变参数,还给一个固定形参
  9.     print('参数的长度是:',len(params),exp);
  10.     print('第二个参数是:',params[1]);


  11. >>> test(1,'小甲鱼',3.14,5,6,7,8)
  12. Traceback (most recent call last):
  13.   File "<pyshell#25>", line 1, in <module>
  14.     test(1,'小甲鱼',3.14,5,6,7,8)
  15. TypeError: test() needs keyword-only argument exp     # 默认把参数都给了params元组

  16. >>> test(1,'小甲鱼',3.14,5,6,7,exp=8)   # 用关键字给exp一个实参
  17. 参数的长度是: 6 8
  18. 第二个参数是: 小甲鱼
  19. >>> def test(*params,exp=8):   # 给默认参数一个值
  20.     print('参数的长度是:',len(params),exp);
  21.     print('第二个参数是:',params[1]);


  22. >>> test(1,'小甲鱼',3.14,5,6,7,8)    # 这样即使调用时忘了给exp传实参,也不会报错
  23. 参数的长度是: 7 8
  24. 第二个参数是: 小甲鱼
  25. >>>
复制代码

总结:
1.什么情况下不需要定义参数?
     函数体执行的代码已包含所有数据的可能。直接print就行
2.关键字参数和默认参数区别?
     关键字参数是在函数调用时设置的,以防传参顺序错乱导致bug。默认传参是按顺序来的。 默认参数是在定义函数时给参数设置的初始值,以防调用函数时忘了给实参导致报错。
3.当某段代码在整个代码中需要重复用到多次,此时就用函数将这一段代码打包。

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-26 04:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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