python怎么进阶_菜鸟世界 -python进阶---模块

1、什么是模块

当数据多了的时候,需要有东西来装数据,根据使用目的,Python提供了list,tuple,dict,set,此外还有一些数据结构。当代码多了的时候,需要一种方式把代码组织起来,于是有了函数。

当函数多了的时候,该怎么组织函数呢?前面的数据结构,函数,我从组织管理的角度来阐释他们,都是因为面对的问题太多了,因此需要抽象封装。你写了几个和时间转换相关的函数,同时还写了几个和文件操作相关的函数,请问,你会把他们放在一个脚本里么?

如果是我,就不会这样做。我会写两个脚本,一个脚本专门放和时间处理有关的函数,一个脚本专门放和文件操作相关的函数。这样做有非常多的好处,查找,修改都变的非常方便,想想你自己的电脑里,电影会和歌曲放在同一个文件夹下么?

当我们把一类函数放在一个脚本里时,这个脚本就是一个模块。不要被这些陌生的名词吓到,我们平时生活中很多的做法都是模块化的,你书架上的书肯定是按照类别存放的,你的衣物也大约是按照季节整理的,你的抽屉也是划分了不同的存储功能,第一层专门放小工具,第二层专门放证件。。。。。即便你是一个生活凌乱的人,厨房里的盘子和碗肯定是分开来放的吧,一定是盘子罗在一起,碗罗在一起,然后碗落在盘子上,不可能是一个盘子,一个碗,再一个盘子一个碗。

2、如何使用

新建一个脚本,名为kwsyTime.py,内容如下

# coding=utf-8

import datetime

import time

def seconds_to_datetime(seconds):

'''秒转日期'''

time_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(seconds))

return datetime.datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')

def datetime_to_seconds(date):

'''日期转秒'''

return int(time.mktime(date.timetuple()))

def get_today_start():

'''获得今天0点时间'''

now = datetime.datetime.now()

return datetime.datetime.strptime(str(now)[:10], '%Y-%m-%d')

def get_today_start_seconds():

today = get_today_start()

return datetime_to_seconds(today)

2.1 引用模块

再新建一个脚本,名为test.py,我要在test.py这个脚本里去引用kwsyFile这个模块,使用这个模块的get_today_start函数,代码如下

#coding=utf-8

import kwsyTime

print kwsyTime.get_today_start()

注意下面两点

模块的名称,就是脚本的名称去掉.py

想要使用某个方法,就在这个模块的后面加上一个点,再加上方法的名字

2.2 from 引用

除了使用import 这种直接引用模块的方法,还有一种from 的引用方法

#coding=utf-8

from kwsyTime import get_today_start

print get_today_start()

这种写法,from 指明要引用的模块,import 指明要引用的东西,如果你不确定要引用什么,可以在import 后面加 *,表示全部引入

from kwsyTime import *

2.3 命名冲突

上面这种from 的引用方法有一个好处,就是调用被引入模块方法时,不用每次都写模块名称,但是也存在一个弊端,就是容易引起命名冲突,看代码

#coding=utf-8

from kwsyTime import get_today_start

print get_today_start()

def get_today_start():

return u'冲突'

print get_today_start()

kwsyTime模块里有一个方法叫get_today_start,而test.py模块里也有一个这个名字的方法,程序执行的结果是

2017-03-22 00:00:00

冲突

第一次执行时,执行的是kwsyTime模块里的方法

第二次执行时,执行的是test.py脚本里的方法

由于名称相同,一不小心就弄混了,所以,使用from这种引用方法时,一定要注意是不是存在命名冲突的情况。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值