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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python模塊命名空間及使用事項(xiàng)

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

1 python模塊使用事項(xiàng)

1.1 python模塊導(dǎo)入只執(zhí)行一次

描述

python模塊在首次導(dǎo)入時(shí)從上到下執(zhí)行模塊內(nèi)容,再次導(dǎo)入直接從內(nèi)存取數(shù)據(jù),不會(huì)再從上到下執(zhí)行。

示例

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

1.2 import和from是賦值語句

描述

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

NO 描述
1 import將模塊對(duì)象賦值給模塊名
2 from將模塊屬性值賦給當(dāng)前模塊的同名變量。

修改導(dǎo)入模塊內(nèi)的對(duì)象

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

示例

# assing.py
s='梯閱線條'
L=[s,9555]
# idle執(zhí)行下面語句
>>> 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
# 導(dǎo)入可變對(duì)象被修改時(shí),模塊內(nèi)對(duì)象跟著被修改
>>> assign.s,assign.L
('梯閱線條', ['梯閱線條', 2023])
>>> s,L
('tyxt', ['梯閱線條', 2023])
# 使用import 模塊,再通過“模塊.屬性=值”修改模塊內(nèi)不可變對(duì)象
>>> assign.s=s
>>> assign.s,assign.L
('tyxt', ['梯閱線條', 2023])

1.3 使用import場景

描述

如果導(dǎo)入的多個(gè)模塊中,存在同名屬性,則需使用import進(jìn)行導(dǎo)入。

示例

# 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執(zhí)行下面語句
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
>>> s='tyxt'
# from語句,多個(gè)模塊中,導(dǎo)入同名屬性,只會(huì)執(zhí)行最后導(dǎo)入的屬性
>>> from mod_5 import myprint
>>> from mod_6 import myprint
>>> myprint(s)
在mod_6:tyxt
# import導(dǎo)入多個(gè)模塊中的同名屬性,通過“模塊.屬性”訪問各自同名屬性
>>> import mod_5,mod_6
>>> mod_5.myprint(s)
在mod_5:tyxt
>>> mod_6.myprint(s)
在mod_6:tyxt

2 python模塊命名空間

python模塊為.py文件,導(dǎo)入模塊會(huì)創(chuàng)建模塊對(duì)象,模塊文件的頂層變量為模塊屬性。

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

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

任何一個(gè)名稱,通過命名空間f,都能找到唯一一個(gè)對(duì)象與之對(duì)應(yīng)。

python變量名的創(chuàng)建、修改和查找都是在命名空間進(jìn)行的。

python模塊命名空間就是模塊對(duì)象存放全部模塊內(nèi)變量名的場所。

任何一個(gè)模塊屬性名稱都可以通過模塊命名空間找到唯一一個(gè)對(duì)象與之對(duì)應(yīng)。

通過“模塊.屬性名”或“屬性名”的方式進(jìn)行訪問。

2.1 python模塊生成命名空間

描述

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

python模塊生成命名空間:

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

示例

# modnames.py
print('執(zhí)行模塊語句開始')
import sys
s='梯閱線條'
def modf():
   x='modf'
class modc(object):
   y='modc'
print('執(zhí)行模塊語句結(jié)束')
# idle執(zhí)行下面語句
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
# 從上到下執(zhí)行模塊語句
>>> import modnames
執(zhí)行模塊語句開始
執(zhí)行模塊語句結(jié)束
# 頂層變量賦值成為屬性:import賦值語句
>>> modnames.sys
'sys' (built-in)>
# 頂層變量賦值成為屬性:def、class 外等于號(hào) =
>>> modnames.s
'梯閱線條'
# 頂層變量賦值成為屬性:def 隱性賦值
>>> modnames.modf
<function modf at 0x0400DF18>
# 頂層變量賦值成為屬性:class 隱性賦值
>>> modnames.modc
<class 'modnames.modc'>
# 非頂層變量賦值不能成為屬性:def、class 內(nèi)賦值
>>> 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__ 字典存儲(chǔ)命名空間的屬性
>>> 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點(diǎn)號(hào)屬性名運(yùn)算

python點(diǎn)號(hào)屬性名為表達(dá)式運(yùn)算,返回和屬性名匹配的值。

NO 內(nèi)容 描述
1 無點(diǎn)號(hào),X 簡單變量,按LEGB規(guī)則在當(dāng)前作用域內(nèi)搜索變量名X
2 單點(diǎn)號(hào),X.Y 當(dāng)前作用域搜索X,搜索對(duì)象X的Y屬性
3 多點(diǎn)號(hào),X.Y.Z 搜索對(duì)象X的Y屬性,搜索X.Y對(duì)象的Z屬性

點(diǎn)號(hào)運(yùn)算適用于有屬性的任何對(duì)象,比如:方法、模塊、類等對(duì)象。

2.3 python導(dǎo)入作用域

描述

python作用域由程序位置決定,不受模塊導(dǎo)入和函數(shù)調(diào)用影響。

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

示例

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

2.4 python模塊嵌套

描述

python模塊a導(dǎo)入模塊b,模塊b導(dǎo)入模塊c,那么模塊a可以訪問模塊c的屬性。

示例

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

3 python模塊重載

python模塊導(dǎo)入后,再次導(dǎo)入不會(huì)重新加載和執(zhí)行模塊文件代碼。

python的reload函數(shù),強(qiáng)制已加載的代碼重新加載和執(zhí)行,讓模塊動(dòng)態(tài)更新。

3.1 python模塊重載reload

用法

import moda
from importlib import reload
reload(moda)

描述

python的reload()函數(shù)需先從importlib導(dǎo)入。

reload**( moda )****:**moda為模塊對(duì)象,即需先導(dǎo)入moda才能進(jìn)行reload。

NO 描述
1 reload在當(dāng)前命名空間執(zhí)行新代碼,不會(huì)刪除重建命名空間。
2 執(zhí)行有變化的頂層賦值語句。
3 reload會(huì)更新import導(dǎo)入的客戶端的引用。
4 reload不更新from導(dǎo)入的客戶端的引用,因?yàn)閒rom是復(fù)制屬性,最新的值只有在from客戶端重啟后生效。

示例

# reloadmod.py
s='梯閱線條'
def reloadf():
   print(s)
# idle執(zhí)行下面語句
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
>>> from importlib import reload
# 未導(dǎo)入模塊不可進(jìn)行 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執(zhí)行下面語句
# import取內(nèi)存的舊數(shù)據(jù)
>>> import reloadmod
>>> reloadmod.reloadf()
梯閱線條
# reload 執(zhí)行更新的模塊文件
>>> reload(reloadmod)
'reloadmod' from 'E:\\\\documents\\\\F盤\\\\reloadmod.py'>
>>> reloadmod.reloadf()
tyxt
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7085

    瀏覽量

    89239
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4800

    瀏覽量

    84834
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    python模塊安裝方法

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

    Python名稱空間分類

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

    Linux的命名空間機(jī)制

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

    命名空間的實(shí)現(xiàn)

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

    hbase shell創(chuàng)建命名空間

    一.hbase shell創(chuàng)建命名空間hbase shellcreate_namespace "gofish"二.python實(shí)現(xiàn)hbase增刪改查# -*- coding
    發(fā)表于 07-28 06:45

    什么是python包、模塊和庫?

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

    python常規(guī)包與命名空間

    python常規(guī)包與命名空間包1. 常規(guī)包在 Python 3.3 之前或者說 Python 2 中,一個(gè)包想要被導(dǎo)入使用,那么該包內(nèi)必須要
    發(fā)表于 03-11 15:46

    CMOS電路的使用事項(xiàng)

    CMOS電路的使用事項(xiàng)
    發(fā)表于 12-17 01:36 ?560次閱讀
    CMOS電路的使<b class='flag-5'>用事項(xiàng)</b>

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

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

    python基礎(chǔ)教程之變量如何命名變量命名規(guī)范的資料說明

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

    Python公認(rèn)的命名規(guī)則總結(jié)

    對(duì)于模塊名/包名、函數(shù)名、變量名、類名、常量名的命名Python有一些公認(rèn)的規(guī)則,具體如下。
    的頭像 發(fā)表于 01-23 11:25 ?1795次閱讀

    如何使用python給所有文件夾重命名

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用python給所有文件夾重命名資料免費(fèi)下載。
    發(fā)表于 09-22 17:09 ?2次下載
    如何使用<b class='flag-5'>python</b>給所有文件夾重<b class='flag-5'>命名</b>

    詳解python常規(guī)包與命名空間

    python常規(guī)包與命名空間包 1. 常規(guī)包 在 Python 3.3 之前或者說 Python 2 中,一個(gè)包想要被導(dǎo)入使用,那么該包內(nèi)必
    的頭像 發(fā)表于 03-11 15:46 ?3439次閱讀

    Python模塊有哪些注意事項(xiàng)

    python導(dǎo)入模塊時(shí)從上到下執(zhí)行不在函數(shù)內(nèi)、不在類內(nèi)的代碼。
    的頭像 發(fā)表于 02-21 11:24 ?504次閱讀

    python變量命名規(guī)則

    Python是一種高級(jí)編程語言,廣泛應(yīng)用于軟件開發(fā)、數(shù)據(jù)分析和科學(xué)計(jì)算等領(lǐng)域。在Python中,變量是用來存儲(chǔ)數(shù)據(jù)的容器,它們具有名稱以及與之關(guān)聯(lián)的值。然而,變量的命名并不是隨意的,而是需要遵循一定
    的頭像 發(fā)表于 11-23 15:44 ?1533次閱讀
    主站蜘蛛池模板: 内地同志男16china16| 奶水太多h室友| 成人18视频在线| 97超级碰久久久久香蕉人人| 一二三四在线高清中文版免费观看电影 | 久久精品免视看国产| 黄小飞二人转| 狠狠色狠狠色综合| 和姐姐做插得很深| 寂寞骚妇女被后入式抽插| 黑人干肥婆| 九九夜夜妹子| 久久学生精品国产自在拍| 久久久久久久久久毛片精品美女| 久久久久国产精品嫩草影院| 久久视频精品38在线播放| 老师真棒无遮瑕版漫画免费| 美女搜查官被高难度黑人在线播放| 免费毛片试看| 强奸日本美女小游戏| 日本漫画无彩翼漫画| 色欲AV亚洲永久无码精品| 四虎永久免费网址| 我们中文在线观看免费完整版| 亚洲 欧美 国产 综合五月天| 亚洲免费观看在线视频| 伊人久久精品中文字幕| 0855福利| md2.pud 麻豆传媒官网| 成人在线免费视频| 国产精品人妻无码久久久2022| 国偷自产视频一区二区99| 久久久久青草大香线综合精品| 免费韩伦影院在线观看| 日本黄色www| 小黄文纯肉短篇| 影音先锋av333资源网| 97视频在线免费播放| 动漫美女禁区| 国产中文字幕乱码一区| 久久免费精品一区二区|