鱼C论坛

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

[学习笔记] 018函数:灵活即强大

[复制链接]
发表于 2017-6-22 22:12:48 | 显示全部楼层 |阅读模式

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

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

x
1.函数的形参(形式参数parameter)和实参(实际参数argument);
  1. >>>def MyFirstFunction(name):
  2. ‘函数定义过程中的name是叫形参’
  3. #因为Ta只是一个形式,表示占据一个参数位置
  4. Print(‘传递进来的’ + name +‘叫做实参,因为Ta是具体的参数值!’)
  5. >>>MyFirstFunction(‘小甲鱼’)
  6. 传递进来的小甲鱼叫做实参,因为Ta是具体的参数值!
复制代码

2.函数文档
在Python中将函数体内首行字符串作为函数文档,字符串中对函数的功能和参数的含义进行说明,可以通过使用函数名加成员操作符跟上__doc__的形式返回这个字符串以备使用者查看,也可以通过help(函数名)形式直接打印出这个字符串;
  1. >>> MyFirstFunction.__doc__
  2. '函数定义过程中的name是叫形参'
  3. >>> help(MyFirstFunction)
  4. Help on function MyFirstFunction in module __main__:

  5. MyFirstFunction(name)
  6. 函数定义过程中的name是叫形参
  7. >>> print.__doc__
  8. "print(value, ..., sep=' ', end='\\n', file=sys.stdout, flush=False)\n\nPrints the values to a stream, or to sys.stdout by default.\nOptional keyword arguments:\nfile:  a file-like object (stream); defaults to the current sys.stdout.\nsep:   string inserted between values, default a space.\nend:   string appended after the last value, default a newline.\nflush: whether to forcibly flush the stream."
  9. >>> help(print)
  10. Help on built-in function print in module builtins:

  11. print(...)
  12.     print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
  13.    
  14.     Prints the values to a stream, or to sys.stdout by default.
  15.     Optional keyword arguments:
  16.     file:  a file-like object (stream); defaults to the current sys.stdout.
  17.     sep:   string inserted between values, default a space.
  18.     end:   string appended after the last value, default a newline.
  19.     flush: whether to forcibly flush the stream.
复制代码

3.关键字参数
当函数定义了多个形参时,调用函数时实参与形参需一一对应,便能得到自己想要的结果;
  1. >>> def SaySome(name,words):
  2.         print(name + '->' + words)
  3. >>> SaySome('小甲鱼','让编程改变世界!')
  4. 小甲鱼->让编程改变世界!
  5. >>> SaySome('让编程改变世界!','小甲鱼')
  6. 让编程改变世界!->小甲鱼
  7. >>> SaySome(words = '让编程改变世界!', name = '小甲鱼')
  8. 小甲鱼->让编程改变世界!
复制代码

4.默认参数
函数定义的过程中给形参赋初值,这样函数调用过程中即使没传入相应实参也能正常执行;
  1. >>> def SaySome(name = '小甲鱼', words = '让编程改变世界!'):
  2.         print(name + '->' + words)

  3.        
  4. >>> SaySome()
  5. 小甲鱼->让编程改变世界!
  6. >>> SaySome('仓井空')
  7. 仓井空->让编程改变世界!
  8. >>> SaySome('钓鱼岛是中国的','仓井空是才全世界的')
  9. 钓鱼岛是中国的->仓井空是才全世界的
复制代码

5.收集参数
当函数参数数量不一定时,在函数定义时可以使用收集函数,即在形参变量名前加一个“*”,其实表示该参数变量是一个元组类型,传入的实参会以元组形式赋值给形参变量;
  1. >>> def test(*params):
  2.         print('参数的长度是:', len(params));
  3.         print('第二个参数是:', params[1]);
  4. >>> test(1, '小甲鱼', 3.14, 5, 6, 7, 8)
  5. 参数的长度是: 7
  6. 第二个参数是: 小甲鱼
复制代码

如果收集参数的后边还要加其他定制的参数,调用函数时要用关键字参数来定制
  1. >>> def test(*params, exp):
  2.         print('参数的长度是:', len(params),exp);
  3.         print('第二个参数是:', params[1]);
  4. >>> test(1, '小甲鱼', 3.14, 5, 6, 7, 8)
  5. Traceback (most recent call last):
  6.   File "<pyshell#45>", line 1, in <module>
  7.     test(1, '小甲鱼', 3.14, 5, 6, 7, 8)
  8. TypeError: test() missing 1 required keyword-only argument: 'exp'
  9. >>> test(1, '小甲鱼', 3.14, 5, 6, 7, exp = 8)
  10. 参数的长度是: 6 8
  11. 第二个参数是: 小甲鱼
  12. >>> def test(*params, exp = 8):
  13.         print('参数的长度是:', len(params),exp);
  14.         print('第二个参数是:', params[1]);

  15.        
  16. >>> test(1, '小甲鱼', 3.14, 5, 6, 7, 8)
  17. 参数的长度是: 7 8
  18. 第二个参数是: 小甲鱼
复制代码

评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 15:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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