Python 模块、包 并与 PHP 对比

阅读数: 697 2018年10月10日

1、导入关键词

【Python】使用 import 语句导入整个模块,使用的时候,必须带上模块名(命名空间)

或使用 from ... import 语句,使用的时候,直接使用模块内的函数,因为是导入到当前命名空间。

例子:

support.py

#!/usr/bin/python
#codding=utf-8

def show1(msg):
    print('show1:', msg)
    return 'ok'

def show2(msg):
    print('show2:', msg)
    return 'ok'

test.py

#!/usr/bin/python
#coding=utf-8

import support

support.show1('hello')
support.show2('hello')

运行后:

E:\python370\python.exe D:/web/python/test/test.py
show1: hello
show2: hello


test2.py , 使用 from ... import xx 后,可直接使用模块内的函数名,因为是导入到本文件的命名空间了。test2.py 只导入了 support.show1() 方法,show2() 不能使用。

#!/usr/bin/python
#coding=utf-8
from support import show1
show1('hello')

运行后:

E:\python370\python.exe D:/web/python/test/test2.py
show1: hello


test3.py , 使用了 from ... import * 方式导入模块后,就把其他模块下所有的方法都导入到本文件的命名空间下,可直接使用函数名

#!/usr/bin/python
#coding=utf-8
from support import *
show1('hello')
show2('world')


【PHP】分两部分导入,第一部分是导入文件,使用 include require 等关键字。

第二部分是引用命名空间,使用 use xxxx;

调用命名空间下的方法,必须带命名空间,也就说不能把命名空间的函数导入到本文件的命名空间里面。

例子:

func.php

<?php
namespace func;

function show1($msg){
   echo 'show1:', $msg, "\n";
}

function show2($msg){
   echo 'show2:', $msg;
}

test.php

<?php
namespace test;

include_once "func.php";


use func;

func\show1('hello');
func\show2('hello');

运行后

D:\web\test>php test.php
show1:hello
show2:hello


2、包导入
【Python】

包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。

简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。

test.py
goods
|-- __init__.py
|-- jd.py
|-- taobao.py

goods/jd.py

#!/usr/bin/python
#coding=utf-8
def detail(name):
    print( '''jingdong's goods is '''+name)

def price(price):
    print( '''jingdong's price is ''', price)

goods/taobao.py

#!/usr/bin/python
#coding=utf-8
def detail(name):
    print( '''taobao's goods is '''+name)

def price(price):
    print( '''taobao's price is '''+price)

goods/__init__.py

#!/usr/bin/python
#coding=utf-8
print('__init__:',__name__)

test.py

#!/usr/bin/python
#coding=utf-8

import goods.jd, goods.taobao

goods.jd.detail('帽子')
goods.jd.price(123)

goods.taobao.detail('帽子')
goods.taobao.price('123')


运行:goods/__init__.py

E:\python370\python.exe D:/web/python/test/goods/__init__.py
__init__: __main__

运行:test.py

E:\python370\python.exe D:/web/python/test/test.py
__init__: goods
jingdong's goods is 帽子
jingdong's price is  123
taobao's goods is 帽子
taobao's price is 123


参考资料
http://www.runoob.com/python/python-modules.html
phpriji.cn | 网站地图 | 沪ICP备17015433号-1