写点什么

11. 用别人写好的代码,完成我的工作,剩下的时间去摸鱼

发布于: 2021 年 02 月 16 日
11. 用别人写好的代码,完成我的工作,剩下的时间去摸鱼

今天是持续写作的第 <font color="red">11</font> / 100 天。

如果你有想要交流的想法、技术,欢迎在评论区留言。


Python 为何那么多人都喜欢,就是因为很多大佬给我们造好了“轮子”了,拿着大佬的轮子,我骄傲~


已完成的文章


  • 1.这才是 Python 学习的正确起手姿势,滚雪球学 Python

  • 2. 无门槛学会数据类型与输入、输出函数,滚雪球学 Python

  • 3. 无转折不编程,滚雪球学 Python

  • 4. 列表一学完,Python 会一半,滚雪球学 Python

  • 5. Python 循环的本质就是一段代码懒得重复写

  • 6. Python 元组,不可变的列表,滚雪球学 Python

  • 7. ✎ 会查新华字典不?会。Python 字典已经掌握了

  • 8. ㊙ Python 集合三板斧,滚雪球学 Python

  • 9. Python 学习过程的第一个山坡,99%的人都倒在了山坡下

  • 10. 比找女朋友还难的技术点,Python 面向对象


**本系列文章将在 2021 年春节前完成,欢迎关注,点赞,评论 --- 梦想橡皮擦**


十一、Python 模块的设计与应用


模块是一个概念,它包含 1~N 个文件,如果文件是 Python 代码文件(就是.py 结尾的文件),那每个文件中可以包含函数,类等内容。


在公司工作,很多项目都是协作开发来完成,一个项目后面可能存在很多工程师,为了开发方便,每个人负责的功能函数或者类都尽量封装在一个模块中,模块英文请记住 module,有的地方叫做 ,也有的地方叫做 包(package),对于现阶段的你来说,当成一样的内容就好。


互联网上存在大量的开源模块,这些模块最大的优势就是免费,很多时候使用这些模块能极大的提高编码效率,这也是很多人喜欢 Python 的原因之一。


11.1 将函数放到模块中


模块学习的过程,不能按照语法结构来学习,它是一种抽象的知识,是一种代码的设计方式。例如将写好的函授放到模块中。


# 声明一个宫保鸡丁的函数def kung_pao_chicken(*ingredients):    """    这个函数用于输出宫保鸡丁的主料    """    print("宫保鸡丁的主料有:")    for item in ingredients:        print(item)
# 声明一个鱼香肉丝的函数def yu_shiang_shredded_pork(**args): """ 这个函数目的获取用户输入进来的参数 """ print("鱼香肉丝需要啥") for item in args.items(): print(item)
复制代码


以上内容声明了两个函数,当然函数名你必须好评,翻译的准确有意义。


接下来就将上面的函数整合到一个模块中去,建立一个新的文件 stir_fry.py 然后将两个函数复制到新的文件中。


stir_fry.py 文件包含那两个函数


好了,完成任务,一个模块创建完毕了,这个 stir_fry.py 文件就是一个模块。


你现在脑中肯定出现黑人问号脸了,What?这就完了。是的,完了,一个低配模块完成。


下面就可以拿着这个模块给别人使用去了。会写模块成为大佬之后,就可以给新入行的菜鸟指点江山,写模块了。


11.2 应用函数模块


11.2.1 import 导入模块


在另一个文件中,可以通过 import 模块名 导入一个模块,例如导入刚才创建的 stir_fry 模块。


注意要新建一个文件,文件名随意但是不要与模块同名。


import stir_fry # 注意导入模块不能带中划线,所以模块的文件名也不能带下划线。
复制代码


如果想要使用模块中的函数,只需要参考下述语法格式即可。


模块名.函数名称()
复制代码


通过 stir_fry 调用模块中的函数。


import stir_fry
stir_fry.kung_pao_chicken("黄瓜", "胡萝卜", "鸡胸肉", "花生米")stir_fry.yu_shiang_shredded_pork(old="橡皮擦的鱼香肉丝放鱼", new="大佬的鱼香肉丝不放鱼")
复制代码


当通过 import stir_fry 导入模块之后,该模块内的所有函数都一次性导入到新文件中了。


11.2.2 导入模块某个函数


如果不想导入模块的所有函数,而只导入某个函数,使用一下语法可以解决该问题。


from 模块名 import 函数名
复制代码


修改上一节案例:


from stir_fry import kung_pao_chicken
kung_pao_chicken("黄瓜", "胡萝卜", "鸡胸肉", "花生米")# 下面的函数无法调用,因为未导入yu_shiang_shredded_pork(old="橡皮擦的鱼香肉丝放鱼", new="大佬的鱼香肉丝不放鱼")
复制代码


直接导入模块中的函数,使用时不需要通过 模块名. 的方式调用,直接书写函数名即可。


导入模块中多个函数


语法格式如下:

from 模块名 import 函数名1,函数名2,...
复制代码


导入模块所有函数


语法格式如下:

from 模块名 import *
复制代码


11.2.3 as 别名


刚才通过模块导入函数你应该发现一个潜在的问题,就是函数名称太长怎么办,除了名称太长,还存在一种情况,模块中的函数名称与当前文件中函数的名称,存在重名的风险。此时可以学习一个新的内容,通过 as 给模块导入进来的函数起个别名,然后在该文件都使用别名进行编码。


语法格式如下:

from 模块名 import 函数名 as 别名
复制代码


上述内容应用到案例中如下述代码:


from stir_fry import kung_pao_chicken as pao
pao("黄瓜", "胡萝卜", "鸡胸肉", "花生米")
复制代码


as 别名也可直接作用于模块,语法格式如下:


import 模块名 as 别名
复制代码


11.3 将类放到模块中


随着程序设计变的越来越复杂,只把函数放到模块中已经不能满足要求了,需要将更高级的内容放到模块中,也就是类。


首先在 dog_module.py 文件中定义一个类。


class Dog():    def __init__(self):        self.name = "小狗"
def say(self): print("汪汪汪")
复制代码


此时的 dog_module 就是模块的名称,而在该模块中只有一个类 Dog,也可以在该模块中多创建几个类,例如:


class Dog():    def __init__(self):        self.name = "小狗"
def say(self): print("汪汪汪")
class Cat(): def __init__(self): self.name = "小猫"
def say(self): print("喵喵喵~")
复制代码


11.3.1 import 导入模块(类)


与导入模块的函数部分知识一样,如果希望导入一个模块中的类,可以直接通过下述语法格式实现:


import 模块名
复制代码


使用模块中的类,语法格式如下:


模块名.类名
复制代码


具体代码不在演示,自行完成吧。


11.3.1 导入模块某个类


导入模块的类和导入模块的的函数用法是一致的。


新建一个 demo.py 文件,在该文件导入 dog_module 模块中的类。


# 导入 dog_module 模块中的狗类from dog_module import Dog
dog = Dog()dog.say()
复制代码


从模块中导入多个类


该方式与函数的导入也一致,语法格式如下:

from 模块名 import 类名1,类名2,类名3...
复制代码


导入模块中所有类


from 模块名 import *
复制代码


学到这里,你应该已经发现导入模块中的函数与导入模块中的类,从代码编写的角度几乎看不出区别,对比着学习即可。


导入类的时候也可以应用别名,同样使用 as 语法。


11.4 常见模块


学习到这里你对模块是什么,模块怎么用已经有了一个基本认知,接下来先不用自己写一个特别牛的模块,我们先把一些常见的模块应用起来。


11.4.1 随机数 random 模块


通过随机数模块可以获取到一个数字,它的使用场景非常广,例如游戏相关开发、验证码相关、抽奖相关,学习了随机数之后可以完成一些非常不错的小案例。


randint 方法


导入随机数模块之后,可以通过 randint 方法随机生成一个整数,例如下述代码:


import random # 导入随机数模块
num = random.randint(1,10)print(num)
复制代码


反复运行代码会得到一个 1~10 之间的数字,由此可以 randint 方法中的参数含义。


randint(min,max) # min 最小值,max 最大值
复制代码


你可以尝试给 randint 函数起一个别名吗?


choice 方法


通过 choice 方法可以配合列表实现一些效果,choice 可以随机返回列表中的一个元素。

import random  # 导入随机数模块
play = random.choice(["足球", "篮球", "乒乓球", "棒球"])print(play)
复制代码


如果你想知道 choice 方法的具体用法,还记得怎么查询吗?


import random  # 导入随机数模块
print(help(random.choice))
复制代码


shuffle 方法


该方法可以将一个列表的顺序打乱。

import random  # 导入随机数模块
my_list = ["足球", "篮球", "乒乓球", "棒球"]random.shuffle(my_list)print(my_list)
复制代码


简单挑选了 random 模块中的三个方法做为说明,对于模块的学习,后面将为每个模块单开一篇文章书写。


11.4.2 时间 time 模块


时间模块是 Python 中非常重要的一个内置模块,很多场景都离不开它,内置模块就是 Python 安装好之后自带的模块。


time 方法

time 模块主要用于操作时间,该方法中存在一个 time 对象,使用 time 方法之后,可以获取从 1970年1月1日 00:00:00 到现在的秒数,很多地方会称作时间戳。


import time
print(time.time())
复制代码


输出内容:


1606810686.3747146
复制代码


sleep 方法

该方法可以让程序暂停,该方法的参数是的单位是


使用语法格式为:

import timetime.sleep(10) # 程序暂停 10 秒再执行
复制代码


asctime 与 localtime 方法


以上两个方法都可以返回当前系统时间,只是展示的形式不同。

import time
print(time.asctime())
print(time.localtime())
复制代码


time 模块涉及的方法先只涉及这么多,后续滚雪球学习过程中在继续补充。


Python 还内置了很多模块,例如 sys 模块、os 模块、json 模块、pickle 模块、shelve 模块、xml 模块、re 模块、logging 模块等等内容,后续都将逐步学习到,有可能需要分开专题给大家讲解。


11.5 这篇博客的总结


Python 模块,快速编码的一种途径,很多时候第三方模块可以帮你解决大多数常见编码场景,让你在编码的道路上飞奔。


**想学 Python 爬虫,可以订阅橡皮擦专栏哦~** 🈲🈲🈲🈲 点击发现惊喜 🈲🈲🈲🈲


🈚🈚🈚🈚🈚




发布于: 2021 年 02 月 16 日阅读数: 19
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
11. 用别人写好的代码,完成我的工作,剩下的时间去摸鱼