乐趣区

关于python:抬抬小手学Python-用别人代码完成我的工作剩下的时间去摸鱼附源码

Python 模块的设计与利用

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

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

互联网上存在大量的开源模块,这些模块最大的劣势就是收费,很多时候应用这些模块能极大的进步编码效率,这也是很多人喜爱 Python 的起因之一。

将函数放到模块中

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

# 申明一个宫保鸡丁的函数
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?这就完了。是的,完了,一个低配模块实现。

上面就能够拿着这个模块给他人应用去了。会写模块成为大佬之后,就能够给新入行的菜鸟指点江山,写模块了。

利用函数模块

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 导入模块之后,该模块内的所有函数都一次性导入到新文件中了。

导入模块某个函数

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

from 模块名 import 函数名

批改上一节案例:

from stir_fry import kung_pao_chicken

kung_pao_chicken("黄瓜", "胡萝卜", "鸡胸肉", "花生米")
# 上面的函数无奈调用,因为未导入
yu_shiang_shredded_pork(old="橡皮擦的鱼香肉丝放鱼", new="大佬的鱼香肉丝不放鱼")

间接导入模块中的函数,应用时不须要通过 模块名. 的形式调用,间接书写函数名即可。

导入模块中多个函数

语法格局如下:

from 模块名 import 函数名 1, 函数名 2,...

导入模块所有函数

语法格局如下:

from 模块名 import *

as 别名

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

语法格局如下:

from 模块名 import 函数名 as 别名

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

from stir_fry import kung_pao_chicken as pao

pao("黄瓜", "胡萝卜", "鸡胸肉", "花生米")

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

import 模块名 as 别名

将类放到模块中

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

首先在 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("喵喵喵~")

import 导入模块(类)

与导入模块的函数局部常识一样,如果心愿导入一个模块中的类,能够间接通过下述语法格局实现:

import 模块名

应用模块中的类,语法格局如下:

模块名. 类名

具体代码不在演示,自行实现吧。

导入模块某个类

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

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

# 导入 dog_module 模块中的狗类
from dog_module import Dog

dog = Dog()
dog.say()

从模块中导入多个类

该形式与函数的导入也统一,语法格局如下:

from 模块名 import 类名 1, 类名 2, 类名 3...

导入模块中所有类

from 模块名 import *

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

导入类的时候也能够利用别名,同样应用 as 语法。

常见模块

学习到这里你对模块是什么,模块怎么用曾经有了一个根本认知,接下来先不必本人写一个特地牛的模块,咱们先把一些常见的模块利用起来。

随机数 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 模块中的三个办法做为阐明,对于模块的学习,前面将为每个模块单开一篇文章书写。

工夫 time 模块

工夫模块是 Python 中十分重要的一个内置模块,很多场景都离不开它,内置模块就是 Python 装置好之后自带的模块。

time 办法
time 模块次要用于操作工夫,该办法中存在一个 time 对象,应用 time 办法之后,能够获取从 1970 年 1 月 1 日 00:00:00 到当初的秒数,很多中央会称作工夫戳。

import time

print(time.time())

输入内容:

1606810686.3747146

sleep 办法
该办法能够让程序暂停,该办法的参数是的单位是

应用语法格局为:

import time
time.sleep(10) # 程序暂停 10 秒再执行

asctime 与 localtime 办法

以上两个办法都能够返回以后零碎工夫,只是展现的模式不同。

import time

print(time.asctime())

print(time.localtime())

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

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

这篇博客的总结

Python 模块,疾速编码的一种路径,很多时候第三方模块能够帮你解决大多数常见编码场景,让你在编码的路线上飞奔。

退出移动版