鱼C论坛

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

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

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

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

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

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

>>> MyFirstFunction('小甲鱼')
传递进来的小甲鱼叫做实参,因为Ta是具体的参数值

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

函数文档:给函数写文档是为了让人家更好的理解你的函数,一般写在定义函数语句的下一行,用一对单引号或双引号
>>> def MyFirstFunction(name):
            '函数定义过程中的name是叫形参'
            #因为Ta只是一个形式,表示占据一个参数位置
            print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值')


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

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

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

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


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

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


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

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


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

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


>>> test(1,'小甲鱼',3.14,5,6,7,8)    # 这样即使调用时忘了给exp传实参,也不会报错
参数的长度是: 7 8
第二个参数是: 小甲鱼
>>>
总结:
1.什么情况下不需要定义参数?
     函数体执行的代码已包含所有数据的可能。直接print就行
2.关键字参数和默认参数区别?
     关键字参数是在函数调用时设置的,以防传参顺序错乱导致bug。默认传参是按顺序来的。 默认参数是在定义函数时给参数设置的初始值,以防调用函数时忘了给实参导致报错。
3.当某段代码在整个代码中需要重复用到多次,此时就用函数将这一段代码打包。

本帖被以下淘专辑推荐:

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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