鱼C论坛

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

[技术交流] 《零基础入门学习python》018函数:灵活即强大

[复制链接]
发表于 2018-6-13 14:33:18 | 显示全部楼层 |阅读模式

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

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

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

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

2,函数文档
对函数的内容参数、意义、返回值等进行介绍,给函数写文档是为了让别人更好的理解你的函数。
>>> def MyFirstFunction(name):
        ‘函数定义过程中的name是叫形参'            #这句话就是函数文档,Ta会作为函数的一部分存储起来,Ta不会被打印出来。功能同注释#类似。
        #因为Ta只是一个形式,表示占据一个参数位置
        print('传递进来的' + name + ‘叫做实参,因为Ta是具体的参数值!')

查看函数的属性
>>> MyFirstFunction.__doc__               # 函数.双下横线doc双下横下线,函数的默认属性。一般系统的特殊属性都是双下横线开始,双下横线结束
‘函数定义过程中的name是叫形参'
>>> help(MyFirstFunction)             #使用help
Help on function MyFirstFunction in module __main__:

MyFirstFunction(name)
    \u51fd\u6570\u5b9a\u4e49\u8fc7\u7a0b\u4e2d\u7684name\u662f\u53eb\u5f62\u53c2

3,关键字参数
>>> def SaySome(name, words):
        print(name + '->' + words)

       
>>> SaySome('小甲鱼', '让编程改变世界!')
小甲鱼->让编程改变世界!
>>> SaySome('让编程改变世界!', '小甲鱼')
让编程改变世界!->小甲鱼
>>> SaySome(words = '让编程改变世界', name = '小甲鱼')
小甲鱼->让编程改变世界

有了关键字参数,python就不会按照顺序索引,而是按照关键字索引参数

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

       
>>> SaySome()
小甲鱼->让编程改变世界
>>> SaySome('苍老师')
苍老师->让编程改变世界
>>> SaySome('苍老师', '123')
苍老师->123


关键字参数是在函数调用的时候通过参数名定制需要赋值的参数,这样子就不怕因为搞不清参数的顺序而导致函数出现错误。
默认参数是在参数定义的时候,为形参赋初值,函数调用的时候如果忘了传递参数,会自动找Ta的默认值,使函数不会出现错误。

5,收集参数
当函数作者不确定这个函数需要多少个参数的时候,在参数面前加上星号*
>>> def test(*params):
        print('参数的长度是:', len(params));
        print('第二个参数是:', params[1])

       
>>> test(1, '小甲鱼', 3.14, 5, 6, 7, 8)
参数的长度是: 7
第二个参数是: 小甲鱼

如果收集参数后面还要加上其它定制的函数,那么在调用函数的时候应该使用关键字参数来定制,否则python会把后边的参数全部列为收集参数的范畴。
>>> def test(*params, exp):
        print('参数的长度是:', len(params), exp);
        print('第二个参数是:', params[1])


>>> test(1, '小甲鱼', 3.14, 5, 6, 7, 8)            #这里的参数都给了收集参数params, exp就得不到了  
Traceback (most recent call last):
  File "<pyshell#39>", line 1, in <module>
    test(1, '小甲鱼', 3.14, 5, 6, 7, 8)
TypeError: test() missing 1 required keyword-only argument: 'exp'


>>> test(1, '小甲鱼', 3.14, 5, 6, 7, exp = 8)
参数的长度是: 6  8
第二个参数是: 小甲鱼


>>> def test(*params, exp = 8):         #最好在函数定义的时候就给exp一个默认值
        print('参数的长度是:', len(params), exp);
        print('第二个参数是:', params[1])

       
>>> test(1, '小甲鱼', 3.14, 5, 6, 7, 8)
参数的长度是: 7 8
第二个参数是: 小甲鱼


作业:
1,基数

def multiplication(number, base = 3):
    add = 0
    temp = number.pop()

    if temp == 5:   #如果最后一个参数是5,则设定基数为5,基数不参数求和计算
       base = 5
    else:
        base = 3
        number.append(temp)

    for i in number:
        add += i
    print(add * base)

number = [1, 2, 3, 4, 5, 6, 7]
multiplication(number)



2,水仙花
def narcissus():
    hundreds = 0
    ten = 0
    single = 0

    for i in range(100, 1000):          #数据范围(100~999)
        temp = i
        sum = 0

        hundreds = temp // 100          #百位数
        ten = temp //10 %10             #十位数
        single = temp % 10             #个位数
        sum = hundreds ** 3 + ten ** 3 + single ** 3

        if temp == sum:
            print(i, end=' ')


print('所有的水仙花数分别是:')
narcissus()



2,函数findstr()

def findstr():
    string = input('请输入目标字符串:')
    substring = input('请输入子字符串(两个字符):')
    print('子字符串在目标中功出现 %d 次'  %  string.count(substring))



findstr()


评分

参与人数 1荣誉 +2 鱼币 +1 贡献 +1 收起 理由
ztt一方 + 2 + 1 + 1 感谢楼主无私奉献!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 21:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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