Python之模块导入
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之模块导入的更多相关文章
- [python]关于在python中模块导入问题追加总结
[背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...
- python random模块导入及用法
random是程序随机数,很多地方用到,验证码,图片上传的图片名称等,下面说说python random模块导入及用法 1,模块导入 import random 2,random用法 random.r ...
- python Calendar 模块导入及用法
Calendar 是python 日历模块,此模块的函数都是日历相关的,例如打印某月的字符月历,星期之类的模块,下面剖析python Calendar 模块导入及用法. 1,python导入日历模块 ...
- python中模块导入问题(已解决)
想在python中导入request包: 无此模块,于是先安装requests包: 但是提示"Requirement already satisfied".在提示的相应目录里,找到 ...
- python自定义模块导入方法,文件夹,包的区别
python模块导入,网上介绍的资料很多,方法也众说纷纭.根据自己的实践,感觉这个方法最简单直接,而且可以与主流的python ide生成的工程是一样的. 规则只有三条 1. 严格区分包和文 ...
- python的模块导入机制
在python中用import或者from...import来导入相应的模块. 模块(Module)其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模 ...
- python之模块导入和包
一.何为模块 1.一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 2.模块目的和函数,对象等一样,是为了代码的复用性而存在的.即一个py程序写了很多功能,也可 ...
- python之模块导入和重载
模块导入和重载 模块导入通过import语句实现,但是在同一次会话中只运行一次. 若想要再次运行文件,调用imp标准库中的reload函数: >>> from imp import ...
- python的模块导入问题
以下内容参考:http://www.xinxingjiaocheng.com/online/item/7/89 1.给模块起个别名 如果一个模块的名字很长很长,就像这样comput_the_value ...
随机推荐
- android9.0适配HTTPS:not permitted by network security policy'
app功能接口正常,其他手机运行OK,但是在Android9.0的手机上报错 CLEARTEXT communication to 192.168.1.xx not permitted by netw ...
- JDK中Unsafe类详解
Java中Unsafe类详解 在openjdk8下看Unsafe源码 浅析Java中的原子操作 Java并发编程之LockSupport http://hg.openjdk.java.net/jdk7 ...
- perl 里面如何写出阅读友好的代码提示
在我们使用别人写好的程序时,经常会使用-h 之类的东西查看一下简单的帮助手册或者说明信息: 对于perl 语言而言,写起来简单,经常随手一写,解决了当时的问题,但是过几天去看,你都不知道这个脚本该怎么 ...
- Http url MVC Request Query Form 传参专贴
一.工具区 [参考]postman中 form-data.x-www-form-urlencoded.raw.binary的区别--转 二..net MVC 三..net WebForm 四.Java ...
- vscode c++ 编译生成后,调试时无法命中断点
//test.cpp #include <stdio.h> ; void print_line(char *str) { if (str != NULL) printf("%s\ ...
- Android remount命令的两种写法
不同系统的参数格式可能不一样,而且可能没有--help打印,记录一下: mount -o remount -rw /system mount -o remount,rw /system
- 九、Sql Server 基础培训《进度9-复杂查询练习》(实际操作)
知识点: 复杂查询1:统计全校有多少个男生.有多少个女生? 写法1(分组): select sex as 性别,count(*) as 人数 from student group by sex 写法2 ...
- MakeFile 详解
最近在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出 ...
- Dagger2 导入项目
导入分为两步: 第一步: 在Project build.gradle 文件中加入: dependencies { // Dagger2 第一步classpath 'com.neenbedankt.gr ...
- Java设计模式系列 — 构造器模式
想象下你有一个类,像下图所示有许多属性.假设你想让你的类不可变(顺便说一下,除非有一个好的理由不这样做,否则你应该坚持.但是我们会以另一种方式来达到要求.) public class User { p ...