2018-04-26-python module

2018-04-26  本文已影响0人  DeveloperCong

__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中只有在实际获取的时候才真正创建对象 分配内存

列表推导式:

推导一个列表:实际上是对 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}
上一篇 下一篇

猜你喜欢

热点阅读