python模組加強和命名空間

2021-10-02 02:12:53 字數 3402 閱讀 1214

pip使用

安裝包pip install 包名 # 最新版本

pip install 包名==1.0.4 # 指定版本

pip install '包名》=1.0.4' # 最小版本

公升級包pip install --upgrade 包名

解除安裝包pip uninstall 包名

搜尋包pip search 包名

列出已安裝的包

pip list

# 匯入和匯出安裝包

pip freeze > 碟符:/requirements.txt # 匯出

pip install -r 碟符:/requirements.txt # 匯入

# 檢視版本

pip -v 或者 --version

pip源修改

pip國內的一些映象

阿里雲  

中國科技大學  

豆瓣(douban)  

清華大學 

windows: 

直接在user目錄中建立乙個pip目錄,如:c:/users/xx/pip,新建檔案pip.ini,內容如下

[global]

index-url =

也可以安裝的時候通過引數 -i 臨時修改:

pip install 包名 -i 

模組加強

1. 內建模組

2. 標準模組 (/lib)

3. 自定義模組

4. 第三方包模組 (/lib/site-packages)

查詢順序:

1, 內建模組和標準 優先順序最高

2, 當前檔案所在路徑------>第三方模組路徑

3, 自定義模組查詢路徑

import sys

sys.path.insert(0,"模組路徑")

命名空間作用域

命名空間: 解決命名突出, python只能用於檢視

命名空間,字典, 儲存變數/函式/類 名 與其 對應值的 對映關係

區域性命名空間–locals()

全域性命名空間–globals()

內建命名空間- print(dir(builtins))

概念: 變數/函式 作用範圍

作用域分類:

1 .區域性作用域 (函式內部)

只能在函式內使用

2. 全域性作用域 (函式外部)

任意地方都能訪問, 函式內不能修改

3. 閉包作用域 (函式 巢狀函式, 內函式使用外層函式中的變數 , 必須返回內函式)

4. 內建作用域

任意位置使用

1. 三種

local: 區域性命名空間

檢視: locals()

global : 全域性命名空間, 只要在全域性命名空間中的內容到處都能使用

檢視: globals()

__name__: 模組名, 如果是主執行檔案 值為 __main__

__builtins__: 內建名字空間物件,用於檢視內建名字空間中的內容的

__file__: 當前檔案的絕對路徑

# 動態獲取當前檔案所在的目錄

import os

print(os.path.dirname(__file__))

built-in: 內建命名空間, 內建中的所有內容到處都能使用

檢視: dir(__builtins__)

內容: int,list,tuple,str,max,min,sum,range,len,super,locals,globals

例子1:

name = "張飛" # 全域性命名空間

class student(object):

pass

def changename():

name = "李四" # 區域性命名空間中

age = 18 # 區域性命名空間中

# 檢視區域性命名空間內容

print(locals())

changename()

print(name)

# 檢視全域性

print(globals())

# 檢視當前檔案的路徑

print(__file__)

# 動態獲取當前檔案所在目錄

import os

print(os.path.dirname(__file__))

# 檢視內建中的內容

print(dir(__builtins__))

1. 作用域的分類

區域性作用域(local): 作用範圍為當前函式內容

閉包作用域(enclosing): 作用範圍為函式中的子函式中(函式巢狀)

全域性作用域(global): 作用範圍全域性

內建作用域(builtin): 作用範圍全域性

作用域: 指成員(變數,函式,類,方法)的使用範圍

2. 成員的查詢順序: l>e>g>b

3. 指定操作對應作用域中的成員

在函式內修改全域性的成員, 使用 global 全域性變數名 引入之後才能修改

在子函式中修改閉包變數, 使用 nonlocal 閉包變數 引入閉包變數才能修改

例子2:

def len(string): # 獲取字串長度

print("全域性位置的len")

i = 0

for tmp in string:

i += 1

return i

name = "小劉備"

def outer():

name = "區域性張飛"

print(name)

def inner(): # 子函式

# 閉包

nonlocal name

name += "小關羽" # local

print("閉包位置輸出:", name)

print("名字長度", len(name))

inner()

print("全域性位置的", name)

outer()

變數查詢順序

複製和拷貝

簡單資料和複雜資料

1. 簡單資料在賦值的時候都是使用同乙個記憶體空間, 節約記憶體.

列如: 字串, 數字 ,布林

2. 複雜資料,每次賦值,都是開闢乙個新的記憶體空間, 將對應的空間位址 賦值 給變數

例如: 列表,字典,元組,類例項化的物件

==: 判斷值相等

is : 判斷位址相等

1. 淺拷貝

import copy

copy.copy()

2. 深拷貝

將對應資料中 的複雜資料 也拷貝了乙個新的記憶體位址

import copy

新資料 = copy.deepcopy(舊資料)

python 包管理(包 模組 命名空間)

如何定義模組 如何使用模組 語法import module name module name.function name module name.class name import 模組 as 別名 from module name import func name,class name from ...

模組 包 命名空間和作用域

模組的物理層面是檔案,包就是有層次的特殊檔案結構,特殊的點在於,每個目錄下面都必須有 init py檔案,如果沒有該檔案,則只是乙個普通的檔案目錄,並不能作為包匯入。這是因為匯入包的原理其實就是匯入該包的路徑下面的 init py,其中包含可以匯入的各種模組。python模組的匯入操作 通過impo...

Python 命名空間

本文介紹python中命名空間中的legb原則。legb含 釋 l local function 函式內的名字空間,包括區域性變數和形參 e enclosing function locals 外部巢狀函式的名字空間 例如closure g global module 函式定義所在模組 檔案 的名字...