1、 列表生成器  

l=['egg%s' %i for i in range(100) if  i>20  ]
print(l)

若将 [ ] 换成 ( ),则为生成器表达式,结果是一个迭代器

#求文件中每行字符数的最大值
with open('E:\\test.txt','r',encoding='utf-8') as f :
num=[len(line) for line in f]
print(max(num))

  


2、 模块

  • 模块就是一系列功能的集合体,一个.py文件就是一个模块
#模块导入格式

      #1、  import  模块名

       # import 模块名,模块名,模块名... (在一行导入多个模块,不推荐使用) #2、 from 模块名 import 模块中的方法或参数 #3、 from 模块名 import * (*表示模块中的所有方法或参数)

    '''
    对于第三种方法,若不想用 * 取出全部名称时,可在被导入模块中加
            __all__=['名称1','名称2','名称3','名称4',....]
       将可以被取出的名称加入该列表中
'''

#要注意命名冲突问题
  #1、后两种方法在运行时可以直接调用,不用加前缀
  #2、若是当前文件也有同名方法或参数,本地优先
  • 运行一个python文件,当首次执行到模块导入位置时:
    1. 先创造一个被导入模块的名称空间
    2. 执行该模块对应文件,将产生的名字放于该命名空间
    3. 在当前执行文件的内存空间中,创建名字来引用对应模块或参数
      • 第一种导入方法:会有一个与被导入模块的名称相同的变量名,该名称指向被导入模块的地址;

        • 第二种和第三种导入方法:与被导入模块中参数名或函数名相同的变量名,指向的是对应的地址
#1.为源文件(spam模块)创建新的名称空间,在spam中定义的函数和方法若是使用到了global时访问的就是这个名称空间。

#2.在新创建的命名空间中执行模块中包含的代码,见初始导入import spam
提示:导入模块时到底执行了什么?
In fact function definitions are also ‘statements’ that are
‘executed’; the execution of a module-level function definition
enters the function name in the module’s global symbol table.
事实上函数定义也是“被执行”的语句,模块级别函数定义的执行将函数名放
入模块全局名称空间表,用globals()可以查看 #3.创建名字spam来引用该命名空间
这个名字和变量名没什么区别,都是‘第一类的’,且使用spam.名字的方式
可以访问spam.py文件中定义的名字,spam.名字与test.py中的名字来自
两个完全不同的地方。

  

    

  • 模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次遇到入import语句时才执行(import语句是可以在程序中的任意位置使用的,且针对同一个模块很mport多次,为了防止你重复导入,python的优化手段是:第一次导入后就将模块名加载到内存了,后续的import语句仅是对已经加载到内存中的模块对象增加了一次引用,不会重新执行模块内的语句)

3、为模块起别名

# 为模块起别名

       #1、import  模块名   as    别名 

       #2、from   模块名   import   参数/函数名  as   别名

4、__name__ (供测试代码时使用) 

# __name__的值:

    if  文件被直接执行
__name__='__main__' if 文件被导入情况下执行
__name__=' 文件名 '

写模块测试时,可用 if 判断 __name__的值

当  __name__='__main__'时,执行测试代码

  当  __name__='文件名'时,该模块被导入了,不执行测试代码

if  __name__=='__main__'  :

   测试代码  

5、模块的搜索路径

  • 模块查询顺序:
    1. 内存中以加载的模块
    2. 内置模块
    3. sys.path 路径中包含的模块
  • sys.path  控制了自定义模块以及第三方模块如何查找

    sys.path 的第一个路径是当前执行文件路径,执行文件变则第一路径变

    sys.modules 查找内存中已被导入的模块

     sys.path.append(r' ...路径...  ')  往 sys.path中加入新路径  

作业:

'''
4月3号作业
''' '''
1.求文件中总共包含的字符个数?思考为何在第一次之后的哪次的n次sum求和得到的结果为0
''' with open(r'E:\\test.txt','r',encoding='utf-8') as f:
res=(len(line) for line in f)
print(res)
res=sum(res)
print(res) '''
2.思考题
'''
with open('E:\\test.txt','r',encoding='utf-8') as f:
g=(len(line) for line in f)
print(sum(g)) '''
3. 文件 shopping.txt内容如下:
mac,2000,3
lenovo,3000,10
tesla,1000000,10
chicken,200,1 求总共花了多少钱?
打印出所有商品信息,格式为
[{'name':'xxx','price':'3333','count':3},.....]
求单价大于10000的商品信息,格式同上 '''
with open(r'shopping.txt','r',encoding='utf-8')as f:
line = [line.strip('\n').split(',') for line in f]
shopping=[{'name': name,'price': price,'count': count} for name,price,count in line]
print(shopping)
# 求总共花了多少钱?
price=map(lambda x:int(x['price']) * int(x['count']),shopping)
sum_prce=sum(price)
print(sum_prce)
#求单价大于10000的商品信息
filter_shoop=filter(lambda x:int(x['price'])>10000,shopping)
print(list(filter_shoop)) '''
4、改写ATM作业,将重复用到的功能放到模块中,然后通过导入的方法使用
'''

  

"E:\Python 3.6.4\python.exe" F:/python/object/days2/day_14.py
<generator object <genexpr> at 0x00000000023001A8>
91
91
[{'name': 'mac', 'price': '2000', 'count': '3'}, {'name': 'lenovo', 'price': '3000', 'count': '10'}, {'name': 'tesla', 'price': '1000000', 'count': '10'}, {'name': 'chicken', 'price': '200', 'count': '1'}]
10036200
[{'name': 'tesla', 'price': '1000000', 'count': '10'}] Process finished with exit code 0

  

4月3日 python学习总结的更多相关文章

  1. 4月2日 python学习总结

    昨天内容回顾: 1.迭代器 可迭代对象: 只要内置有__iter__方法的都是可迭代的对象 既有__iter__,又有__next__方法 调用__iter__方法==>得到内置的迭代器对象 调 ...

  2. 4月8日 python学习总结 模块与包

    一.包 #官网解释 Packages are a way of structuring Python's module namespace by using "dotted module n ...

  3. 4月12日 python学习总结 继承和派生

    一.继承 什么是继承:   继承是一种新建类的方式,在python中支持一个子类继承多个父类   新建类称为子类或派生类   父类可以称之为基类或者超类   子类会遗传父类的属性 2.  为什么继承 ...

  4. 4月11日 python学习总结 对象与类

    1.类的定义 #类的定义 class 类名: 属性='xxx' def __init__(self): self.name='enon' self.age=18 def other_func: pas ...

  5. 5月31日 python学习总结 JavaScript概述

    JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECM ...

  6. 6月15日 python学习总结 Django模板语言相关内容

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  7. 6月11日 python学习总结 框架理论

    Web框架本质及第一个Django实例   Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web ...

  8. 5月14日 python学习总结 视图、触发器、事务、存储过程、函数、流程控制、索引

    一.视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次用的直接使用即可 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view t ...

  9. 5月9日 python学习总结 外键、表之间的关联关系、修改表、清空表内容、复制表

    一.外键foreign key    外键约束: 1.必须先创建被关联表才能创建关联表 2.插入记录时,必须先插入被关联表的记录,才能插入关联表(要用到被关联表)的记录 3.若不设置同步更新和同步删除 ...

随机推荐

  1. postman中用当前时间戳做请求的入参

    用postman做接口测试的,有些接口需要带上当前时间的时间戳作为请求的入参,postman支持这种功能吗? 答案是肯定的. 文中有使用时间戳的两种方法和postman常用的预定义变量. 例子中接口的 ...

  2. Spring5源码解析系列一——IoC容器核心类图

    基本概念梳理 IoC(Inversion of Control,控制反转)就是把原来代码里需要实现的对象创建.依赖,反转给容器来帮忙实现.我们需要创建一个容器,同时需要一种描述来让容器知道要创建的对象 ...

  3. python中生成器的两段代码

    生产者-消费者经典单线程问题 import time def consumer(name):     print("%s 准备吃包子啦!" %name)     while Tru ...

  4. Solution -「SV 2020 Round I」SA

    \(\mathcal{Description}\)   求出处 owo.   给定一个长度为 \(n\),仅包含小写字母的字符串 \(s\),问是否存在长度为 \(n\),仅包含小写字母的字符串 \( ...

  5. 走进Task(2):Task 的回调执行与 await

    目录 前言 Task.ContinueWith ContinueWith 的产物:ContinuationTask 额外的参数 回调的容器:TaskContinuation Task.Continue ...

  6. 我来教你如何将cpu使用率up起来(shell脚本[含注释])

    这个脚本是为了逃过一些资源检测的,当一些机器当前使用率偏低,会被客户要求收回,那咋办呢?使用下面的脚本,就可以留住你的机器了 假设要求cpu使用率不能低于35% 使用方法:bash up_up_up. ...

  7. Python基础—函数(Day9)

    一.函数的定义 def 关键字,定义一个函数 my_len 函数名(书写规则与变量名一样) def与函数名中间一个空格. def与函数名中间一个空格. 函数名():加冒号 函数体 my_len()#函 ...

  8. Nginx-反向代理服务器

    概述 Nginx是一款轻量级的Web服务器.反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用. 优点 nginx是多进程的,不会出现并发问题,不用加锁.一个进程出问题 ...

  9. [题解]Codeforces Round #519 - D. Mysterious Crime

    [题目] D. Mysterious Crime [描述] 有m个n排列,求一共有多少个公共子段. 数据范围:1<=n<=100000,1<=m<=10 [思路] 对于第一个排 ...

  10. 面向对象的基本特征:封装(接口 、struct、枚举、委托、匿名函数) 继承,多态。

    如何理解面向对象的基本特征:封装 我们通过接口 .struct.枚举.委托.泛型.匿名函数的去理解封装 接口 .struct.枚举.委托.泛型.匿名函数有什么区别?我们通过这些IL探究真相,案例如下: ...