python导入包的输入法_python 模块和包的导入

http://www.cnblogs.com/linhaifeng/articles/6379069.html

1,模块

开源模块

https://pypi.python.org/pypi

pip/ easy_install

安装

python setup.py build

python setup.py install

pip install xxxx

添加环境变量

import os,sys

print (os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))

base_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

sys.path.append(base_dir)

import 模块过程

import 此时做了三件事

1.为源文件(spam模块)创建新的名称空间,

在spam中定义的函数和方法 若是使用到了global时访问的

就是这个名称空间(spam 的名称空间)

2. 在新创建的命名空间中执行模块中包含的代码

3. 创建名字spam来引用该命名空间 ,spam 就相当于变量

被导入模块有独立的名称空间

每个模块都是一个独立的名称空间,

定义在这个模块中的函数,

把这个模块的名称空间当做全局名称空间,

这样我们在编写自己的模块时,

就不用担心我们定义在自己模块中全局变量会在被导入时,

与使用者的全局变量冲突

4. 导入模块的方式

import module

from module.xx.xx import xx

from module.xx.xx import xx as rename

from module.xx.xx import *   # 不推荐使用

# from xxx import xxx

# 会和本文件里面的变量冲突,

# 如果本文件里面和模块里面都有,优先找本文件里面的变量,再去模块里面的

# 当前位置直接使用read1和read2就好了,执行时,仍然以spam.py文件全局名称空间

# 导入的方法在执行时,始终是以源文件为准的

# 如果当前有重名read1或者read2,那么会有覆盖效果

from spam import read1 as read

# 多行导入

from spam import (read1,

read2,

money)

"""

[guazhang@dhcp-12-129 aa]$ tree

.

├── bb

│   ├── cc

│   │   └── dd.py

│   └── ee.py

├── ff.py

└── test_module.py

总结

首先要先把aa 添加到环境变量里面。

aa已经添加到环境变量里面了,那么在aa 里面的文件或文件夹都可以直接导入,

如果是文件夹,那么就用 from ... import ... 方式, import 后面可以是文件也可以是文件里面的功能

如果import 后面是文件,调用里面的功能就要带上文件名,比如

f1 是函数名,dd 是包含f1的文件 , bb 是aa下面的文件夹

from bb.cc.dd import f1

f1()

from bb.cc import dd

dd.f1()

from ff import f1 # ff 是aa 下面的文件,包含f1 功能

f1()

当用的是python3 解释器的时候,文件夹里面没有__init__.py 也不会报错,会自动帮你补上

pyton2 就需要__init__.py 。

"""

import os,sys

print(os.path.dirname(__file__))

sys.path.append(os.path.dirname(__file__))

# /home/guazhang/PycharmProjects/python19/day4/模块/aa 添加到环境变量

def f1():

print("from local")

from bb.ee import f1

f1()

from ff import f1

f1()

from bb.cc.dd import f1

f1()

from bb.cc import dd

dd.f1()

# from aa.ff import f1

# f1()

"""

/home/guazhang/PycharmProjects/python19/day4/模块/aa

from cc

from bb

spam模块:

spam模块:

"""

模块和脚本的关系

"""

http://www.cnblogs.com/linhaifeng/articles/6384466.html

http://www.cnblogs.com/linhaifeng/articles/6379069.html

如果s模块中的名字前加_,即 _money,则from spam import *,则_money不能被导入

我们自定义的模块名不应该与系统内置模块重名

把模块当做脚本执行

我们可以通过模块的全局变量__name__来查看模块名:

当做脚本运行:

__name__ 等于'__main__'

当做模块导入:

__name__=

作用:用来控制.py文件在不同的应用场景下执行不同的逻辑

if __name__ == '__main__': # 当成脚本的形式去执行

"""

模块搜索路径

"""

模块搜索路进

模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块

python解释器在启动时会自动加载一些模块到内存中,可以使用sys.modules查看

搜索路径:

当一个命名为spam的模块被导入时

解释器首先会从内建模块中寻找该名字

找不到,则去sys.path中找该名字

sys.path从以下位置初始化

1 执行文件所在的当前目录

2 PTYHONPATH(包含一系列目录名,与shell变量PATH语法一样)

3 依赖安装时默认指定的

"""

# 包 ,是一个里面有__init__.py 的文件夹

环境变量是以执行文件为准,不能操作包里面的目录结构

#具体的:包就是一个包含有__init__.py文件的文件夹,

所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来

#需要强调的是:

1. 在python3中,即使包下没有__init__.py文件,

import 包仍然不会报错,而在python2中

包下一定要有该文件,否则import 包报错

2. 创建包的目的不是为了运行,而是被导入使用,记住,

包只是模块的一种形式而已,包的本质就是一种模块

#1.关于包相关的导入语句也分为import和from ... import ...两种,

但是无论哪种,无论在什么位置,

在导入时都必须遵循一个原则:凡是在导入时带点的,

点的左边都必须是一个包,否则非法。

可以带有一连串的点,如item.subitem.subsubitem,

但都必须遵循这个原则。但对于导入后,在使用时就没有这种限制了,

点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。

#2、import导入文件时,产生名称空间中的名字来源于文件,

import 包,产生的名称空间的名字同样来源于文件,

即包下的__init__.py,导入包本质就是在导入该文件

#3、包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间

"""

5.time 模块

6 random 模块

7. OS 模块

8. sys 模块

### 打印进度条

import sys,time

for i in range(10):

sys.stdout.write("#")

sys.stdout.flush()

time.sleep(0.3) # 进度条

sys.stdin.readline()[:-1] :打印输入的内容并删除最好一个动作

9. pickle/json .

pickle 支持的可序列的类型更多

json :支持多种语言,ruby,java

# 序列化, 字符串转到内存中

import pickle

f = open("user_acc.txt","wb")

#f.write(b"test")

#f.write("123") ## 要转化为字符串

info = {

"alex":"123",

"jon":"2222"

}

f.write(pickle.dumps(info))

f.close()

## 从内存里面反序列化, 从内存转为字符串

##字典,列表是内存里的,保存不了 。 字符串是才可以存在硬盘中

import pickle

f = open("user_acc.txt","rb")

data_from_atm = pickle.loads(f.read())

print (data_from_atm)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 包权限 子包_Java 包和访问权限

一开始学Java,就用的eclipse。对包的印象就是右键新建而已。至于导入包,等报错了再导。被IDE奴役的傻孩子。现在就清晰地梳理一遍吧~本文基于Mars老师的Java4Android视频。包的作用软件包为Java类提供了命名空间。根据包名,会生成相应的文件夹…

python动态表情包下载_Python从eif中导出qq表情的gif图片

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#!/usr/bin/pythonTestfrom sys import stdoutfrom time import sleepffile(t.eif,rb)resultDirresultreadBytesreadingBytetempArr3[,,]tempArr8[,,,,,,,]#End Of Gif In EifstartFlag[\x47,\x49,\x46]endFlag1list(49454E44AE426…

java中dll在cas中不生效_java中你所不知道的CAS操作

1.CAS是什么Compare and Swap(比较并操作),由处理器架构支持,语义是如果当前值V和旧值A相同,则将当前值修改为B,如果不相同则不修改。CAS操作采用的是乐观锁技术,当多线程同时修改某个变量时只有一个成功,其…

内存条上面参数详解_为什么买内存条要看时序?别以为内存频率高性能就好

2016年开网吧买了400多根DDR4 8G内存条,一根180。2017年网吧赔了钱,我把电脑卖了,内存600一根,结果开网吧的钱赚回来了。囤内存挣回了开网吧的钱转眼间到2019年,内存就跌回了原来的价钱,200多块就又能买到D…

java了解异常_ID检测_Java入门第三季7-1简易扑克牌游戏(自定义玩家个数,玩家个数和ID异常检测)...

玩家类:package playingCardsGame;import java.util.ArrayList;import java.util.List;/** 玩家类*/public class Players {int ID;String name;List handCards;Players(int ID, String name){this.ID ID;this.name name;this.handCards new ArrayList();}}手牌类…

android 获取monkey日志_Android压力测试:monkey压力测试实战

主要分享的主题是 Android App 专项测试,通过 monkey 进行压力测试。一.测试步骤1.安装ADB2.连接被测手机和电脑3.打开CMD命令行4.输入monkey命令adb shell monkey -p your.package.name?--pct-touch 30?--ignore-crashes ?--ignore-timeouts--throttle 250?-s …

java工程怎么构造成moven_将普通java工程结构改为由maven管理的工程结构域

第一次尝试些博客记录一下自己的学习心得!1. http://maven.apache.org/download.cgi 这是maven 的下载链接进入链接下载一个maven 包这是我的windows10 系统下载的版本2 . 将下载好的文件解压后放入任意位置(一般建议放到自己常用的文件夹下边)并记住该路径G:\xiangmuwar …

php mysql 聊天室_聊天室phpmysql(一)

//第一个页面 name"index1.php"include "../signup/mysql.php";$time1time();//$userid983530409;echo $n;if($n1){$useridtime();$nick"g".$userid;$last_time$userid;$sql"insert into chat_user (userid,id,last_time) values ($us…

在python中求小于100的所有合数_python输出100以内的质数与合数

__author__ Yue Qingxuan# -*- coding: utf-8 -*-#求质数p[2]for i in range(2,101):for temp in range(2,i):if i%temp0:breakprint(i,i,temp,temp)elif tempi-1:p.append(i)print(\n以下打印质数:)print(p)#求合数list[]for i in range (4,100):for j in range(2…

python 函数进度条怎么_刷新你对进度条的认识,用python写出不一样的进度条

1 简介在日常工作中,我们运行程序经常会用到「循环迭代」,假如这个执行时间很短,那倒也无所谓。但是有一些过程耗时蛮长的,给其加上「进度条」(progress bar),可以帮我们监控代码执行进度,以及过程出现异常…

acer软件保护卡清除工具clear_使用Windows 10内置工具释放硬盘空间的最佳方法

如果您的磁盘空间不足,可以使用 Windows 10 中内置的工具来清理垃圾文件、应用程序和游戏等,以优化硬盘空间。使用这些清理工具不仅能够释放空间,而且还有助于提高系统性能。下面小编就为大家汇总介绍 几种种最佳快捷方法,来释放 …

python中astr是啥_python的基本操作

该来的还是来了,早先某个大胖子建议我写关于python基本操作的博客,当时没上心,现在来补点账,也姑且算是对往昔一点回忆吧。对了,那胖子,姓王,所幸不住我隔壁。闲言少叙,python和pych…

python字典popitem和pop_python字典popitem_python 字典之pop() and popitem()

字典删除方法:pop()和popitem(),这两种种方法的作用不同,操作方法及返回值都不相同。pop (key[,default])其中,key是必选参数,必须给出,default是可选参数,可以不给出。如果键值key在字典中存在…

python20个常用语法_这20个常规Python语法你都搞明白了吗?

原标题:这20个常规Python语法你都搞明白了吗?还没关注?Python简单易学,但又博大精深。许多人号称精通Python,却不会写Pythonic的代码,对很多常用包的使用也并不熟悉。学海无涯,我们先来了解一些…

java ftp上传超时_有关java的ftp上传文件时断网的问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我有一个java的ftp程序,他既是客户端又是服务端,我把程序放在两台电脑上运行,computer1和computer2,在computer1为文件上传端,computer2为文件的接收端,在comp…

在python中用递归的方法编程_python基础之函数,递归,内置函数

阅读目录一 数学定义的函数与python中的函数初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把…

java spring 多数据库_java – 使用多个数据源/数据库的Spring-Hibernate

我正在开发一个使用Spring MVC 3和Hibernate的Web应用程序我想为我的Web应用程序使用2个数据源MySql和Oracle数据库,我已经阅读了很多关于“spring-hibernate multiple datasource / database”的教程和问题解决方法例如 :等等.但是当我每次运行它时,配置只读取我的…

canal mysql从库_大厂如何基于binlog解决多机房同步mysql数据(一)?

目录前言单一IDC多IDCmysql主从同步数据同步方案多机房mysql同步方案优化同步方案同步方案的问题如何解决重复插入对于DDL语句处理如何解决唯一索引冲突如何解决数据回环问题总结前言小伙伴们是否经常听说多机房部署,异地容灾?什么两地3中心,…

java语言怎么建立窗口awt,java.awt.Frame类:创建窗口

创建窗口是 AWT 编程的第一步,窗口是所有组件和面板的容器。在 Java AWT 中,我们使用 Frame 类来创建窗口。Frame 中文字意是“框架”,它的主要功能是建立窗口。AWT 建立窗口的步骤如下:设计 Frame 类对象,建立空白窗口…

sql数据导入错误代码: 0x80004005_SQL入门第八关 项目实战

不知不觉,学SQL已经一个多月了,每天下班学一个小时,有空做做练习题。从之前的焦虑到现在已经有了一定的自信了,猴子的课程真的很适合小白入门,尤其是SQL学习群里,助教老师很尽责,每个问题都会解…