python学习之引入模块
努力从来不晚,以前的荒废时光让人懊悔,但之后的不为所动才是失败的原因。
学习python有一周的时间了,断断续续的看了点语法,从今天开始记录python的学习,大部分的资料都来自《Python学习手册第四版》,有兴趣的可以去看原版书,谢谢。
python中的大部分功能都在模块中,类似java的导包和C++的include但又有不同,一个Python文件就是一个模块,不像java文件名必须和类名相似,Python模块中可以包括class和python普通语句,但如果想调用还是以class和函数为主。
1 Python模块引入的两种方式
(1)import
引入方式:import module1,module2
调用方式:module1.func()
特点:调用时需要带着模块名,这种方式把整个模块导入
(2)from module1 import name1,name2,name3
引入module1模块中的name1,name2函数或者对象或者变量等(name1,name2,name3必须是module1含有的)
调用方式:name1 (),name2
特点:调用时可以直接使用函数或对象,这种方式不会把整个模块导入。
(3)from module1 import *
调用方式:同2
特点:把整个模块的所有内容导入
例子:
ClassDemo.py
class MyClass:
i = 12345
def f(self):
return 'hello world'
data = "hello World"
def getData():
return "getdata"
class People:
name = ''
age = 0
_weight = 0
def __init__(self,n,a,w):
self.name = n
self.age = a
self._weight = w
def speak(self):
print("name"+self.name)
def getTime():
return "getTime()"
引入:
ClassOuterImport.py ,ClassOuterFrom.py和ClassDemo.py 同级目录
import ClassDemo
print(ClassDemo.getTime())
print(ClassDemo.data)
print(ClassDemo.MyClass())
print(ClassDemo.People("xiaoming",22,"good").name)
from ClassDemo import getTime,getData,data,MyClass,People
print(getTime())
print(data)
print(MyClass())
print(People("xiaoming",22,"good").name)
2 Python中不同包下的引用
Python中包的概念类似java中的包,简单说就是定义在不同目录下,这样既有利于组织文件结构,又能减少代码冲突。
Python利用Pycharm建立新的package时会自动在目录下建立__init__.py的文件,文件内容为null,__init__.py是python package的标识,如果是普通的目录则不会存在__init__.py文件。
该文件的内容可以为空,也可以写代码但是建议不要写逻辑代码,如果内容为空没有__init__.py文件也是可以的,__init__.py一般的作用是,在导入一个包时,实际上是导入了它的__init__.py文件,可以在__init__.py文件中批量导入所需要的模块,而不再需要一个一个的导入。
Python模块在不同包中的引用
普通导入,不是批量导入
import 方式:
import com.py.module1
import 调用方式;
com.py.module1.fun1()
from方式:
from com.py.module1 import name1
from调用方式
name1
在pag包下建立
引用:
#import引用pag包下的DemoSub和使用方式
import pag.DemoSub
pag.DemoSub.output()
pag.DemoSub.gooood()
###########################################3
#from引用pag包下的DemoSub和使用方式
from pag.DemoSub import gooood,output
gooood()
output()
如果想要批量引入(__init__.py):
引用方式:
from pag import *
Demosub2.getDemoSub2()
DemoSub.gooood()
3 引用上级目录的模块
使用sys
库添加路径