前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 学习之模块

Python 学习之模块

作者头像
Python技术与生活认知的分享
发布2018-07-03 12:18:12
5710
发布2018-07-03 12:18:12
举报
文章被收录于专栏:AzMark

阅读文本大概需要 6.1 分钟

写在前面

又到了一年一度的六一儿童节,在这里祝自己以及各位小伙伴节日快乐!也许你会说我永远都十八岁,可我只想傲娇地告诉你,我每天都在过六一,好吧。

自从国家教育局把与编程相关的学科内容纳入高中必修课之后,意味着在未来学习编程要从娃娃抓起,所以今天我们来陪着小猪佩奇一起学「Python」

Python

今天我们先补充完函数的知识,之后开始模块的学习。关于函数的知识算上今天是第三天,大家认真地消化一下,打好基础,之后的学习才能游刃有余。

函数

1

常用操作

迭代器1

代码语言:javascript
复制
"""

迭代器不但可以作用于 for 循环,还可以被 next() 函数不断调用并返回下一个值,

直到最后抛出 StopIteration 错误表示无法继续返回下一个值

生成器 generator 都是 Iterator 对象,但 list、dict、str 虽然是Iterable,却不是 Iterator。

把 list、dict、str 等 Iterable 变成 Iterator 可以使用 iter() 函数:

可以被 next() 函数调用并不断返回下一个值的对象称为迭代器:Iterator

"""


print(isinstance([], Iterator))  # F

print(isinstance((), Iterator))  # F

print(isinstance({}, Iterator))  # F

print(isinstance("", Iterator))  # F

print(isinstance((x for x in range(10)), Iterator))  # T


l = (x for x in range(1))

print(next(l))  # 0

# print(next(l))      # StopIteration


# 转成Iterator对象

a = iter([1, 2, 3, 4, 5])

print(next(a))  # 1


print(isinstance(iter([]), Iterator))  # T

print(isinstance(iter(()), Iterator))  # T

print(isinstance(iter({}), Iterator))  # T

print(isinstance(iter(""), Iterator))  # T

装饰器2.1

代码语言:javascript
复制
# 装饰器:是一个闭包,把一个函数当做参数返回一个替代版的参数,本质上就是一个返回函数的函数

# 简单的装饰器

def fun1():

    print("To be a better man!")


def outer():

    print("Do right decision!")

    # fun1()嵌套在outer()函数内

    fun1()

outer()

装饰器2.2

代码语言:javascript
复制
# fun1()被当做参数传入outer()

def outer(fun):

    def inner():

        print("Do right decision!")

        fun()

    inner()  # 内部直接调用inner()

outer(fun1)


def outer(fun):

    def inner():

        print("Do right decision!")

        fun()

    # 内部函数的名字,返回 inner 需要执行

    return inner

# f 是函数 fun1 的加强版本 此时等价于 inner

f = outer(fun1)

f()

装饰器2.3

代码语言:javascript
复制
# 使用 @ 符号将装饰器应用到函数 2.4 版本出现的

def outer(func):

    def inner(age):

        if age < 0:

            age = 0

        func(age)

    return inner

@outer

def say(age):

    print("Mark is %d years old" % age)


# 未使用 @outer

say = outer(say)

say(-10)  # 0


# 加入 @outer 后 say(-10) 等价于上面两行代码

say(-10)  # 0

装饰器2.4

代码语言:javascript
复制
def outer(func):

    def inner(*args, **kwargs):

        print("Be different")

        func(*args, **kwargs)

    return inner


# 使用@符号将装饰器应用到函数

@outer

def say(name, age):

    print("I'm %s,I'm %d years old" % (name, age))


# 未使用 @outer

say = outer(say)

say("Mark", 18)

# 加入 @outer 后 say("Mark", 18) 等价于上面两行代码

say("Mark", 18)

偏函数3

代码语言:javascript
复制
# 偏函数:把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单

import functools


# 转换大量的二进制字符串时

print(int("1010", base=2))  # 10


def f(s, base=2):

    return int(s, base)

print(f("1010"))


# 与 10 求和

def _sum(a, b=10):

    print(a+b)

_sum(1)  # 11


# 把一个函数固定住,形成一个新的函数

f = functools.partial(int, base=2)

print(f("1010"))

模块

1

模块简介

概述:

目前代码比较少,写在一个文件中还体现不出什么缺点,但是随着代码量越来越多,代码就越来越难以维护。为了解决难以维护的问题,我们把很多相似功能的函数分组,分别放到不同的文件中取,这样每个文件所包含的内容相对较少,而且对于每一个文件的大致功能可以用文件名来体现。很多编程语言都是这么来组织结构的,一个.py文件就是一个模块。

优点:

1.提高了代码的可维护性

2.提高了代码的复用度,当一个模块完毕,可以被多个地方引用

3.引用其他的模块(内置模块、第三方模块、自定义模块)

4.避免函数名和变量名的冲突

2

常用操作

导入内置模块1

代码语言:javascript
复制
# 导入内置模块

import sys


"""

Python 本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用

sys模块有一个argv变量,用list存储了命令行的所有参数

argv至少有一个元素,因为第一个参数永远是该.py文件的名称

"""

# sys.argv 是一个包含命令行参数的列表

print(sys.argv)

# 自动查找所需模块的路径的列表

print(sys.path)

自定义模块2

代码语言:javascript
复制
# 一个 _module2.py 文件就是一个模块


def div(a, b):

    c = a / b

    print(c)


def add(a, b):

    c = a + b

    print(c)


def mul(a, b):

    c = a * b

    print(c)


def sub(a, b):

    c = a - b

    print(c)

导入自定义模块3.1

代码语言:javascript
复制
# 引入模块  import module1[, module2, module3, module4]


import day06_moudle._module2

day06_moudle._module2.add(1, 2)  # 3

导入自定义模块3.2

代码语言:javascript
复制
# from ... import语句 作用:从模块中导入一个指定的部分到当前命名空间

from day06_moudle._module2 import add, div

# 注意:程序内容的函数可以将模块中的同名函数覆盖

add(1, 2)  # 3


def add(a, b):
    print(a+b+10)

add(1, 2)  # 13


div(4, 2)  # 2.0

导入自定义模块3.3

代码语言:javascript
复制
# 第三种最好不要多用,原因:程序内容的函数可以将模块中的同名函数覆盖

from day06_moudle._module2 import *      

add(1, 2)

div(4, 2)

OS模块介绍4.1

代码语言:javascript
复制
import os  # os 包含了普遍的操作系统


# 获取操作系统类型  nt-> windows  posix->Linux  Unix 或 Mac OS X

print(os.name)  # nt


# 打印操作系统的信息(windows不支持)

print(os.uname())


# 获取操作系统中的所有环境变量

print(os.environ)


# 获取指定环境变量

print(os.environ.get("PATH"))


# 获取当前目录

print(os.curdir)        # 以 . 表示当前


# 获取当前工作目录,即当前 python 脚本所在的目录

print(os.getcwd())


# 以列表的形式返回指定目录下的所有文件

print(os.listdir(r"C:\Users\Mark\PycharmProjects\Python"))


# 在当前目录下创建新目录

os.mk dir("mark")

# 删除目录

os.rm dir("mark")

# 获取文件属性

print(os.stat("file"))

# 重命名

os.rename("Mark", "Iu")

# 删除普通文件

os.remove("file1.text")   加文件后缀


# 运行shell命令

OS模块4.2

代码语言:javascript
复制
# 运行shell命令

import os

os.system("notepad")   # 运行记事本

# 终止记事本运行进程

os.system("taskkill /f /im notepad.exe")   

os.system("write")     # 运行写字本

os.system("mspaint")   # 运行画板

os.system("msconfig")  # 运行系统配置

# 16分钟后关闭计算机

os.system("shutdown -s -t 1000")

os.system("shutdown -a")  # 取消关闭计算机

OS.PATH 介绍4.3

代码语言:javascript
复制
# 有些方法存在于 os 模块里,还有些存在于 os.path 中


# 查看当前的绝对路径

print(os.path.abspath("./file"))

# 拼接路径

p1 = r"C:\Users\Mark\PycharmProjects\Python\test.py"    # p1结束可以有斜杠 \\

# 注意:参数2里开始不要有斜杠

p2 = "Mark\Iu"

print(os.path.join(p1, p2))

# 拆分路径

print(os.path.split(p1))

# 获取扩展名

print(os.path.splitext(p1))

# 判断是否是目录

print(os.path.isdir(p1))

# 判断文件是否存在

print(os.path.isfile(p1))

# 判断目录是否存在

print(os.path.exists(p1))

# 获得文件大小(字节)

print(os.path.getsize(p1))

# 文件的目录

print(os.path.dirname(p1))

# 文件的名字

print(os.path.basename(p1))

写在后面

最后给大家推送波福利!!!如果你打算入手或着正在学习Python,欢迎加入我们一起学习。后台回复「Python」,获取到你想要的资源。同时我们组建了一个Python技术学习群,里面大佬与小白都有,有很好的学习氛围。想要进群学习的,加 Mark 微信「IMark950831」,备注「加群」,期待你的到来!

好了,今天的分享就到这了,觉得写得不错的,点赞转发支持下。

点赞、转发是一种态度。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python梦工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档