python模块属性及字符串导入模块介绍

电子说

1.3w人已加入

描述

1.1 python获取模块属性

1.1.1 获取模块属性

描述

python可以通过点号或字典,获取模块属性。

已经导入的模块存放在sys.modules字典,通过getattr获取模块属性。

NO 获取属性 描述
1 M.name 点号运算,“模块名”点“属性名”
2 M. dict [‘name’] 属性字典,“模块名”. dict [‘属性名’]
3 sys.modules[‘M’].name 点号运算,sys.modules[‘模块名’].属性名
4 getattr(M,’name’) getattr(模块名,’属性名’)

注:用as后,通过字符串方式访问的用“原名”,通过变量名方式访问的用“别名”。

文件内容

E**:**\\documents\\F盘\\testmatt.py

import os,sys
print("run:{}".format(os.path.abspath(__file__)))
print("__name__:{}".format(__name__))
tyxt='梯阅线条'

示例

# 打开cmd 执行下面示例
E:\\documents\\F盘>python
>>> import testmatt as matt
run:E:\\documents\\F盘\\testmatt.py
__name__:testmatt
# M.name , as 后 , 变量名方式 用别名访问
>>> matt.tyxt
'梯阅线条'
# M.__dict__['name']
>>> matt.__dict__['tyxt']
'梯阅线条'
>>> import sys
# sys.modules['M'].name , as 后 , 字符串方式 用原名访问
>>> sys.modules['testmatt'].tyxt
'梯阅线条'
>>> sys.modules['matt'].tyxt
Traceback (most recent call last):
 File "", line 1, in 
KeyError: 'matt'
# getattr(M,'name') , as 后 , 变量名方式 用别名访问
>>> getattr(matt,'tyxt')
'梯阅线条'
>>> getattr(testmatt,'tyxt')
Traceback (most recent call last):
 File "", line 1, in 
NameError: name 'testmatt' is not defined

1.2 python字符串导入模块

python导入模块时,需提供模块的变量名,如果导入时只能获取模块字符串形式的名称,就会导入失败。

1.2.1 描述

NO 执行方式 描述
1 exec(“import M”) 执行引号内导入语句,不返回结果
2 import (“import M”) 执行引号内导入语句,返回导入模块

1.2.2 exec

示例

# 打开cmd 执行下面示例
# import 字符串,导入失败
>>> import 'string'
 File "", line 1
   import 'string'
                 ^
SyntaxError: invalid syntax
# 字符串赋值给变量,import 导入失败
>>> s='string'
>>> import s
Traceback (most recent call last):
 File "", line 1, in 
ModuleNotFoundError: No module named 's'
>>> string
Traceback (most recent call last):
 File "", line 1, in 
NameError: name 'string' is not defined
>>> impmod='import '+s
# exec()导入成功,直接执行,不返回结果
>>> exec(impmod)
>>> string
'string' from 'D:\\\\python3\\\\lib\\\\string.py'>
>>> s
'string'

1.2.3 import

示例

# 打开cmd 执行下面示例
>>> s='string'
>>> string
Traceback (most recent call last):
 File "", line 1, in 
NameError: name 'string' is not defined
>>> __import__(s)
'string' from 'D:\\\\python3\\\\lib\\\\string.py'>
>>> string
Traceback (most recent call last):
 File "", line 1, in 
NameError: name 'string' is not defined
# __import__()返回模块,需手动赋值
>>> string=__import__(s)
>>> string
'string' from 'D:\\\\python3\\\\lib\\\\string.py'>
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分