Python模块与列表推倒式

- .path 查看路径
- __name__ 判断时在本类执行还是被引入执行
- tree 树形结构
- touch __init__.py 创建文件
_ _import__("")动态导包
1. 模块的介绍:为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块
使用模块的好处
1、大大提高了代码的可维护性我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
2、使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中
 在Python中用关键字import
from…import导入某个模块的函数
有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以用下面方法实现:
from 模块名 import 函数名1,函数名2…
.from … import *把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:from modname import *(可能被覆盖)
注意:
通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会 覆盖前一次引入。
Import time as tt使用as起别名当引入的模块名较长的时候可以起别名
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
1.当前目录
2.如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
3.如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
 实验模块把sendmsg.py添加python环境变量中。。如果我们把模块sendmsg.py
放在/usr/local/lib/python3.5/dist-packages目录下,以后我们使用python3就可以在任何地方直接使用sendmsg.py模块了
1. 定义自己的模块
在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。比如有这样一个文件test.py,在test.py中定义了函数add。
2. 调用自己定义的模块
那么在其他文件中就可以先import test,然后通过test.add(a,b)test.calc_2_num(a,b,opt)和来调用了,当然也可以通过from test import add来引入。
可以根据_if_name__="__main__"的结果能够判断出,是直接执行的python脚本还是被引入执行的,从而能够有选择性的执行测试代码.

:包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py文件,那么这个文件夹就称之为包。
#__init__.py中内容是通过:包名.函数名()
方式一:如果要是有包的情况下,导入的时候就要:包名.模块名
特点:每次调用的时候,必须包名.模块名.函数名()比较麻烦
方式二:from 包名 import*表示导入包中所有的内容.为了确保能将msg作为包来去使用,必须在msg文件夹中定义一个__init__.py文件。。可以在__init__.py文件中编写内容,在这个文件中编写语句,当导入时,这些语句就会被执行
__init__.py文件 除了能够让外界导入的认为msg是包,定义__init__.py,还需要在__init__.py中添加需要暴露"模块名"   模块名的暴露是通过:__all__=["模块1","模块2",...]引用时只能引用包里暴露的文件,__all__没有展示的则不能使用。
__all__  要想隐藏模块中一些内容,可以__all__,但是也要明白__all__在from...import ...场景下才会起作用的。_init__.py控制着包的导入行为
#方式三:
from msg import sendmsg,recvmsg
 __all__=["sendmsg","recvmsg"]
 打包模块
编辑setup.py文件
包的里面所需要写的东西py_modules需指明所需包含的py文件
from distutils.core import setup
setup(name="atguigu_msg", version="1.0", description="硅谷信息系统", author="atguigu", py_modules=['msg.sendmsg', 'msg.recvmsg', 'msg.money.msgmoney'])
3. 构建模块
python setup.py build
4. 生成发布压缩包
python setup.py sdist

打包后,生成最终发布压缩包atguigu_msg-1.0.tar.gz , 目录结构  解压tar -zxvf xxx.tar.gz 

执行安装命令sudo python3 setup.py install

注意:
如果在install的时候,执行目录安装,可以使用python setup.py install --prefix=安装路径
在程序中,使用from import 即可完成对安装的模块使用
from 模块名 import 模块名或者*
1. import 搜索路径  import sys
sys.path
循环导入
只能避免不能解决,程序设计上分层,降低耦合,从整体设计上避免这种情况。导入语句放在后面需要导入时再导入,例如放在函数体内导入
Md5加密
Md5是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。
破解md5网站:http://www.cmd5.com/
import hashlib
m = hashlib.md5() 使用md5加密
str = '123'
m.update(str.encode()) #更新哈希对象以字符串参数
print(m.hexdigest()) #返回十六进制数字字符串,共计32位
使用sys.argv接收命令行传递的参数:无需通过键盘传递参数可以同过执行命令时直接传递
列表推导式所谓的列表推导式,就是指的轻量级循环创建列表。
列表推导式的应用场景numbers = [x for x in range(101)]返回是一个列表,可以用多层for循环。后面可以加入if判断
isinstance(x,str)判断当前数据是什么类型,返回值为turn或false
创建一个包含1到10(包含10)的平方的列表
sqrt = [x**2 for x in range(1,11)]
创建一个包含0到100间(包含100)能被3整除的数字列表
numbers = [x for x in range(101) if x%3 == 0]
遍历当前目录下的文件,并在把后缀为.py的放在列表中
import os
files = [f for f in os.listdir('./') if f.endswith('.py')]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值