2018-04-26-python|2018-04-26-python module

__name __ 导入模块的时候会从头到尾执行一遍,因此如果我们在我们的.py 文件中,写了 直接能执行的代码,比如print("xxx") 这样的代码,就会在导入的时候执行一遍,但是有些是我们的测试代码,需要在开发模块的时候进行测试,还比如,我们自己开发的功能调用的时候需要执行一个方法,但是呢,如果我们被别人引入的时候,不希望执行这些代码:
python有一个 变量叫 __name__ 在直接执行的时候的值为 __main__ 在作为模块导入的时候为 模块的名字;
因此:

if __name__== " __main__ ": # 需要执行的代码 main()

什么是模块?
模块就是.py文件,或者文件夹
导入模块的方法:
import moduleName
form moduleName import 功能
其中功能包括: 函数,全局变量,类
有一个属性可以控制 模块对外开放的功能
__all__ = ['test', 'test2'] """ 列表中添加的是需要暴露的功能,也就是 函数,全局变量, 类等,只有这个列表中有的功能外部才能导入, 如果不写,默认是可以导入全部功能。 """

包 : 按照包来组织代码
1 需要创建一个文件夹,在这个文件夹下,创建一个__init__.py文件,这样这个文件夹就能够称之为一个包;
这个文件夹下面可以放置多个py文件
__init__.py 文件里也可以定义__all__属性,和上面类似,导入一个包的时候,就会执行__init__.py 这个文件,因此如果在__init__.py文件中写上: import xxx :就表示可以使用这个功能。
发布一个python包:
需要创建 setup.py文件
程序传参;
ping 192.158.1.13
这里面的ip地址是可以变的,因此程序肯定是可以在执行的时候接收到这些参数,然后进行处理---python是如何接收传参的呢?
python中有一个模块叫 sys
import sys sys.argv: 这个参数就代表程序执行的时候传入的参数 argv是一个列表,列表的第一个元素 也就是argv[0]:表示的程序的名称 argv[1]....等 就表示程序运行时传入的参数

range的危害:
在python2中range会创建到内存中,一次如果创建一个数量很大的range列表,会导致内存占用过多甚至溢出。python3中只有在实际获取的时候才真正创建对象 分配内存
列表推导式:
【2018-04-26-python|2018-04-26-python module】推导一个列表:实际上是对 for xx in xxxx:循坏的一个简写
1 原始版: a = [] for i in range(1, 10): a.appeng(i)2简略版 []: 代表列表 [ for i in range(1,10)] :列表中for循环 [i for i in range(1,10)] 列表中的元素为i 因此前面再加个i 既然可以for循环,也可以再进行扩展 [i for i in range(1, 10) if i%2 == 0] :满足连个条件的i [(1,1), (1, 2),...] 列表中是元组如何构成? [(i, j) for i in range(1, 10) for j in range(10)]

set集合: 自动去重的无序列表
set2 = {11, 22, 33, 44}

    推荐阅读