python--模块、列表生成式、集合元祖列表

一、导入模块的两种方式

  1.直接使用import

1 import 模块名
2 
3 #调用
4 模块名.方法名()

  2.使用from…import…

1 from 模块名 import 方法名1,方法名2(from 模块名 import *)
2 
3 #调用
4 方法名()

  3.__name__:直接使用解释器调用模块时,值为__main__,在其他地方调用模块时, 会显示为模块名,通过这一特性可以更好的测试

def test1(object):
    print('1111')

def test2(object):
    print('2222')

if __name__ == '__main__':
    test1()
    test2()

  4. 一个模块在导入后进行修改,修改后的内容是无法直接生效的,如果想要让修改后的内容生效,可以用下面的办法

from imp import *

reload(模块名)

   5.修改导入模块的默认路径

import sys

print(sys.path)    #会打印出模块加载的默认路径,是一个列表

sys.path.append('/home/itcast/xxx')
sys.path.insert(0, '/home/itcast/xxx')    #可以确保先搜索这个路径

  5.模块的循环导入问题

    (1)首先定义一个a模块和一个b模块,在a模块中想要调用b模块中的b函数,在b模块中想要调用a模块中的a函数,这样就会形成一个死循环,报错

from b import b

def a():
    print('----a----')
    b()

a()
from a import a

def b():
    print('----b----')

def c():
    print('----c----')
    a()

c()

    (2)要谨防上面问题的发生,解决该问题应该写一个新的模块,在新的模块中调用

 二、其他

  1.__all__

__all__ = ["test1"];

def test1():
    print("11111")

def test2():
    print("22222")

#在模块中__all__后的部分添加模块中的方法名,如果在外部使用from ... import *时,只会导入__all__中的方法

  2.让程序自动导入在下一级目录下的模块,可以在下一级目录创建一个名为__init__.py的文件(此时该目录称之为包),然后在__init__.py文件中输入__all__ = ['模块名']的内容(注:该方法只是在导入模块式使用from ... import *时生效,想直接使用模块见下条)

  3.如果想直接使用该目录下的模块,需要在__init__.py文件中使用from . import 模块名进行导入

  4.列表推导式

a = [x for x in range(4)]
print(a)    #结果为:[0, 1, 2, 3]

a = [x for x in range(3, 4)]
print(a)    #结果为:[3]

a = [x for x in range(3, 19, 2)]
print(a)    #结果为:[3, 5, 7, 9, 11, 13, 15, 17]

a = [x for x in range(10) if x % 2 == 0]
print(a)    #结果为:[0, 2, 4, 6, 8]

a = [x for x in range(3) for j in range(2)]
print(a)    #结果为:[0, 0, 1, 1, 2, 2]

a = [(x, y) for x in range(3) for j in range(2)]
print(a)    #结果为:[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]

三、集合

  1.集合的定义:a = {11, 22, 33}

  2.集合的特点:集合会自动去重

  3.集合和列表的相互转换:set() list()  利用集合会自动去重的特点,可以对列表进行去重

转载于:https://www.cnblogs.com/peilanluo/p/8195919.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值