一个py文件,就是一个模块。
一个模块要调用另外一个模块的函数或类,需要先import这个模块。
import的本质,就是解释执行每一行代码。类和函数就是此时在定义的。
import一个模块时,python在sys.path目录下搜索这些模块。
2、内建函数和内建模块
>>> dir
<built-in function dir>
>>> import sys
>>> sys
<module 'sys' (built-in)>
>>> import os
>>> os
<module 'os' from 'D:\Python27\lib\os.pyc'>
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'sys', 'os']
--列出当前scope的信息。可以看到变量和模块名。
>>> dir(__builtins__)
[ '__doc__', '__import__', '__name__', '__package__', 'abs', 'len', 'dir',...
--列出这个模块的信息。可以看到变量和函数名。
>>> dir(len) --打出很多内部变量,感觉对日常开发没有什么用。
3、命名空间
相当于作用域的概念
可以用locals()和globals()来查看
4、有package的情况下,模块之间如何调用,python如何启动?
F:\gaofeng\python>type p2\py2.py
import sys
import p1.py1
print(sys.path)
print(p1.py1.__name__)
F:\gaofeng\python>python p2\py2.py
Traceback (most recent call last):
File "p2\py2.py", line 2, in <module>
import p1.py1
ImportError: No module named p1.py1
F:\gaofeng\python>python -m p2.py2
['', 'D:\\Python27\\lib\\site-packages\\pip-9.0.1-py2
on27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\
'D:\\Python27\\lib\\site-packages']
['', 'D:\\Python27\\lib\\site-packages\\pip-9.0.1-py2
on27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\
'D:\\Python27\\lib\\site-packages']
p1.py1
注意,加了-m参数后,sys.path中会把当前路径(用空字符表示当前路径)增加进去。