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.pswp.cn/news/449124.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449124.shtml
英文地址,請注明出處:http://en.pswp.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…