python常用模块:包的使用、init作用、相对导入绝对导入与内置函数

本文目录:

一、包的详解
二、相对导入和绝对导入
三、内置模块补充

 

 

一、包的详解

1、包是什么

    包其实也是一个模块,只不过是一个大的模块下包含一堆模块的载体
    本质上也是一个文件夹,与普通文件的区别在于其中包含一个init的文件

2、包的作用

    包的作用就是提高代码的可读性和扩展性

3、怎么使用包

    创建一个package文件夹,在该文件下创建多个文件
    使用包和调用模块一样,import 包名

4、init文件的作用

    模块调用会发生一下三种情况:
      1.会创建一个名称空间
      2.会执行模块中的代码
      3.在执行文件中产生的名称指向模块名称的空间

    但包是一个文件夹是包不是文件,所以init在导入包时,就执行了包上模块功能

    好处:可以在init文件下调用多个模块中的功能,就无需在挨个查找

    总结:init其实是讲所有模块名导入到该文件下,继而将所有模块名称下的功能导入其中

    注意:由于init文件作为模块导入,所以sys.path中不包含该目录,所以导入时要制定该名

5、包的嵌套

    定义:包的嵌套的就是包中有包的意思,包中的包被称为子包
    要是用子包中的内容和模块方法一样,在子包中的init中导入需要的内容,但要注意不管                  是子包都是做为模块导入的

    调用sys.path中肯定不包含子包路径,导入时需要从文件目录往下找

6、导入需要注意的事项

    1.使用import导入模块时可以加点来访问下层
    2.注意点的左边必须是包名
    3.在import后面不可以有点,必须有一个明确的名字

 

二、相对导入和绝对导入

  1、相对导入的定义

    从sys.pash开始的完整路径开始导入

  2、绝对导入的定义

    相对于被导入模块的路径
    语法为 "."表示当前路径,”.."表示上一层路径,“..."上上层的路径 以此类推

  3、注意事项:
    1.建议不超过三层
    2.相对导入只能用于包的内部模块之间的调用

  4、常见的错误演示

    绝对导入时没有从当前文件开始
    执行文件中用了绝对导入
    跳出了顶层包的范围

 

三、内置模块的补充

print(complex(1))
#complex 转换为复数形式

print(dir())
#查看内置属性和方法,不传参数就是当前对象

print(divmod(10,3))
#执行除法运算,返回商和余数

print(enumerate(["a",2,3,4]))
#将值和索引组成元组

print(globals())
#查看全局空间中有哪些名称

def func():
    x=100
    print(locals)
func()
#locals 查看局部空间有哪些名称

print(hash([1,2,3]))
#不可变类型可hash 可变类型不可hash

print(help())
#查看帮助信息

li=[1,2,3,4]
res=li.__iter__()
res.__nest__()
iter(li)
next(res)
#可迭代对象和可迭代器对象

print(len(li))
#代表长度

print(id(100))
print(memoryview("100".encode("utf-8")))
#id和memoryview 找内存地址

print(pow(2,3,3))#2**3%3
#2的三次方除3

print(type(str([1,2,3])))
#返回对象字符串的表示

print(list(reversed([1,2,3])))
#reversed反转顺序

print(round(1.2))
#四舍五入

res=slice(1,3)
li=[1,2,3,4,5,6,7,8,9]
print(li[1:3])
print(res)
#slice切分的意思

print(list(zip([1,2,3],[3,2,1])))
#zip拉链函数将多个可迭代对象中的数据一一对应

print(vars())
#不传参数和locals一样,如果传参那就调用这个对象的__dict__

 

    

posted @ 2018-10-13 17:38  仗剑煮大虾  阅读(784)  评论(0编辑  收藏  举报