zoukankan      html  css  js  c++  java
  • CSIC_716_20191115【内置函数、递归、模块、软件开发规范】

    内置函数

    map

    map映射:语法结构(函数对象,可迭代对象)

    依次从可迭代对象中取值,然后给函数做运算,再依次返回运算的结果.

    ss = map(lambda x: x + x, [1, 2, 3])
    print(ss)
    try:
        print(ss.__next__())  # 2
        print(ss.__next__())  # 4
        print(ss.__next__())  # 6
        print(ss.__next__())
    except StopIteration:
        print('完成')
    ----------------------------------------------------------
    ss = map(lambda x, y: x + y, [1, 2, 3], [4, 5, 6])
    print(ss)
    try:
        print(ss.__next__())  # 5
        print(ss.__next__())  # 7
        print(ss.__next__())  # 9
        print(ss.__next__())
    except StopIteration:
        print('完成')
    

    reduce

    reduce: 合并(函数对象,可迭代对象,初始值)

    从可迭代对象中取出前两个值,传入函数进行运算,再与可迭代对象中的第三个值进行运算。

    注意:上述操作均从初始值开始。

    from functools import reduce
    
    sum1 = reduce(lambda x, y: x + y, range(1, 101), 1000)
    print(sum1)  # 6050
    
    multi = reduce(lambda x, y: x * y, range(1, 5))
    print(multi)  # 24
    
    multi = reduce(lambda x, y: x * y, range(1, 5), 5)
    print(multi)  # 120
    

    filter

    filter:语法结构:filter(函数对象,可迭代对象)

    从可迭代对象中取值,放到函数中进行判断,如果返回结果为true,取值加入到filter返回的对象中。

    def func1(x):
        if x > 'a':
            return True
        else:
            return False
    
    
    ss = filter(func1, ['Bs', 'A', 'start', 'im', 'key'])
    try:
        print(ss.__next__())
        print(ss.__next__())
        print(ss.__next__())
        print(ss.__next__())
    except StopIteration:
        print('完成')
    
    ss = filter(lambda x: x.startswith('i'), ['Bs', 'A','start', 'im', 'key'])
    

    递归

    递归是函数直接或者间接调用自身,是一种函数嵌套的形式。

    如果不给边界值,程序会无线循环,造成内存溢出。

    python中递归深度默认设置为1000。

    可以通过sys.getrecursionlimit( )查看,也可以通过sys.setrecursionlimit( ) 设定递归深度。

    # _*_ coding: gbk _*_
    # @Author: Wonder
    import sys
    print(sys.getrecursionlimit())  #1000次数
    sys.setrecursionlimit(1000)  # 设定最大递归次数1000,此处的值可以根据电脑修改
    

    数学概念 已知f(0)=1, f(n) = f(n-1)+2 ,求f(5)的值,这是一则递归的表达式

    用函数表达为

    def f(n)
    	if n==0
        	return 1
        return f(n-1)+2
    
    f(5)
    

    递归有两个过程,首先是由外到内层层找值(回溯),找到之后再由内到外层层返回(递推)。

    模块

    package

    python中的包package,本质是一个有__ init__.py的文件夹。

    package的作用:用于存放模块,可以更方便的管理模块。

    模块

    什么是模块

    模块是一系列功能的结合体,本质上是一个.py文件。

    模块的三种来源:

    1、python内置的模块 2、第三方的模块 3、自己编写的模块

    模块的四种表现形式:

    1、使用python编写的.py文件。 2、编译后的共享DLL文件(库文件),c和c++的库。 3、包含__ init__.py的一组.py文件。 4、python解释器下的py文件。

    如何创建编写并引用模块:

    1、自己编写.py文件作为模块。 2、通过import关键字导入模块名,注意:在一个文件中多次import同一个模块不会有任何影响,一旦第一条import语句执行成功后,就会将模块加载到内存,后续的重名导入不会有任何作用。

    模块的导入方式

    import 模块名 as 模块别名

    import time as t
    

    也可以使用 from 包/模块名 import 模块/函数/变量/类

    from functools import wraps 
    

    导入的过程中极有可能发生循环导入的情况,类似于递归没有终止值。

    此时可以根据Python的执行特点,调整import语句的顺序,提供循环导入的终止值

    还可将import语句写进函数,在用到该函数时执行导入,本质上还是提供了循环导入的终止值。

    模块在导入的时候发生的事情:

    先执行当前的执行文件,在内存中开辟执行文件的名称空间

    当执行到import语句时,开辟模块的名称空间,并将模块名称空间加载到内存,

    再将模块的名称空间加载到内存。

    软件开发目录规范

    在写新项目是,都要新建一个项目工程和文件夹,要将项目文件夹作为项目根目录

    -conf 配置

    -core核心业务代码

    -interface/api 接口

    -db 文件数据

    -lib 公共功能文件

    -log 日志

    -bin 启动目录

    -readme.txt

  • 相关阅读:
    POJ 3630
    Codeforces Round #219 (Div. 2) D题
    Codeforces Round #232 (Div. 2) On Sum of Fractions
    Codeforces Round #232 (Div. 2) C
    撸呀撸的左手(KMP+DP)
    hdu poj KMP简单题目总结
    LCT总结
    bzoj1019 [SHOI2008]汉诺塔
    NOIP2016总结
    p1199八数码问题
  • 原文地址:https://www.cnblogs.com/csic716/p/11867949.html
Copyright © 2011-2022 走看看