色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python模塊命名空間及使用事項

jf_78858299 ? 來源:梯閱線條小梯子 ? 作者:小梯子 ? 2023-02-21 14:42 ? 次閱讀

1 python模塊使用事項

1.1 python模塊導入只執行一次

描述

python模塊在首次導入時從上到下執行模塊內容,再次導入直接從內存取數據,不會再從上到下執行。

示例

# runonce.py
s='梯閱線條'
print('執行一次:{}'.format(s))
# idle執行下面語句
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
# 首次導入模塊,從上到下執行模塊內容
>>> import runonce as ro
執行一次:梯閱線條
>>> ro.s
'梯閱線條'
>>> ro.s='tyxt'
# 再次導入模塊,不執行模塊內容,直接從內存讀取
>>> import runonce as ro
>>> ro.s
'tyxt'

1.2 import和from是賦值語句

描述

python導入模塊的import和from都是隱性賦值語句。類似def。

NO 描述
1 import將模塊對象賦值給模塊名
2 from將模塊屬性值賦給當前模塊的同名變量。

修改導入模塊內的對象

NO 操作 描述
1 修改可變對象 imort或from導入模塊,通過“模塊.屬性=值”或“變量=值”修改可變對象。
2 修改不可變對象 import導入模塊,通過“模塊.屬性=值”修改不可變對象。

示例

# assing.py
s='梯閱線條'
L=[s,9555]
# idle執行下面語句
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
>>> from assign import s,L
>>> s,L
('梯閱線條', ['梯閱線條', 9555])
>>> s='tyxt';L[1]=2023
>>> import assign
# 導入可變對象被修改時,模塊內對象跟著被修改
>>> assign.s,assign.L
('梯閱線條', ['梯閱線條', 2023])
>>> s,L
('tyxt', ['梯閱線條', 2023])
# 使用import 模塊,再通過“模塊.屬性=值”修改模塊內不可變對象
>>> assign.s=s
>>> assign.s,assign.L
('tyxt', ['梯閱線條', 2023])

1.3 使用import場景

描述

如果導入的多個模塊中,存在同名屬性,則需使用import進行導入。

示例

# mod_5.py
def myprint(val):
   print('在mod_5:{}'.format(val))
   
# mod_6.py
# mod_6.py
def myprint(val):
   print('在mod_6:{}'.format(val))
   
# idle執行下面語句
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
>>> s='tyxt'
# from語句,多個模塊中,導入同名屬性,只會執行最后導入的屬性
>>> from mod_5 import myprint
>>> from mod_6 import myprint
>>> myprint(s)
在mod_6:tyxt
# import導入多個模塊中的同名屬性,通過“模塊.屬性”訪問各自同名屬性
>>> import mod_5,mod_6
>>> mod_5.myprint(s)
在mod_5:tyxt
>>> mod_6.myprint(s)
在mod_6:tyxt

2 python模塊命名空間

python模塊為.py文件,導入模塊會創建模塊對象,模塊文件的頂層變量為模塊屬性。

python的命名空間(namespace)是指從名稱到對象的映射。

對象=f(名稱),f為命名空間。

任何一個名稱,通過命名空間f,都能找到唯一一個對象與之對應。

python變量名的創建、修改和查找都是在命名空間進行的。

python模塊命名空間就是模塊對象存放全部模塊內變量名的場所。

任何一個模塊屬性名稱都可以通過模塊命名空間找到唯一一個對象與之對應。

通過“模塊.屬性名”或“屬性名”的方式進行訪問。

2.1 python模塊生成命名空間

描述

python模塊文件頂層變量名包括:函數名、類名、函數外部變量名、類外部變量名,都為模塊屬性。通過“模塊.變量名”方式訪問。

python模塊生成命名空間:

NO 內容 描述
1 首次導入執行模塊語句 首次導入模塊創建空模塊對象,從上到下執行模塊內語句。
2 頂層賦值語句為模塊屬性 頂層變量賦值語句的變量名成為模塊屬性,比如:=(def和class外的等于號)、def、class、import、from、as等
3 dict獲取模塊命名空間 模塊命名空間為字典,通過dict獲取屬性及值。

示例

# modnames.py
print('執行模塊語句開始')
import sys
s='梯閱線條'
def modf():
   x='modf'
class modc(object):
   y='modc'
print('執行模塊語句結束')
# idle執行下面語句
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
# 從上到下執行模塊語句
>>> import modnames
執行模塊語句開始
執行模塊語句結束
# 頂層變量賦值成為屬性:import賦值語句
>>> modnames.sys
'sys' (built-in)>
# 頂層變量賦值成為屬性:def、class 外等于號 =
>>> modnames.s
'梯閱線條'
# 頂層變量賦值成為屬性:def 隱性賦值
>>> modnames.modf
<function modf at 0x0400DF18>
# 頂層變量賦值成為屬性:class 隱性賦值
>>> modnames.modc
<class 'modnames.modc'>
# 非頂層變量賦值不能成為屬性:def、class 內賦值
>>> modnames.x
Traceback (most recent call last):
 File "", line 1, in 
   modnames.x
AttributeError: module 'modnames' has no attribute 'x'
>>> modnames.y
Traceback (most recent call last):
 File "", line 1, in 
   modnames.y
AttributeError: module 'modnames' has no attribute 'y'
# 通過 __dict__ 字典存儲命名空間的屬性
>>> list(modnames.__dict__.keys())
['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__file__', '__cached__', '__builtins__', 'sys', 's', 'modf', 'modc']
>>> modnames.__dict__['s']
'梯閱線條'
# __file__ : 獲取模塊文件路徑
>>> modnames.__dict__['__file__']
'E:\\\\documents\\\\F盤\\\\modnames.py'

2.2 python點號屬性名運算

python點號屬性名為表達式運算,返回和屬性名匹配的值。

NO 內容 描述
1 無點號,X 簡單變量,按LEGB規則在當前作用域內搜索變量名X
2 單點號,X.Y 當前作用域搜索X,搜索對象X的Y屬性
3 多點號,X.Y.Z 搜索對象X的Y屬性,搜索X.Y對象的Z屬性

點號運算適用于有屬性的任何對象,比如:方法、模塊、類等對象。

2.3 python導入作用域

描述

python作用域由程序位置決定,不受模塊導入和函數調用影響。

NO 內容 描述
1 被導入文件無法訪問進行導入的文件內的變量名 mod2.py導入mod1.py,那么mod1.py是無法訪問mod2.py內的變量的。
2 函數無法訪問其他函數內的變量名,除法物理上的嵌套函數 函數fa()是無法方法函數fb()內的變量的,除非fa()是fb()的內部函數。
3 模塊無法訪問其他模塊內的變量名,除非導入模塊 模塊mod1.py是無法訪問模塊mod2.py內的變量的,除非模塊mod1.py導入模塊mod2.py

示例

# mod_a.py
s='梯閱線條'
def modaf():
   global s
   s = 'tyxt'
# mod_b.py
s='軟件測試開發'
import mod_a
mod_a.modaf()
print(s,mod_a.s)
# idle執行下面語句
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
# 被導入的模塊 mod_a,不可訪問模塊 mod_b 的變量s
>>> import mod_b
軟件測試開發 tyxt

2.4 python模塊嵌套

描述

python模塊a導入模塊b,模塊b導入模塊c,那么模塊a可以訪問模塊c的屬性。

示例

# modc.py
s='modc'
# modb.py
s='modb'
import modc
print('modb執行 s:{}'.format(s))
print('modb執行 modc.s:{}'.format(modc.s))
# moda.py
s='moda'
import modb
print('moda執行 s:{}'.format(s))
print('moda執行 modb.s:{}'.format(modb.s))
print('moda執行 modb.modc.s:{}'.format(modb.modc.s))
# idle執行下面語句
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
>>> import moda
# moda 導入 modb,從上到下執行modb
modb執行 s:modb
modb執行 modc.s:modc
# 導入 moda, 從上到下執行 moda
moda執行 s:moda
moda執行 modb.s:modb
# 訪問通過modb導入的modc:modb.modc.s
moda執行 modb.modc.s:modc

3 python模塊重載

python模塊導入后,再次導入不會重新加載和執行模塊文件代碼。

python的reload函數,強制已加載的代碼重新加載和執行,讓模塊動態更新。

3.1 python模塊重載reload

用法

import moda
from importlib import reload
reload(moda)

描述

python的reload()函數需先從importlib導入。

reload**( moda )****:**moda為模塊對象,即需先導入moda才能進行reload。

NO 描述
1 reload在當前命名空間執行新代碼,不會刪除重建命名空間。
2 執行有變化的頂層賦值語句。
3 reload會更新import導入的客戶端的引用。
4 reload不更新from導入的客戶端的引用,因為from是復制屬性,最新的值只有在from客戶端重啟后生效。

示例

# reloadmod.py
s='梯閱線條'
def reloadf():
   print(s)
# idle執行下面語句
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
>>> from importlib import reload
# 未導入模塊不可進行 reload 操作
>>> reload(reloadmod)
Traceback (most recent call last):
 File "", line 1, in 
   reload(reloadmod)
NameError: name 'reloadmod' is not defined
>>> import reloadmod
>>> reloadmod.reloadf()
梯閱線條
# 修改reloadmod.py的 s=’tyxt’
# reloadmod.py
s='tyxt'
def reloadf():
   print(s)
# idle執行下面語句
# import取內存的舊數據
>>> import reloadmod
>>> reloadmod.reloadf()
梯閱線條
# reload 執行更新的模塊文件
>>> reload(reloadmod)
'reloadmod' from 'E:\\\\documents\\\\F盤\\\\reloadmod.py'>
>>> reloadmod.reloadf()
tyxt
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7067

    瀏覽量

    89107
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84745
收藏 人收藏

    評論

    相關推薦

    python模塊安裝方法

    空間中,以上功能可寫成:#!/usr/bin/python# -*- coding: UTF-8 -*-from hello import World如果要將模塊中的所有內容全部導入當前命名
    發表于 04-04 14:57

    Python名稱空間分類

    名字的地方,三種名稱空間,(之前遺留的問題x=1,1存放于內存中,那名字x存放在哪里呢?名稱空間正是存放名字x與1綁定關系的地方)一、名稱空間分類1. 全局命名
    發表于 05-17 16:51

    Linux的命名空間機制

    Linux命名空間概述
    發表于 03-18 14:40

    命名空間的實現

    (1) 在用fork或clone系統調用創建新進程時,有特定的選項可以控制是與父進程共享命名空間,還是建立新的命名空間。(2) unshare系統調用將進程的某些部分從父進程分離,其中
    發表于 05-24 06:21

    hbase shell創建命名空間

    一.hbase shell創建命名空間hbase shellcreate_namespace "gofish"二.python實現hbase增刪改查# -*- coding
    發表于 07-28 06:45

    什么是python包、模塊和庫?

    1. 模塊以 .py 為后綴的文件,我們稱之為 模塊,英文名 Module。模塊讓你能夠有邏輯地組織你的 Python 代碼段,把相關的代碼分配到一個
    發表于 03-09 16:48

    python常規包與命名空間

    python常規包與命名空間包1. 常規包在 Python 3.3 之前或者說 Python 2 中,一個包想要被導入使用,那么該包內必須要
    發表于 03-11 15:46

    CMOS電路的使用事項

    CMOS電路的使用事項
    發表于 12-17 01:36 ?558次閱讀
    CMOS電路的使<b class='flag-5'>用事項</b>

    C++中命名空間的幾大用法

    譯者注:可能很多程序員對C++已經非常熟悉,但是對命名空間經常使用到的地方還不是很明白,這篇文章就針對命名空間這一塊做了一個敘述。 命名
    發表于 09-28 18:31 ?0次下載

    python基礎教程之變量如何命名變量命名規范的資料說明

    python源碼和其他一些書籍,命名各種個性,沒有一個比較統一的命名規范。于是總結了一些,供參考。
    發表于 01-04 17:51 ?15次下載
    <b class='flag-5'>python</b>基礎教程之變量如何<b class='flag-5'>命名</b>變量<b class='flag-5'>命名</b>規范的資料說明

    Python公認的命名規則總結

    對于模塊名/包名、函數名、變量名、類名、常量名的命名Python有一些公認的規則,具體如下。
    的頭像 發表于 01-23 11:25 ?1792次閱讀

    一文了解C++的命名空間

    在C++中,變量、函數和類都是大量存在的,這些變量、函數和類的名稱將都存在于全局命名空間中,會導致很多沖突, 使用命名空間的目的是對標識符的名稱進行本地化,以避免
    的頭像 發表于 06-29 14:48 ?2339次閱讀
    一文了解C++的<b class='flag-5'>命名</b><b class='flag-5'>空間</b>

    詳解python常規包與命名空間

    python常規包與命名空間包 1. 常規包 在 Python 3.3 之前或者說 Python 2 中,一個包想要被導入使用,那么該包內必
    的頭像 發表于 03-11 15:46 ?3431次閱讀

    Python模塊有哪些注意事項

    python導入模塊時從上到下執行不在函數內、不在類內的代碼。
    的頭像 發表于 02-21 11:24 ?496次閱讀

    python變量命名規則

    Python是一種高級編程語言,廣泛應用于軟件開發、數據分析和科學計算等領域。在Python中,變量是用來存儲數據的容器,它們具有名稱以及與之關聯的值。然而,變量的命名并不是隨意的,而是需要遵循一定
    的頭像 發表于 11-23 15:44 ?1463次閱讀
    主站蜘蛛池模板: 精品国产成a人在线观看| 嫩小性性性xxxxbbbb| 日本又黄又裸一级大黄裸片| 99久久爱看免费观看| 琪琪的色原网站| 国产精品ⅴ视频免费观看| 亚洲va久久久久| 久久亚洲AV无码精品午色夜麻豆| 4虎最新网址| 色呦呦导航| 九九热免费在线观看| 99久久精品费精品国产| 私人玩物黑丝| 久久精品免费观看久久| Zoofilivideo人馿交| 亚洲白色白色在线播放| 免费观看亚洲视频| 国产精品高清在线观看93| 一级毛片免费在线播放| 人人艹人人| 久久不射视频| 动漫成年美女黄漫网站| 亚洲人日本人jlzzy| 欧美性暴力变态xxxx| 国产亚洲精品线视频在线| 91天仙tv嫩模福利| 午夜欧洲亚洲AV永久无码精品| 久久婷婷五月综合色精品首页| 国产99r视频精品免费观看| 专干老肥熟女视频网站300部| 色小姐.com| 男人J放进女人屁股免费观看| 国产亚洲视频中文字幕| 柏木舞子在线| 中文字幕免费在线视频| 亚洲AV无码影院在线播放| 青青久在线视频免费观看| 久久久无码AV精品亚洲A片软件| 国产精品久久久久精品A片软件| a在线视频免费观看| 中文国产成人精品久久免费|