模块与包(8)

第8章  复杂程序组织
模块:
包含函数或者类的Python程序
导入模块形式:
import 模块名
import 模块名 as 新名字      
from 模块名 import 函数名
from 模块名 import *    #导入模块中的所有代码
使用import和from导入,调用函数的不同:
使用import导入模块,模块名.函数名;使用from导入模块,直接使用函数名调用


模块位置
Windows下,默认模块的查找路径为Python的安装目录及几个子目录
Linux下木默认模块查找路径为/usr/lib、/usr/lib64及其它们的几个子目录下

指定模块的位置:
import sys
sys.path.append('E:\\module')

Python中被作为模块引用的.py文件会被编译成.pyc文件
可以收手工编译.py文件:
import py_compile
py_compile.compile('a8_2.py')

具有独立运行能力的模块
在Python中,如果程序作为模块被导入,则其__name__属性被设置为模块名。
如果程序独立运行,则其__name__属性被设置为"__main__".
因此可以通过__name__属性来判断程序的运行状态

编写程序作为模块导入,可以将模块的主要功能以实例的形式放在if语句中,可以方便测试模块是否能正常运行
形式:

if __name__=='__main__':
m_t_pr()                       #调用模块中的函数
print(name)                    #访问模块中的变量

包:有效避免名字冲突
包其实是包含__init__.py文件的目录

例:在主程序中调用handle包中的index.py模块中的hdl函数,可以使用三种方法导入:
import handle.index                        导入后调用handle.index.hdl()
from handle import index                   导入后调用index.hdl()
from handle.index import hdl               导入后调用hdl()

包中模块相互引用:
例:
grnd/
    __init__.py
    prnta\
        __init__.py
        suba.py
        sub\
            __init__.py
            sona.py
    prntb
        __init__.py
        subb.py
        subc.py

1.同一包下,subb.py要调用subc.py中代码:import subc
2.调用子包中的模块,suba.py调用sona.py中代码:from .sub import sona
3.调用同级别包中的另一模块,必须从该包的上级开始导入,subb.py调用suba.py中代码:from grnd.prnta import subc


标准库
random

random.random()              #随机生成0-1中的数
random.randint(0,10)             #随机生成0-10中的整数
random.choice((1,2,3,4))          #列表中随机返回元素
random.shuffle(alst)              #对列表alst随机乱序

日期与时间类:calender、datetime、time

time.time()   #获取初始时间至现在的秒数
datetime.datetime.now()   #获取本地的日期/时间
datetime.datetime.utcnow()   #获取当前的UTC日期/时间

转载于:https://www.cnblogs.com/MUMO/p/5749949.html

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

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

相关文章

matlab画线不同颜色_怎样画线框图才有意义

我们常轻忽身边习以为常的事物,觉得没有必要为一些看似简单又可有可无的东西浪费时间——例如线框图。虽然没必要凡事都寻根问底,但当面对复杂问题时,脚踏实地回归基本面也许才是根本解法。本文章深入介绍程序开发界面设计中,最简…

react 消息订阅-发布机制(解决兄弟组件通信问题)

消息订阅-发布机制 工具库: PubSubJS下载: npm install pubsub-js --save使用: 1)import PubSub from ‘pubsub-js’ //引入 2)PubSub.subscribe(‘delete’, function(data){ }); //订阅 3)PubSub.publish(‘delete’, data) //发布消息 App组件: import React,…

运行Myeclipse发生这事这是怎么回事,大神们

转载于:https://www.cnblogs.com/zhuh102/p/5753616.html

非零返回怎么解决_VLOOKUP如何返回多个值?

今天我来谈谈大家最熟悉的函数,也是使用频率最高的函数,基本是每天都在使用-VLOOKUP大家都知道VLOOKUP可以根据条件,查找并返回满足条件对应列的值,但是他的设定只是只能返回第一个满足条件的值如果我们要返回满足条件的多个值&am…

Fetch发送网络请求

1. 文档 https://github.github.io/fetch/https://segmentfault.com/a/1190000003810652 2. 特点 fetch: 原生函数,不再使用XmlHttpRequest对象提交ajax请求老版本浏览器可能不支持 3. 相关API GET请求 fetch(url).then(function(response) {return response.…

JSX详解React的事件绑定事件参数的传递

一、认识JSX 这段element变量的声明右侧赋值的标签语法是什么呢? 它不是一段字符串(因为没有使用引号包裹),它看起来是一段HTML原生,但是我们能在js中直接给一个变量赋值html吗?其实是不可以的&#xff0c…

剑指Offer 从尾到头打印链表

题目描述 输入一个链表,从尾到头打印链表每个节点的值。 输入描述: 输入为链表的表头 输出描述: 输出为需要打印的“新链表”的表头 思路: 用容器vector,递归到最后一个元素,push_back到dev中。 AC代码: 1 /**2 * str…

python排序元组两个元素_在python中对具有3个元素的元组列表进行排...

只需对列表进行排序;默认排序功能可以满足您的需求.比较两个元组时,将根据它们的内容对其进行排序;首先对第一个元素进行排序,如果相等,则对第二个元素进行排序,依此类推.演示:>>> L [(14, 2, 3), (1, 14, 0), (14, 1, 1), (1, 14,…

叠积木

【题目描述】 约翰和贝西在叠积木。共有30000块积木,编号为1到30000。一开始,这些积木放在地上,自然地分成N堆。贝西接受约翰的指示,把一些积木叠在另一些积木的上面。一旦两块积木相叠, 彼此就再也不会分开了&#xf…

总谐波失真计算公式_新能源汽车技术|车用轮毂电机转矩谐波协同控制策略

点击 电机与控制应用 关注我们轮毂电机因结构简单、驱动灵活的特点广泛应用于轻型电动车辆。电机运行中存在的齿槽效应、逆变器非线性效应及电流谐波等问题,导致电机电磁转矩波动,影响车辆运行的平顺性。通过电磁转矩谐波分析发现其主要成分为低阶谐波。…

React条件渲染列表渲染

一、React条件渲染 某些情况下,界面的内容会根据不同的情况显示不同的内容,或者决定是否渲染某部分内容: 在vue中,我们会通过指令来控制:比如v-if、v-show;在React中,所有的条件判断都和普通的J…

解决VirtualBox错误:“FATAL:No bootable medium found!”

VirtualBox错误:“FATAL:No bootable medium found!”  用VirtualBox安装系统出现这个错误的几率极高,因为当哥出现同样问题的时候股沟了下”FATAL:No bootable medium found!“出现很多内容,但没一个把问题解决了的…

React事件总线

通过Context主要实现的是数据的共享,但是在开发中如果有跨组件之间的事件传递,应该如何操作呢? 一、安装events 在Vue中我们可以通过Vue的实例,快速实现一个事件总线(EventBus),来完成操作&…

字符串最长公共子序列python_求解两个字符串的最长公共子序列

一,问题描述给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA二…

React中使用ref

一、如何使用ref 在React的开发模式中,通常情况下不需要、也不建议直接操作DOM原生,但是某些特殊的情况,确实需要获取到DOM进行某些操作: 管理焦点,文本选择或媒体播放;触发强制动画;集成第三方…

python合并word表格单元格_python docx模块读取word表格遇到合并单元格时的处理

python docx模块读取word表格遇到合并单元格时的处理python docx模块读取word表格遇到合并单元格时的处理python docx模块读取word表 遇到合并单元格时的处理通过docx模块,读取word里面表格,并进行修改。现在我遇到的表格是这样:里面行&#…

React中的受控组件和非受控组件

一、认识受控组件 在React中,HTML表单的处理方式和普通的DOM元素不太一样:表单元素通常会保存在一些内部的state。 比如下面的HTML表单元素: 这个处理方式是DOM默认处理HTML表单的行为,在用户点击提交时会提交到某个服务器中&…

关于div居中

margin : 100px; margin-left: auto; margin-right: auto; 这样子设置css样式就可以实现一个div居中转载于:https://www.cnblogs.com/jiangjing/p/5764820.html

JavaScrip入门-变量计算%函数

哈 <html> <body> <script>var hello"Hello ";hellohello" world!";var age1161;var age220var ottrue; document.write(helloage1);<!--Hello world!17 因为中间空两行 -->document.write(age1age2);//falsedocument.write(age1 …

摩尔斯电码转换python编码_Morse Code 用Python做个摩斯密码转换器

摩斯密码摩尔斯电码(又译为摩斯密码&#xff0c;Morse code)是一种时通时断的信号代码&#xff0c;通过不同的排列顺序来表达不同的英文字母、数字和标点符号&#xff0c;不同于现代只使用零和一两种状态的二进制代码&#xff0c;它的代码包括五种&#xff1a; 点、划、点和划之…