python3学习06 --包,模块

今天公司组织了篮球赛,打完放假了(打一半抽筋了23333)
只学习了一点点 记录一下吧

# python3 模块
'''
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。
'''

import sys


print("python的路径为:",sys.path)

#引入同包/同文件夹下的模块
import support
support.print_func('zxy') #引入模块support,打印了: zxy

#引入不同包下的py文件  注意引入外部的一定是个包,而且有__init__.py 文件
from pythonStudy.study06_import_test.fib import fab
for x in fab(5):
    print(x)

#引入同包 但不同层级的文件
from pythonStudy.study06.import_test import printMe
printMe.printInfo('zxy') # zxy

# 引入包这里问了朋友几遍 感觉有点绕2333


#深入模块

'''
__name__属性
一个模块被另一个程序第一次引入时,其主程序将运行。
如果我们想在模块被引入时,模块中的某一程序块不执行,
我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
'''
# 我被别人引入运行

#dir函数
# 内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回:

print(dir(printMe))
#['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'printInfo', 'runMine', 'runOther']

#包
'''
在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。

目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包,主要是为了避免一些滥俗的名字(比如叫做 string)不小心的影响搜索路径中的有效模块。

最简单的情况,放一个空的 :file:__init__.py就可以了。当然这个文件中也可以包含一些初始化代码或者为(将在后面介绍的) __all__变量赋值。

'''

#—__all__属性
'''
如果我们使用 from sound.effects import * 会发生什么呢?

Python 会进入文件系统,找到这个包里面所有的子模块,然后一个一个的把它们都导入进来。

但这个方法在 Windows 平台上工作的就不是非常好,因为 Windows 是一个不区分大小写的系统。

在 Windows 平台平台上,我们无法确定一个叫做 ECHO.py 的文件导入为模块是 echo 还是 Echo,或者是 ECHO。

为了解决这个问题,我们只需要提供一个精确包的索引。

导入语句遵循如下规则:如果包定义文件 __init__.py 存在一个叫做 __all__ 的列表变量,那么在使用 from package import * 的时候就把这个列表中的所有名字作为包内容导入。

作为包的作者,可别忘了在更新包之后保证 __all__ 也更新了啊。
'''

感觉python的模块和包还有的研究,像__all__这种属性之类的,这个看到时候实际工作会不会用上吧,先埋个坑
放假之后就有的是时间来学习了。
这几天趁着晚上和平时工作闲暇时间,也差不多把基础搭起来了,过年假期内就开始搞爬虫了。毕竟年后就要入职了…

你可能感兴趣的:(学习记录,python)