挑战30天学完Python:Day12 模块

这篇具有很好参考价值的文章主要介绍了挑战30天学完Python:Day12 模块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

📘 Day 12

🎉 本系列为Python基础学习,原稿来源于 30-Days-Of-Python 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过30天完成正儿八经的系统化实践。此系列适合零基础同学,或仅了解Python一点知识,但又没有系统学习的使用者。总之如果你想提升自己的Python技能,欢迎加入《挑战30天学完Python》

模块Modules

什么是Module

模块是在应用程序中一个包含一组代码或一组函数的文件。模块可以是包含单个变量、函数或大型代码库的文件。

创建Module

要创建一个module我们在python脚本中写下我们的代码,并将它保存为 .py 的文件。现在让我们尝试在项目文件夹中创建一个名为mymodule.py的文件。让我们在这个文件中编写一些代码。

这份文件你也可以从项目源代码目录12_Day_Modules获取

# mymodule.py
def generate_full_name(firstname, lastname):
    space = ' '
    fullname = firstname + space + lastname
    return fullname


def sum_two_nums(num1, num2):
    return num1 + num2


gravity = 9.81
person = {
    "name": "Qi",
    "age": 20,
    "country": "China",
    "city": 'ShangHai'
}

在你自己的项目中创建一个 main.py 文件,然后导入mymodule.py模块文件。

导入Module

要导入文件,我们只需使用 _import_ 关键字加文件名即可。

# main.py
import mymodule
print(mymodule.generate_full_name('Mega', 'Qi')) # Mega Qi

从Module中导入函数

在一个文件中兴许包含很多的函数方法,我们可以通过不同的方式进行导入。

# main.py
from mymodule import generate_full_name, sum_two_nums, person, gravity
print(generate_full_name('Mega', 'Qi'))
print(sum_two_nums(1, 9))
mass = 100
weight = mass * gravity
print(weight)
print(person['name'])

从模块导入函数并重命名

在模块的导入的同时,我们也可以进行别名设置。

# main.py file
from mymodule import generate_full_name as fullname, sum_two_nums as total, person as p, gravity as g

print(fullname('Mega', 'Qi'))
print(total(1, 9))
mass = 100
weight = mass * g
print(weight)
print(p)
print(p['name'])

导入内置模块

与其他编程语言一样可以导入内置模块,通过使用关键字 import 导入文件/函数。现在让我们导入一些常用的模块。这些内置模块如:math, datetime, os,sys, random, statistics, collections, json, re

os 模块

使用 python 中 os 模块可以自动执行许多系统操作。Python中的 OS 模块提供了诸如:创建、更改当前工作目录、删除目录(文件夹)、获取其内容、更改和标识当前目录等函数。

# 导入os模块
import os
# 创建文件夹
os.mkdir('directory_name')
# 切换到当前刚才创建的directory_name文件夹
os.chdir('directory_name')
# 获取当前的工作路径目录
os.getcwd()
# 切换到上级目录
os.chdir('..')
# 删除文件夹
os.rmdir('directory_name')

sys 模块

内置模块sys提供了一些python运行时环境操作的部分方法和变量。功能 sys.argv 获取传递给Python脚本命令行参数列表。列表索引 0 始终是文件的名,后边从1开始的是真正的命令行参数。

例子代码 script.py 文件:

import sys
# print(sys.argv[0], argv[1],sys.argv[2])  
# 命令行执行将打印: 文件名 参数1 参数2
print('Welcome {}. Enjoy  {} challenge!'.format(sys.argv[1], sys.argv[2]))

现在让我们来看看,在命令行中执行写的这个脚本将如何:

python script.py Qi 30DaysOfPython

执行结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sIXj6IFO-1682519934550)(…/images/day1201_sys_args.png)]

一些有用的sys命令:

import sys
# 退出
sys.exit()

# python可以处理或存储为变量的最大值
sys.maxsize

# 获取系统配置环境变量
sys.path

# 获取当前python版本
sys.version

上边 maxsize 大小取决于系统:

  • 32位:该值将为2^31-1,即2147483647
  • 64位:该值将为2^63-1,即9223372036854775807

statistics 模块

统计模块提供数值数据的数学统计功能。本模块中定义的常用统计函数: mean, median, mode, stdev 等。

from statistics import * # 导入所有 statistics modules
ages = [20, 20, 4, 24, 25, 22, 26, 20, 23, 22, 26]
print(mean(ages))       # 算术平均值 21.09090909090909
print(median(ages))     # 方法返回数值数据的中值 22
print(mode(ages))       # 法计算给定数值或名义数据集的众数 20
print(stdev(ages))      # 计算标准差 6.106628291529549

math 模块

此模块包含许多数学运算和常量。

import math
print(math.pi)           # 3.141592653589793, 圆周率(Pi)常量
print(math.sqrt(2))      # 1.4142135623730951, 平方根
print(math.pow(2, 3))    # 8.0, 指数函数
print(math.floor(9.81))  # 9, 四舍五入取底
print(math.ceil(9.81))   # 10, 四舍五入取高
print(math.log10(100))   # 2.0, 以10为底的对数

现在,我们已经导入了 math 模块,它包含了许多函数能帮助我们进行数学计算。那么如果要想查看模块都有那些函数,我们可以使用 help(math)dir(math) 来显示模块中可用的函数。如果我们只想从模块中导入一个特定的函数,我们按如下方式导入它:

from math import pi
print(pi)

同时也可以导入多个函数

from math import pi, sqrt, pow, floor, ceil, log10
print(pi)
print(sqrt(2))
print(pow(2, 3))
print(floor(9.81))
print(ceil(9.81))
print(log10(100))

但如果我们想导入数学模块中的所有函数,我们可以使用 *

from math import *
print(pi)
print(sqrt(2))
print(pow(2, 3))
print(floor(9.81))
print(ceil(9.81))
print(log10(100))

同上导入时,还可以为函数设置别名。

from math import pi as PI
print(PI)

字符串模块

字符串模块在很多方面都是非常有用的模块。下面的例子展示了字符串模块的一些用法。

import string

# ascii字母
print(string.ascii_letters) # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

# 展示所有数字
print(string.digits)        # 0123456789

# 展示标点标点符号
print(string.punctuation)   # !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Random 模块

到目前为止,您已经熟悉了导入模块用法。让我们在导入另外一个模块来最后熟悉它。 模块 random 它给返回一个0到0.9999之间的随机数。当然它有很多模块,但在本篇中只用到 randomrandint

from random import random, randint
print(random())   # 它返回一个介于0到0.9999之间的值
print(randint(5, 20)) # 它返回一个[5,20]的随机整数 

🌕 你已经坚持学习更高级的内容了。继续前进!你刚刚完成了第12天的挑战,你在通往伟大的道路上前进了12步。现在按例来做一些练习吧,来消化和巩固下学习成功。

💻 第12天练习

练习1级

  1. 编写一个 random_user_id 函数,它的功能是随机生成6位字符(包括字母和数字)。

      print(random_user_id());
      '1ee33d'
    
  2. 修改上边方法。声明一个名为 user_id_gen_by_user 的函数。它不设置参数,但它使用input() 接受两个输入。其中一个输入是字符的数量,第二个输入是应该生成的id的数量。

      print(user_id_gen_by_user()) # 用户输入: 5 5
      # 输出举例(因为是随机每次均不一样,所以以下值仅为举例):
      #kcsy2
      #SMFYb
      #bWmeq
      #ZXOYh
      #2Rgxf
      
      print(user_id_gen_by_user()) # 16 5
      # 实际以你练习和输入的两个数为准
      #1GCSgPLMaBAVQZ26
      #YD7eFwNQKNs7qXaT
      #ycArC5yrRupyG00S
      #UbGxOFI7UXSWAyKN
      #dIV0SSUTgAdKwStr
    
  3. 编写一个名为 rgb_color_gen 函数。它将生成rgb颜色(3个值,每个值从0到255)。

    print(rgb_color_gen())
    # rgb(125,244,255) - 输出格式
    

练习2级

  1. 编写一个函数 list_of_hexa_colors,它返回数组中任意数量的十六进制颜色(在#之后写入的六个十六进制数)。十六进制数字系统由16个符号组成,0-9和字母表的前6个字母a-f。
  2. 编写一个函数 list_of_rgb_colors,它返回任意数量的RGB颜色数组。
  3. 编写一个函数 generate_colors,它可以生成任意数量的hexa或rgb颜色。
    generate_colors('hexa', 3) # ['#b0c6e9', '#c06ee9', '#871ff7'] 
    generate_colors('hexa', 1) # ['#3b2366']
    generate_colors('rgb', 3)  # ['rgb(85,243,216)', 'rgb(22,39,233)', 'rgb(235,151,123)']
    generate_colors('rgb', 1)  # ['rgb(221,103,205)']
    

练习3级

  1. 调用你的编写的函数 shuffle_list,它接受一个列表作为参数,并返回一个打乱的列表。
  2. 编写一个函数,返回由0-9范围内的7个随机数组成的数组。所有的数字必须是唯一的。

🎉 CONGRATULATIONS ! 🎉文章来源地址https://www.toymoban.com/news/detail-426608.html

到了这里,关于挑战30天学完Python:Day12 模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一天学完C++的标准模板库STL

    提到字符串,我们会想起C语言中的 char * ,这是一个指针。而在STL中 string 也是用来声明字符串的,但是 string 是一个类,需要导入库 #includestring 。 String 封装了 char * ,管理这个字符串,是一个 char* 型的 容器 。 string 本质上是一个动态的 char 数组。 使用String字符串的第一步

    2023年04月17日
    浏览(46)
  • STM32学习——半天学完正点原子入门篇例程,STM32:学会了吗?我:学废了✨

    本文代码均来正点原子标准例程 声明:本文不是教学文章,可能也不适合初学者阅读 不知为什么,最近总蹦出有很多想法(可能是工作太闲了)一会想学这,一会想学那,这不,突然想复习一下 STM32 了。 我好久以前就学过正点原子的课程,还买过一些开发板,但现在手上只

    2024年02月04日
    浏览(41)
  • 面试题30天打卡-day12

    Redis 中的 String 是使用简单动态字符串(SDS)实现的。SDS 是一种可变长度的字符串实现,它可以动态地调整自己的大小,而不像 C 语言中的字符串一样需要预先分配固定大小的内存空间。 SDS 在 Redis 中的优点是: 空间预分配:SDS 内部的空间预分配策略避免了多次重分配的操

    2023年04月26日
    浏览(39)
  • day12-内置模块和开发规范

    json模块,是python内部的一个模块,可以将python的数据格式 转换为json格式的数据,也可以将json格式的数据转换为python的数据格式。 json格式,是一个数据格式(本质上就是个字符串,常用语网络数据传输) json格式的作用? Python数据类型与json格式的相互转换: 数据类型 - j

    2024年04月08日
    浏览(65)
  • 30 Python的matplotlib模块

    概述         在上一节,我们介绍了Python的pandas模块,包括:Series、DataFrame、数据读取和写入等内容。在这一节,我们将介绍Python的matplotlib模块。matplotlib模块是一个Python的2D绘图库,可以实现各种类型的图形绘制,包括:线图、柱状图、饼图、散点图等。matplotlib支持各种

    2024年02月08日
    浏览(47)
  • 算法练习Day30 (Leetcode/Python-动态规划)

    62. Unique Paths There is a robot on an  m x n  grid. The robot is initially located at the  top-left corner  (i.e.,  grid[0][0] ). The robot tries to move to the  bottom-right corner  (i.e.,  grid[m - 1][n - 1] ). The robot can only move either down or right at any point in time. Given the two integers  m  and  n , return  the number of possible

    2024年01月20日
    浏览(41)
  • 100+Python挑战性编程练习系列 -- day 23

    Question 92 根据参加者在大学运动会的成绩表,你必须找出亚军的分数。你会得到分数。将它们存储在列表中并查找亚军的分数。 如果将以下字符串作为程序的输入: 5 2 3 6 6 5 然后,程序的输出应该是: 5 方法1: 方法2: Question 93 给定字符串S和宽度W。你的任务是将字符串包

    2024年02月07日
    浏览(39)
  • 100+Python挑战性编程练习系列 -- day 2

    Question 4 编写一个程序,从控制台接收一个逗号分隔的数字序列,并生成一个列表和一个包含每个数字的元组。假设向程序提供以下输入:34,67,55,33,12,98 然后,输出应为:[‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’] (‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’) Question 5 定义

    2024年02月02日
    浏览(36)
  • 100+Python挑战性编程练习系列 -- day 11

    Question 38 对于给定的元组(1,2,3,4,5,6,7,8,9,10),编写一个程序,在一行中打印前半部分值,在一行中打印后半部分值。 方法1: 方法2: 方法3: Question 39 编写一个程序来生成并打印另一个元组,其值是给定元组中的偶数(1,2,3,4,5,6,7,8,9,10)。 Questi

    2024年02月04日
    浏览(57)
  • 【100天精通python】Day30:使用python操作数据库_数据库基础入门

     专栏导读  专栏订阅地址: https://blog.csdn.net/qq_35831906/category_12375510.html 1.1 什么是数据库?         数据库是一个结构化存储和组织数据的集合,它可以被有效地访问、管理和更新。数据库的目的是为了提供一种可靠的方式来存储和管理大量的数据,以便用户和应用程序

    2024年02月13日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包