python_初始import

一、作者感悟

初次用python 的import 模塊的時候我原本以為和java一樣只是一個包的導入,沒想到最后足足用了好久才把python的import模塊弄明白,首先要知道python有三種編碼,一種是面向過程,一種是函數式變成,一種是面向對象,而java只有面向過程和面向對象這兩種,就導致我一直在繞了好久才從python 的import導入繞了出來。

二、初始import

作者理解:
import可以理解成,去把其他文件下 .py結尾的文件代碼,導入當前文件
定義:
模塊:用來從邏輯上組織pthon代碼(變量,函數,類,邏輯:實現一個功能),本質就是.py結尾的文件名

import text#根據上面的定義就可以理解導入一個text.py的文件

那如果過我只是想導入這個文件的某個方法該怎么做

#從 text.py 文件中調用他的name,這個就給看文件當時的具體定義name是一個方法還是一個屬性
from  text import name

但上面這種調用作者不支持大家這么使用,舉個例子

from  text import name
name="王大傻"
print(name)

這時候系統執行的name是當前本文件的王大傻,還還會是text.py文件內的name屬性,我們可以運行一下

捕獲.PNG

我們在text.py文件下建立了一個變量name賦值text,運行上面的代碼發現輸入的內容是


捕獲1.PNG

所以大家知道為什么作者不建議單獨從一個py文件中引入單個方法了吧,容易造成當前文件下如果有同名的,你導入的模塊會失效,為什么會產生這樣的問題

from  text import name
name="王大傻"
print(name)

這段代碼可以看成

name=‘text’#相當于from  text import name
name="王大傻"
print(name)

聰明的讀者其實反映過來,并不是沒執行只是被覆蓋了
在python import的導入還有一套規則

import sys
print(sys.path)

運行上面的代碼我們發現,其實python引入的包都是存在一個列表中,首相import 會先從當前文件目錄下尋找結果,然后再依次去從python的系統指定的文件尋找,當我們在別的目錄下寫好的包,或者腳本想導入的時候該怎么做,我們可以用append方法將目錄加到sys.path中

捕獲2.PNG

既然現在報錯了,我們就用一下append,現在分析一下我們執行的文件在,簡書\文件\ceshi.py,但是我們要導入的模塊text在簡書\text.py下,還記得sys.path執行后打印的結果么,首先去找簡書\文件\文件下有沒有test目錄,然后依次執行系統目錄。

import os
import sys
#找到當前系統的絕對路徑
apath = os.path.abspath(__file__)
#找到當前目錄的上級目錄
up_path1 = os.path.dirname(apath)
up_path2 = os.path.dirname(up_path1)
#添加到當前系統路徑下
sys.path.append(up_path2)
import text
print(text.name)
print(sys.path)

運行后我們發現text可以在ceshi文件中使用了

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Python 面向對象Python從設計之初就已經是一門面向對象的語言,正因為如此,在Python中創建一個類和對...
    順毛閱讀 4,236評論 4 16
  • GitHub 上有一個 Awesome - XXX 系列的資源整理,資源非常豐富,涉及面非常廣。awesome-p...
    若與閱讀 18,696評論 4 418
  • 原文鏈接: http://www.lxweimin.com/p/9c6ae64a1bd7 GitHub 上有一個 A...
    李紹俊閱讀 6,124評論 0 92
  • # Python 資源大全中文版 我想很多程序員應該記得 GitHub 上有一個 Awesome - XXX 系列...
    小邁克閱讀 3,034評論 1 3
  • 常見的狀態碼: HTTP: Status200– 服務器成功返回網頁 HTTP: Status404– 請求的網頁...
    蟹大喵閱讀 2,942評論 0 1