day 5 正则 模块与包

协程函数

  首先要明确协程函数特点:yield变为表达式,可以通过g.send(value)传值,用send传值时协程函数需要初始化,也可以说是生成器函数的一种

  yield的另一种用法:
  1、yield的语句形式: yield 1(生成器)
  2、yield的表达式形式: x=yield (协程函数)

  x=yield  g.send(‘1111‘),先把1111传给yield,由yield赋值给x  然后再往下执行,直到再次碰到yield,然后把yield后的返回值返回
>>> def func():
     n = 0
     while 1:
      n = yield n #可以通过send函数向n赋值

 f = func()
 f.next() # 默认情况下n为0
0
 f.send(1) #n赋值1
1
 f.send(2)
匿名函数f=lambda x,y:x+yprint(f)print(f(1,2))lambda x,y:x+ymax,min,zip,sorted的用法
salaries={
‘egon‘:3000,
‘alex‘:100000000,
‘wupeiqi‘:10000,
‘yuanhao‘:2000
}
print(max(salaries))
res=zip(salaries.values(),salaries.keys())
# print(list(res))
print(max(res))
def func(k):
    return salaries[k]
print(max(salaries,key=func))
print(max(salaries,key=lambda k:salaries[k]))
print(min(salaries,key=lambda k:salaries[k]))
print(sorted(salaries)) #默认的排序结果是从小到到
print(sorted(salaries,key=lambda x:salaries[x])) #默认的排序结果是从小到到
print(sorted(salaries,key=lambda x:salaries[x],reverse=True)) #默认的排序结果是从小到到

  内置函数

    map    reduce    filter
def func(f):
    return f

res=func(max)
print(res)

l=[‘alex‘,‘wupeiqi‘,‘yuanhao‘]

res=map(lambda x:x+‘_SB‘,l)

print(res)

print(list(res))

nums=(2,4,9,10)

res1=map(lambda x:x**2,nums)

print(list(res1))

from functools import reduce

l=[1,2,3,4,5]
print(reduce(lambda x,y:x+y,l,10))

l=[‘alex_SB‘,‘wupeiqi_SB‘,‘yuanhao_SB‘,‘egon‘]

res=filter(lambda x:x.endswith(‘SB‘),l)
print(res)
print(list(res))

  递归调用:在函数调用过程中,直接或间接地调用了函数本身,这就是函数的递归调用

age(n)=age(n-1)+2       n>1
age(n)=18    n=1

def age(n):
    if n == 1:
        return 18
    return age(n-1)+2

print(age(5))

  二分法

def search(find_num,seq):
    if len(seq) == 0:
        print(‘not exists‘)
        return
    mid_index=len(seq)//2
    mid_num=seq[mid_index]
    print(seq,mid_num)
    if find_num > mid_num:
        #in the right
        seq=seq[mid_index+1:]
        search(find_num,seq)
    elif find_num < mid_num:
        #in the left
        seq=seq[:mid_index]
        search(find_num,seq)
    else:
        print(‘find it‘)

search(77,l)
search(72,l)
search(-100000,l)

  模块与包

  import导入模块干的事:  1.产生新的名称空间  2.以新建的名称空间为全局名称空间,执行文件的代码  3.拿到一个模块名spam,指向spam.py产生的名称空间
import time
import spam
time.sleep(10)
import spam as aa
print(aa.money)
  from ... import ...  from spam import money,read1,read2,change  1.产生新的名称空间  2.以新建的名称空间为全局名称空间,执行文件的代码  3.直接拿到就是spam.py产生的名称空间中名字  
from spam import money
print(money)
  from ... import ...  优点:方便,不用加前缀  缺点:容易跟当前文件的名称空间冲突
  模块的搜索顺序:  内存---->内置------->sys.path
  包是一种通过使用‘.模块名’来组织python模块名称空间的方式

  1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警觉:这是关于包才有的导入语法

  2. 包是目录级的(文件夹级),文件夹是用来组成py文件(包的本质就是一个包含__init__.py文件的目录)

  3. import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件

  注意事项

  1.关于包相关的导入语句也分为import和from ... import ...两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时带点 的,点的左边都必须是一个包,否则非法。可以带有一连串的点,如item.subitem.subsubitem,但都必须遵循这个原则。

  2.对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。

  3.对比import item 和from item import name的应用场景:
    如果我们想直接使用name那必须使用后者。

  需要注意的是from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误,如:from a import b.c是错误语法

  __init__.py文件

  不管是哪种方式,只要是第一次导入包或者是包的任何其他部分,都会依次执行包下的__init__.py文件(我们可以在每个包的文件内都打印一行内容来验证一下),这个文件可以为空,但是也可以存放一些初始化包的代码。  

  绝对导入和相对导入

  我们的最顶级包glance是写给别人用的,然后在glance包内部也会有彼此之间互相导入的需求,这时候就有绝对导入和相对导入两种方式:

  绝对导入:以glance作为起始

  相对导入:用.或者..的方式最为起始(只能在一个包中使用,不能用于不同目录内)

  正则简单介绍

  正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。

  

  

import re

line = "Cats are smarter than dogs"

matchObj = re.match( r‘(.*) are (.*?) .*‘, line, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

  

时间: 2024-08-27 15:44:52

day 5 正则 模块与包的相关文章

19 Python 正则模块和正则表达式

什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.py文件) 2 已被编译为共享库或DLL的C或C++扩展 3 包好一组模块的包 4 使用C编写并链接到python解释器的内置模块 为何要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python

PYTHON常用模块和包

模块 '''模块:一系列功能的集合体?常见的四种模块:1.使用python编写的.py文件2.把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)3.使用C编写并链接到python解释器的内置模块4.已被编译为共享库或DLL的C或C++扩展''' 模块的搜索路径 '''搜索顺序:内存 => 内置模块 => sys.path?1.导入模块会优先在内存中查找2.内存中没有被加载的话,再去查找内置模块3.还没有查找到,就根据sys.path中的路径顺序逐一

Python之常用模块(六)re模块与logging模块和包

5.10 re模块 re(正则)简介:正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. re元字符 元字符 匹配内容 \w 匹配字母(包含中文)或数字或下划线 \W 匹配非字母(包含中文)或数字或下划线 \s 匹配任意的空白符 \S 匹配任意非空白符 \d 匹配数字 \D 匹配非数字 \A 从字符串开头匹配 \n 匹配一个换行符 \t 匹配一个制表符 ^ 匹配字符串的开始 $ 匹配字符串的结尾 . 匹配任意字符,除了

python_way day6 反射,正则 模块

python_way day6 反射 正则 模块 一.模块: 1.sys & os: 我们在写项目的时候,经常遇到模块互相调用的情况,但是在不同的模块下我们通过什么去可以找到这些模块的位置哪? 那就是环境变量! 如何查看当前的环境变量?a = sys.pathprint(a)['D:\\资料\\python\\oldboy13\\jobs\\day5\\conf', 'D:\\资料\\python\\python35\\lib\\site-packages\\requests-2.10.0-py

2015/9/15 Python基础(12):模块和包

模块是用来组织 Python 代码的方法,而包则是用来组织模块的. 当代码量很大时,我们一般会把代码分成几个有组织的代码段,然后每个代码段之间有一定的联系.代码单之间是共享的,所以Python允许调入一个模块,允许使用其他模块的属性利用之前的工作成果,实现代码重用.那些自我包含并且有组织的代码片段就是模块(module),将其他模块中属性附加到你的模块中的操作较导入(import) 模块是逻辑上的说法,而它们在物理层是一个个独立的文件,模块的文件名就是模块的名字加拓展名.py.与其他可以导入类的

python 深入模块和包

模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本的方式执行,它们也会运行.) 每个模块都有自己的私有符号表, 模块内定义的所有函数用其作为全局符号表. 被导入的模块的名字放在导入模块的全局符号表中. import 语句的一个变体直接从被导入的模块中导入名字到导入模块的符号表中. 例如: >>> >>> from fibo

Python 安装第三方库,模块和包的安装方法

在python中已经内置了很多的有用的模块,只要安装了python的开发工具,这些模块就可以立刻使用了.而在实际python开发的过程中,除了python内置的模块外,python还有大量的第三方的库.模块和包. 常用的第三模块都会在python的PyPI - the Python Package Index上进行注册,只要找到对应模块的名字就可以进行安装了. 由于最近需要通过python来创建PDF文档,但是由于python的内置模块中相关的模块,所以需要使用第三方的reportlab库来创建

Python的模块与包如何使用?

本文和大家分享的主要是python模块与包相关内容,一起来看看吧,希望对大家学习python有所帮助. 一.Python 模块简介 在开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在 Python 中,一个 .py 文件就称之为一个模块(Module). 之前我们学习过函数,知道函数是实现一项或多项功能的一段程序 .其实模

Python之路-模块和包

一.模块 1.定义:包含了Python定义和声明的文件,文件名就是模块名字加上.py后缀. import加载的模块分为四个类别: 1.Python编写的代码(.py文件) 2.已经被编译为共享库或DLL的C或C++扩展 3.包好一组模块的包 4.使用C编写并链接到Python解释器的内置模块 2. 导入模块执行过程: 1.执行源文件 2.产生一个源文件的全局名称空间 3.在当前位置拿到一个模块名,指向源文件的产生的名称空间. 3.导入模块的二种只用方式: 1.import导入模块示例: 2.fr