Python之yaml包和模块命名空间探索

现在越来越多的开源软件在配置文件中都使用了YAML格式,这种格式文件去除了引号以及各种括号,所以在Python中处理yaml文件就成为了常态,而且也可以当做参数集,在pytest中直接读取,然后使用,Python自带的包模块名称如下

from ruamel import yaml,这个就是用来处理
  1. 这个可以直接导入一个yaml文件,转换为json格式的Python对象,也可以把一个Python的元组或者字典,直接写入一个yaml文件中

比如写入的语法格式如下:

data={'name': '李四', 'age': 22, 'sex': '男', 'interest': {'兴趣1': '爬山', '兴趣2': '音乐'}, 'skill': [{'语言': 'Python', '时间': '2年'}], 'exam': [{'subject': '高级程序员', 'score': 50}]}’

with open(r'd:\10\10.2.yaml', mode='w', encoding="utf-8") as file:
    yaml.dump(data, file)#这个就是把一个dict写入到一个文件,而且写入成功后,Python会负责把文件10.2.yaml给关闭。这个是with open()顺带就完成的事情

2、文件的导入写法如下:

from ruamel.yaml import YAML
yaml=YAML(typ='safe')
with open(r'd:\10\10.1.yml',encoding="utf-8") as file:
data=yaml.load(file)
print(data)

Python的模块导入方式直接import和from的区别

  1. 使用import modlue直接导入时,会直接创建一个新的全局空间,使用模块内部的变量或者名称都是用modlue.name1的方式来引用,
  2. 使用from modlue import name1 则会可以在导入模块中直接使用name1,但是只能使用name1,其他name2或者更多的内容不能使用,同时常见的modlue可以是一个.py 文件,也可以是一个包目录,然后导入这个包目录下的具体模块,如下图:

from pkg.hook.pineapple import hook as model_hook_pineapple 

from pkg.hook.mysql import hook as module_hook_mysql

具体的目录详情如下:

对比import my_module,会将源文件的名称空间'my_module'带到当前名称空间中,使用时必须是my_module.名字的方式

而from 语句相当于import,也会创建新的名称空间,但是将my_module中的名字直接导入到当前的名称空间中,在当前名称空间中,直接使用名字就可以了。。。。。。这就是Python强大的名字空间概念

3、as 关键词的作用就是为为模块名起别名,为模块内的函数起别名,相当于m1=1;m2=m1 

4、如果一个py文件中多次导入同一个模块,默认只导入一次,导入过一次后,此后遇到同一个模块的导入,都会跳过

5、同一个空间内如果出现重名的现象那么会有覆盖效果,比如第一个模块my_module中定义的monkey变量,然后在main.py 中导入from my_module import monkey 

次数main.py中如果再定义了一个monkey,则在执行main.py时,模块中的monkey变量直接被覆盖,只用调用my_module内部的用到monkey的函数,才能访问到原始的值,在main.py中使用的一致都是新定义的变量

6、所有类内部定义的以__开头的变量都私有变量,已__开头的方法也是私有方法,不能用from 模块 import 类名.变量   的方式导入到其他文件中使用的,最低导入的界别为一个类、或者模块中单独定义的变量和方法,不能单独导入一个一个类中的变量和方法,

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值