python—包

1.模块

  • 可以增加代码的重复利用的方式

  • 避免命名冲突

  • 如何定义模块

    • 模块就是一个普通文件,所以任何代码可以直接书写
    • 规范
      • 函数(单一的功能)
      • 类(相似功能的组合,或者类似业务模块)
      • 测试代码
  • 如何使用模块

    • 模块直接导入

      • 假如模块名称直接以数字开头,需要借助importlib帮助
    • 语法

      import module_name
      module_name.function_name
      module_name.class_name
      复制代码
    • import 模块 as 别名

      • 导入的同时给模块起一个别名,其余用法和第一种一样
    • from module_name import func_name, class_name

      • 有选择性导入,模块的一部分
    • import module_name import *

      • 导入模块所有内容
      • 不需要模块前缀
  • if name = 'main'的使用

    • 可以有效避免模块代码被导入的时候被动执行的问题
    • 建议所有程序的入口都以此代码为入口

2.模块的搜索搜索路径和存储

  • 什么是模块的搜索路径

    • 加载模块的时候系统会在哪些地方寻找此模块
  • 系统默认的模块搜索路径

      import syssys.path 属性可以获取路径列表
    复制代码
  • 添加搜索路径

       sys.path.append(dir)
    复制代码

  • 是一种组织管理代码的方式,包里存的是模块

  • 自定义包的结构

       /---包/---/--- __init__.py  包的标志性文件/---/--- 模块1/---/--- 模块2/---/--- 子包(子文件夹)/---/---/--- __init__.py 包的标志性文件/---/---/--- 子模块1/---/---/--- 子模块2
    复制代码
  • 包的导入操作

    • importpackage_name
      • 直接导入一个包,可以使用__init__.py 中的内容

      • 使用方法

        package_name.func_name
        package_name.class_name.func_name()
        复制代码
      • 此种方式的访问内容是

  • from ... import 导入

    • from package import module1,module2,module3...
    • 此种方法不执行__init__.py 的内容
    • form package import *
    • 导入当前包__init__.py 文件中的所有函数和内容,没有前缀
  • from package.module import *

    • 导入保重指定模块的所有内容
  • 在开发环境中经常会使用其他模块,可以直接导入其他模块中的内容

    • import 完整包或者模块的路径
  • __all__的用法

    • 在使用from package import * 的时候,*可以导入的内容
    • 如果__init__.py中的文件为空,或者没有__all__ ,那么只能把__init__ 中的内容导入
    • 如果__init__中如果设置了__all__ 的值,那么则按照__all__ 指定的子包或者模块进行导入,如此则不会载入__init__ 中的内容
    • 用法__all__ = ['module1','module2','package1',...]

命名空间

  • 用于区分不同位置不同功能但相同名称的函数变量的一个特定前缀
  • 作用是防止命名冲突

转载于:https://juejin.im/post/5c93b99e5188252d6d2faddc

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

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

相关文章

Docker Installation : Docker 中安装并启动 Kong

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 Details about how to use Kong in Docker can be found on the DockerHub repository hosting the image: kong. We also have a Docke…

tomcat是否有必要配置环境变量(摘)

之前发表了一篇关于如何安装和配置Tomcat的文章,而最近在开发项目的时候总是报错。后来被公司的大神问了一句:是谁告诉你Tomcat是需要配置环境变量的? 作为新手的我瞬间整个人都不好了!于是偷偷百度了一下,终于找到了关…

走迷宫+推箱子

两个小游戏的大致逻辑 走迷宫: 1、定义二维字符数组作为迷宫 2、定义变量记录老鼠的位置 3、获取游戏开始时间 3、进入循环 1、清理屏幕,使用system调用系统命令。 2、显示迷宫(遍历二维字符数组) 3、检查是否到达出口 获取游戏结束时间,计算出走出迷宫用…

Facebook开源ptr:在Python环境中并行运行单元测试

Facebook开源了一个名为Python Test Runner(ptr)的新项目,允许开发人员运行Python单元测试套件。ptr和现有测试运行器之间的主要区别在于ptr通过爬取存储库查找一定的Python项目,这些项目带有的单元测试在安装文件中已经定义过。 …

小窍门解决大问题(组图)

1.洗头时,在水中放少许盐,也可以预防脱发。 2.用醋洗头,可以令头发飘顺,容易打理而且兼有去头皮屑的功效。特别适合烫染后的头发。 3.刷牙时在牙膏上加上一点小苏打,刷三次后牙齿洁白如玉,牙锈自然脱落…

解决报错: Connecting to Kong on http ... Could not reach Kong on http://xxx.xxx.xxx.xxx:8001

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. Docker 中安装并启动好网关 kong 后,想要安装 kong 的图形化界面 kong-dashboard ,运行命令: do…

生成迷宫/C++

小时候,都喜欢玩迷宫,现在的电脑上还可以玩3D类迷宫。 那么每次开始游戏时,迷宫里密密麻麻的道路是怎么生成的呢? 在代码里面,我们把它们想象成一堆像素小格子,当两个格子连在一起,就像一堵墙&a…

Spring boot 配置tomcat后 控制台不打印SQL日志

在pom.xml中配置tomcat启动处加上&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</…

人生有五不:不等、不管、不看、不做、不给

一、我不等 朋友什么都等&#xff1a;等退休、等一千万存款、等孩子长大、等房贷缴清……最后等到了告别式。 他有感而发告诉我们这群探病友人&#xff0c;人都会走&#xff0c;可是他走得有些遗憾&#xff0c;有点不甘&#xff0c;非常后悔&#xff0c;除了工作之外&#xff0…

selenium操作浏览器的前进和后退

前进关键字&#xff1a;driver.forward() 后退关键字&#xff1a;driver.back() 测试对象&#xff1a;1、https://www.baidu.com/ 2、https://www.sogou.com/ 实例代码&#xff1a; 1 # 导入测试所需的库或者模块2 from selenium import webdriver3 import unittest4 import ti…

关于对象不能直接访问私有成员的误区(转)

先贴代码&#xff1a; #includeusing namespace std; class CPoint { public:CPoint(int xx, int yy){x xx;y yy;}CPoint(const CPoint &p){x p.x;y p.y;} private:int x, y; };如果你在想为什么拷贝构造函数的参数可以直接去访问它自己的私有成员的话&#xff0c;你就…

阿里云 ECS服务器 开放 8080 端口 -- 图解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 由于 kong-dashboard 的端口是映射到 8080 的&#xff0c;服务已启动成功却一直访问不了&#xff0c;最后才想起端口没有开放 ... 1. 登…

.NET高级代码审计(第三课)Fastjson反序列化漏洞

0X00 前言 Java中的Fastjson曾经爆出了多个反序列化漏洞和Bypass版本&#xff0c;而在.Net领域也有一个Fastjson的库&#xff0c;作者官宣这是一个读写Json效率最高的的.Net 组件&#xff0c;使用内置方法JSON.ToJSON可以快速序列化.Net对象。让你轻松实现.Net中所有类型(对象,…

IDEA:No SLF4J providers were found.

如果您是用IDEA 的 maven 写的 将slf4j的导入包 更改 为下列代码 <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.8.0-beta2</version></dependency><dependency><groupId&…

【C++基础】时间类型详解(转)

Unix时间戳(Unix timestamp)&#xff0c;或称Unix时间(Unix time)、POSIX时间(POSIX time)&#xff0c;是一种时间表示方式&#xff0c;定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中&#xff0c;也在许多其…

没变强是因为你太舒服(图)

职业生涯很长&#xff0c;对企业而言&#xff0c;它需要你成为一个专才&#xff0c;但从职业发展来看&#xff0c;你需要成为一个全才&#xff0c;方能适应社会的变化。 阻碍你成为全才的不良习惯有很多&#xff0c;有时候我们喜欢趋利避害&#xff0c;拖延症更是让自己定下来…

解决:DuplicateMappingException: Table [xx] contains physical column name referred to by multiple ... .

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如题&#xff1a; Caused by: org.hibernate.DuplicateMappingException: Table [xxx] contains physical column name [comment] …

0323表格学习

上午早来复习了一会昨天的课程。今天主要学习了表格的标签写法&#xff0c;难度不大&#xff0c;但是合并行与合并列容易混淆搞不明白。 <!--有序列表--> <ol type"I"> <li>数学</li> <li>英语</li> &l…

路由进阶

1>路由组件传参 在组件中使用 $route 会使之与其对应路由形成高度耦合&#xff0c;从而使组件只能在某些特定的 URL 上使用&#xff0c;限制了其灵活性。 解决方法: 1.1若是动态匹配页面&#xff0c;只需要在路由参数中加入props:true即可。 import Home from "/views/…

物联网摄像机通讯_网络调试助手

1&#xff0c;文档目的&#xff1a; 了解对于物联网网关与摄像机协议联动&#xff0c;进行报警抓图&#xff0c;智能检测&#xff0c;OSD叠加&#xff0c;语音播报控制等联动及数据交互。 适用产品&#xff1a;物联网网关 &#xff08;OSD是屏幕显示技术的一种&#xff09; 2…