import sys

#import module (.py)
import functools #名词空间 functools
print(functools) print("-------------os----------------------")
import os.path #dir-->名词空间 os;;os&path是二个py文件
print(os)
from inspect import Signature
print(Signature.__module__) #return 从哪个模块导入 print("-----------alias--------------------")
import os.path as osp #dir-->名词空间osp
print(osp) print('-----------from_import---------------')
from pathlib import Path #dir-->名词空间Path
from pathlib import * #dir-->['Path', 'PosixPath', 'PurePath', 'PurePosixPath', 'PureWindowsPath']
import pathlib as pl #导入的名词和别名是一个对象
from os.path import exists #加载初始化os,os.path ,exists加入本地名词空间并绑定
print(pl.Path,id(pl.Path))
print(Path,id(Path))
'''part1总结
找到from子句中指定的模块,加载并初始化它(注意不是导入)
import子句后先查from子句导入的模块是否具有该名称的属性,如果不是尝试导入该名称的子模块
没有找到抛出importerror异常,这个名称保存到本地名词空间中,如果有as子句,使用as子句后的名称
'''
print("------------costomize----------------")
"""
模块名就是文件名,必须符合标识符的要求,非数字开头的字母数字下划线组合
搜索顺序sys.path
"""
print("------------__name__ == __main__-----------------------")
'''
自己模块的调用执行测试,对于非主模块,测试本模块内的函数类
顶层代码没有封装,主模块使用时候没有问题,但是一旦有了新的主模块,老的主模块变成了被导入模块
由于老模块代码没有封装,一并执行了
'''
print("-------------相对导入-------------------------------------")
'''
相对导入的模块是为了package之间互相医用资源,即不能作为主函数的入口
''' print("----------------__all__-----------------------------------")
'''
#a.py
__all__ = ['x','y','_b','__c']
a = 5
_b = 6
__c = 7
x = 10
y = 20
#b.py
from b import *
import sys
print(sorted(sys.modules.keys()))
print(locals()['x'])
print(locals()['__c'])
__all__是一个列表,元素是字符串,每一个元素都是模块内的变量名,导入时,导入__all__里面的名称
访问a中的变量 就可以通过__all__的方式来访问
'''
print("----------Public 模块属性---------------------")
print(__file__) #当前文件的路径
print(__cached__) #编译后的字节码文件路径
print(__spec__) #显示模块的的规范
print(sys.path) #output 搜索路径顺序
print(__name__) #output __main__
print(__package__) #模块是包同__name__,否则。可以设置为顶级模块的空字符串
print(dir())
print(sys.modules)

Python之模块导入的更多相关文章

  1. [python]关于在python中模块导入问题追加总结

    [背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...

  2. python random模块导入及用法

    random是程序随机数,很多地方用到,验证码,图片上传的图片名称等,下面说说python random模块导入及用法 1,模块导入 import random 2,random用法 random.r ...

  3. python Calendar 模块导入及用法

    Calendar 是python 日历模块,此模块的函数都是日历相关的,例如打印某月的字符月历,星期之类的模块,下面剖析python Calendar 模块导入及用法. 1,python导入日历模块 ...

  4. python中模块导入问题(已解决)

    想在python中导入request包: 无此模块,于是先安装requests包: 但是提示"Requirement already satisfied".在提示的相应目录里,找到 ...

  5. python自定义模块导入方法,文件夹,包的区别

    python模块导入,网上介绍的资料很多,方法也众说纷纭.根据自己的实践,感觉这个方法最简单直接,而且可以与主流的python ide生成的工程是一样的. 规则只有三条 1.      严格区分包和文 ...

  6. python的模块导入机制

    在python中用import或者from...import来导入相应的模块. 模块(Module)其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模 ...

  7. python之模块导入和包

    一.何为模块 1.一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 2.模块目的和函数,对象等一样,是为了代码的复用性而存在的.即一个py程序写了很多功能,也可 ...

  8. python之模块导入和重载

    模块导入和重载 模块导入通过import语句实现,但是在同一次会话中只运行一次. 若想要再次运行文件,调用imp标准库中的reload函数: >>> from imp import ...

  9. python的模块导入问题

    以下内容参考:http://www.xinxingjiaocheng.com/online/item/7/89 1.给模块起个别名 如果一个模块的名字很长很长,就像这样comput_the_value ...

随机推荐

  1. Java Observer接口和Observable类实现观察者模式

    对于观察者模式,其实Java已经为我们提供了已有的接口和类.对于订阅者(Subscribe,观察者)Java为我们提供了一个接口,JDK源码如下: package java.util; public ...

  2. Vim替换查找

    ##一.字符的替换及撤销(Undo操作)       ###1.替换和撤销(Undo)命令       替换和Undo命令都是针对普通模式下的操作       命令 | 说明   -----|---- ...

  3. 深度学习中交叉熵和KL散度和最大似然估计之间的关系

    机器学习的面试题中经常会被问到交叉熵(cross entropy)和最大似然估计(MLE)或者KL散度有什么关系,查了一些资料发现优化这3个东西其实是等价的. 熵和交叉熵 提到交叉熵就需要了解下信息论 ...

  4. iOS - User Agent 的应用和设置

    UA在项目中的应用 给项目的webview或项目中的接口请求加一个区分,用来区别是iOS端访问.android访问还是在浏览器访问的,这时需要添加User Agent (http请求 header中的 ...

  5. git bash here右键菜单

    Windows Registry Editor Version 5.00 ; Open files[HKEY_CLASSES_ROOT\*\shell\gitbash]@="gitbash& ...

  6. UCloud 的安全秘钥 (计蒜客初赛第五场)(待解决)

    20.7% 1200ms 262144K 每个 UCloud 用户会构造一个由数字序列组成的秘钥,用于对服务器进行各种操作.作为一家安全可信的云计算平台,秘钥的安全性至关重要.因此,UCloud 每年 ...

  7. 用TreeSet生成不重复自动排序随机数组

    随机数组就是在指定长度的数组中用随机数字为每个元素赋值,常用于不确定数值的环境,如拼图游戏需要随机数组来打乱图片顺序.可是同时也存在问题,就是随机数的重复问题,这个问题常常被忽略. TreeSet类的 ...

  8. 最新版的Chrome不能设置网页编码怎么解?

    添加一个Google插件https://chrome.google.com/webstore/detail/set-character-encoding/bpojelgakakmcfmjfilgdlm ...

  9. Linux手动添加swap分区

    转自:https://blog.csdn.net/whatday/article/details/51024571 为什么需要swap 根据Redhat公司的建议,Linux系统swap分区最适合的大 ...

  10. http proxy模块参数

    http proxy模块参数 nginx功能的代理功能是是通过http proxy模块来实现的.默认在安装Nginx是已经安装了http proxy模块,可以直接使用. http模块相关参数 说明 p ...