• 函数基础


    1 #函数定义

    def mylen():-----------------def 是固定的,不能变,他就是定义函数的关键字。def 关键词开头,空格(必须有)+ 函数名称和圆括号(),最后还有一个":"
    
    
                                  函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。给函数起名字要尽量简短,并能表达函数功能。

    """计算s1的长度""" ---------------注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。
    s1 = "asdfghaeknaf" 
    length = 0
    for i in s1:
    length = length+1
    print(length)

    # 函数的调用 mylen()----函数名加括号,执行函数


    2 函数名

         函数是第一类对象概念: a 函数名本质上就是函数的内存地址。b.函数名可以作为一个变量。

    #1,可以互相赋值。

    # def func1():
    # print(666)
    #
    # f1 = func1
    # f1()

    #2,函数名可以当成函数的参数

    def func1():
    print(666)


    def func2(argv):
    argv()
    print(777)

    func2(func1)

    #3,可以当成容器类数据类型的参数

    # def func1():
    # print(666)
    #
    # def func2():
    # print(777)
    #
    # def func3():
    # print(888)

    #实现依次执行以上函数
    # l1 = [func1, func2, func3]
    # for i in l1:
    # i()

    #4,函数名可以当成函数的返回值
    #
    # def func1():
    # print(666)
    #
    # def func2(argv):
    # print(777)
    # return argv
    #
    # ret = func2(func1)
    # ret()

    def func():
        print('in func')
    
    f = func
    print(f)

    3 return返回值功能

    (1)函数中遇到return直接结束函数;
    (2)给函数调用者返回值 ------无return返回none ;有return但不写任何或者写none则返回都是none ;
    return返回单个数 (return length),写什么则返回相应数据;return多个数据,则将多个数据放在一个元组里面返回。
    s1 = 'asskdfjeirfjdkf'
    li = [1, 2, 3, 666, 'xyn']
    def my_len(b): 函数的调用#形参,形式参数,与实参进行一一对应,实参的值会传给形参
    count = 0
    for a in b:
    count+=1
    return count ---函数中不要出现print,则用return返回值,函数外再print。return将结果返回给函数的执行者
    res=my_len(s1) 函数的执行 #实参,实际参数,实际要计算的参数
    print(res)

    形参与实参必须一一对应,数量对应,位置也对应。

    从实参角度出发
    位置参数: 必须一一对应,按顺序
    关键字参数:必须一一对应,不按顺序 ----- a=3
    混合参数:一一对应, 且关键字参数必须在位置参数后面


    从形参角度出发
    #位置参数:必须按顺序一一对应!
    #默认参数:必须在位置参数后面
    #动态参数:*args ----接收在调用时传过来的多余的所有位置参数,以元组形式输出
    **kwargs-----接收在调用时传过来的多余的所有关键字参数,放在一个字典里
    形参摆放顺序:a,b,*args,sex='abc',**kwargs--------位置参数,动态参数,默认参数,动态参数
    关键字参数与默认参数:如果不传会有个默认值,传了会覆盖原先的值。

    4 函数的聚合与打散
    #函数的定义中 *聚合功能,将实参所有位置参数聚合在一个元组里面。**则将实参中关键字参数聚合在一个字典里面
    def funcl(*args,**kwargs):
    print(args)
    print(kwargs)
    l1 = [1,2,3,4]
    l2 = ['xyn','abc',4]
    l3 = (11,22,33)
    #函数的执行中,前面加*具有打散功能。例如*l1 = 1,2,3,4
    funcl(*l1,*l2,*l3)
    # 运行结果
    # (1, 2, 3, 4, 'xyn', 'abc', 4, 11, 22, 33)
    # {}

    # dic1 = {'name1':'alex'}
    # dic2 = {'name2':'xyn'}
    # funcl(dic1,dic2)
    #运行结果
    #({'name1': 'alex'}, {'name2': 'xyn'})
    #{}
    #funcl(**dic1,**dic2)
    #运行结果
    # ()
    # {'name1': 'alex', 'name2': 'xyn'}


    5 课堂练习:1将大的数打印出来
    # def max(a,b):
    # if a > b:
    # return a
    # else:
    # return b
    # print(max(100,102))-----此语句进行两部:首先max()执行函数,并将结果返回给max(),然后print值。

    # def max(a,b):return a if a > b else b
    # print(max(100,102))

    2 统计姓名性别# def register(name,sex='男'):----不传以默认定,传的话被覆盖。
    #     with open('register',encoding='utf-8',mode='a') as f1:
    # f1.write('{} {}\n'.format(name,sex))
    #
    # while True:
    # username = input('请输入姓名:/q 或者 Q 退出')
    # if username.upper() == 'Q':break
    # if 'a' in username:
    # sex = input('请输入性别:')
    # register(username,sex)
    # else:
    # register(username)

     
  • 相关阅读:
    poj1286 polya计数法
    hdu 2079 普通母函数的应用
    hdu1521 指数型母函数 求解多重集排列数
    hdu1398 普通母函数的应用 解决多重集组合问题
    hdu1085 多重部分和问题
    二部图最大匹配问题的求解 匈牙利算法
    tarjan算法
    Prim算法
    无向图连通图(割)
    无向图找桥
  • 原文地址:https://www.cnblogs.com/xyn123/p/8848969.html
Copyright © 2020-2023  润新知