电子说
描述
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
python导入模块时,需提供模块的变量名,如果导入时只能获取模块字符串形式的名称,就会导入失败。
NO | 执行方式 | 描述 |
---|---|---|
1 | exec(“import M”) | 执行引号内导入语句,不返回结果 |
2 | import (“import M”) | 执行引号内导入语句,返回导入模块 |
示例
# 打开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'
示例
# 打开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'>
全部0条评论
快来发表一下你的评论吧 !