Mosh的课程网址
1 2 3 4 5 6 7
| def calc_tax(): pass
def calc_shipping(): pass
|
1 2 3 4 5
| from sales import calc_shipping, calc_tax
calc_shipping() calc_tax()
|
或:
1 2 3 4
| import sales
sales.calc_shipping() sales.calc_tax()
|
Compiled Python Files
编译后在__pycache__生成 sales.cpython-39.pyc 文件,如果sales.py未作更改,则此文件直接用(相当于缓存),可以加快程序执行。如果sales.py改了,则要重新生成此文件。
Module Search Path
1 2 3
| import sys
print(sys.path)
|
1
| ['e:\\Stone\\Python\\HelloWorld', 'D:\\Python39\\python39.zip', 'D:\\Python39\\DLLs', 'D:\\Python39\\lib', 'D:\\Python39', 'C:\\Users\\11405\\AppData\\Roaming\\Python\\Python39\\site-packages', 'D:\\Python39\\lib\\site-packages']
|
Packages
package 对应于文件夹;module 对应于文件
比如在 app.py 所在目录下有个 ecommerce 文件夹,ecommerce 文件夹内有多个文件,包括 sales.py,假如改文件夹内有文件__init__.py,则 python 会将此文件夹视为 package.
那么可以这样用:
1 2 3 4 5
| from ecommerce import sales
sales.calc_tax() sales.calc_shipping()
|
Sub-packages
ecommerce 文件夹内有 shopping 文件夹, shopping 文件夹内有文件__init__.py 和 sales.py,则:
1 2
| from ecommerce.shopping import sales
|
Intra-package References
1 2 3 4 5
| from ecommerce.customer import contact from ..customer import contact
contact.contact_customer()
|
The dir() Function
1 2 3 4
| from ecommerce.shopping import sales
print(dir(sales))
|
输出sales的各种方法:
1
| ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'calc_shipping', 'calc_tax', 'contact']
|
比如:
1 2 3 4 5 6
| from ecommerce.shopping import sales
print(sales.__name__) print(sales.__package__) print(sales.__file__)
|
输出:
1 2 3
| ecommerce.shopping.sales ecommerce.shopping e:\Stone\Python\HelloWorld\ecommerce\shopping\sales.py
|
Executing Modules as Scripts
1 2 3 4 5 6 7 8 9 10
| print("Sales initialized", __name__)
def calc_tax(): pass
def calc_shipping(): pass
|
1 2
| print("Ecommerce initialized")
|
1 2
| from ecommerce.shopping import sales
|
执行 app.py,输出:
1 2
| Ecommerce initialized Sales initialized ecommerce.shopping.sales
|
如果执行sales.py, 输出:
1
| Sales initialized __main__
|
可见__name__对于不同py文件是不同的。
如果加上:
1 2
| if __name__ == "__main__":
|
则只在当前py文件运行时执行这些 # blablabla 的code。