?? Day 12
?? 本系列為Python基礎(chǔ)學(xué)習(xí),原稿來源于 30-Days-Of-Python 英文項(xiàng)目,大奇主要是對(duì)其本地化翻譯、逐條驗(yàn)證和補(bǔ)充,想通過30天完成正兒八經(jīng)的系統(tǒng)化實(shí)踐。此系列適合零基礎(chǔ)同學(xué),或僅了解Python一點(diǎn)知識(shí),但又沒有系統(tǒng)學(xué)習(xí)的使用者??傊绻阆胩嵘约旱腜ython技能,歡迎加入《挑戰(zhàn)30天學(xué)完P(guān)ython》
模塊Modules
什么是Module
模塊是在應(yīng)用程序中一個(gè)包含一組代碼或一組函數(shù)的文件。模塊可以是包含單個(gè)變量、函數(shù)或大型代碼庫的文件。
創(chuàng)建Module
要?jiǎng)?chuàng)建一個(gè)module我們?cè)趐ython腳本中寫下我們的代碼,并將它保存為 .py
的文件?,F(xiàn)在讓我們嘗試在項(xiàng)目文件夾中創(chuàng)建一個(gè)名為mymodule.py
的文件。讓我們?cè)谶@個(gè)文件中編寫一些代碼。
這份文件你也可以從項(xiàng)目源代碼目錄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'
}
在你自己的項(xiàng)目中創(chuàng)建一個(gè) main.py 文件,然后導(dǎo)入mymodule.py模塊文件。
導(dǎo)入Module
要導(dǎo)入文件,我們只需使用 _import_
關(guān)鍵字加文件名即可。
# main.py
import mymodule
print(mymodule.generate_full_name('Mega', 'Qi')) # Mega Qi
從Module中導(dǎo)入函數(shù)
在一個(gè)文件中興許包含很多的函數(shù)方法,我們可以通過不同的方式進(jìn)行導(dǎo)入。
# 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'])
從模塊導(dǎo)入函數(shù)并重命名
在模塊的導(dǎo)入的同時(shí),我們也可以進(jìn)行別名設(shè)置。
# 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'])
導(dǎo)入內(nèi)置模塊
與其他編程語言一樣可以導(dǎo)入內(nèi)置模塊,通過使用關(guān)鍵字 import 導(dǎo)入文件/函數(shù)?,F(xiàn)在讓我們導(dǎo)入一些常用的模塊。這些內(nèi)置模塊如:math, datetime, os,sys, random, statistics, collections, json, re
os 模塊
使用 python 中 os
模塊可以自動(dòng)執(zhí)行許多系統(tǒng)操作。Python中的 OS 模塊提供了諸如:創(chuàng)建、更改當(dāng)前工作目錄、刪除目錄(文件夾)、獲取其內(nèi)容、更改和標(biāo)識(shí)當(dāng)前目錄等函數(shù)。
# 導(dǎo)入os模塊
import os
# 創(chuàng)建文件夾
os.mkdir('directory_name')
# 切換到當(dāng)前剛才創(chuàng)建的directory_name文件夾
os.chdir('directory_name')
# 獲取當(dāng)前的工作路徑目錄
os.getcwd()
# 切換到上級(jí)目錄
os.chdir('..')
# 刪除文件夾
os.rmdir('directory_name')
sys 模塊
內(nèi)置模塊sys
提供了一些python運(yùn)行時(shí)環(huán)境操作的部分方法和變量。功能 sys.argv 獲取傳遞給Python腳本命令行參數(shù)列表。列表索引 0 始終是文件的名,后邊從1開始的是真正的命令行參數(shù)。
例子代碼 script.py 文件:
import sys
# print(sys.argv[0], argv[1],sys.argv[2])
# 命令行執(zhí)行將打印: 文件名 參數(shù)1 參數(shù)2
print('Welcome {}. Enjoy {} challenge!'.format(sys.argv[1], sys.argv[2]))
現(xiàn)在讓我們來看看,在命令行中執(zhí)行寫的這個(gè)腳本將如何:
python script.py Qi 30DaysOfPython
執(zhí)行結(jié)果:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-sIXj6IFO-1682519934550)(…/images/day1201_sys_args.png)]
一些有用的sys命令:
import sys
# 退出
sys.exit()
# python可以處理或存儲(chǔ)為變量的最大值
sys.maxsize
# 獲取系統(tǒng)配置環(huán)境變量
sys.path
# 獲取當(dāng)前python版本
sys.version
上邊 maxsize 大小取決于系統(tǒng):
- 32位:該值將為2^31-1,即2147483647
- 64位:該值將為2^63-1,即9223372036854775807
statistics 模塊
統(tǒng)計(jì)模塊提供數(shù)值數(shù)據(jù)的數(shù)學(xué)統(tǒng)計(jì)功能。本模塊中定義的常用統(tǒng)計(jì)函數(shù): mean, median, mode, stdev 等。
from statistics import * # 導(dǎo)入所有 statistics modules
ages = [20, 20, 4, 24, 25, 22, 26, 20, 23, 22, 26]
print(mean(ages)) # 算術(shù)平均值 21.09090909090909
print(median(ages)) # 方法返回?cái)?shù)值數(shù)據(jù)的中值 22
print(mode(ages)) # 法計(jì)算給定數(shù)值或名義數(shù)據(jù)集的眾數(shù) 20
print(stdev(ages)) # 計(jì)算標(biāo)準(zhǔn)差 6.106628291529549
math 模塊
此模塊包含許多數(shù)學(xué)運(yùn)算和常量。
import math
print(math.pi) # 3.141592653589793, 圓周率(Pi)常量
print(math.sqrt(2)) # 1.4142135623730951, 平方根
print(math.pow(2, 3)) # 8.0, 指數(shù)函數(shù)
print(math.floor(9.81)) # 9, 四舍五入取底
print(math.ceil(9.81)) # 10, 四舍五入取高
print(math.log10(100)) # 2.0, 以10為底的對(duì)數(shù)
現(xiàn)在,我們已經(jīng)導(dǎo)入了 math 模塊,它包含了許多函數(shù)能幫助我們進(jìn)行數(shù)學(xué)計(jì)算。那么如果要想查看模塊都有那些函數(shù),我們可以使用 help(math) 或 dir(math) 來顯示模塊中可用的函數(shù)。如果我們只想從模塊中導(dǎo)入一個(gè)特定的函數(shù),我們按如下方式導(dǎo)入它:
from math import pi
print(pi)
同時(shí)也可以導(dǎo)入多個(gè)函數(shù)
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))
但如果我們想導(dǎo)入數(shù)學(xué)模塊中的所有函數(shù),我們可以使用 *
。
from math import *
print(pi)
print(sqrt(2))
print(pow(2, 3))
print(floor(9.81))
print(ceil(9.81))
print(log10(100))
同上導(dǎo)入時(shí),還可以為函數(shù)設(shè)置別名。
from math import pi as PI
print(PI)
字符串模塊
字符串模塊在很多方面都是非常有用的模塊。下面的例子展示了字符串模塊的一些用法。
import string
# ascii字母
print(string.ascii_letters) # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
# 展示所有數(shù)字
print(string.digits) # 0123456789
# 展示標(biāo)點(diǎn)標(biāo)點(diǎn)符號(hào)
print(string.punctuation) # !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Random 模塊
到目前為止,您已經(jīng)熟悉了導(dǎo)入模塊用法。讓我們?cè)趯?dǎo)入另外一個(gè)模塊來最后熟悉它。 模塊 random 它給返回一個(gè)0到0.9999之間的隨機(jī)數(shù)。當(dāng)然它有很多模塊,但在本篇中只用到 random 和 randint 。
from random import random, randint
print(random()) # 它返回一個(gè)介于0到0.9999之間的值
print(randint(5, 20)) # 它返回一個(gè)[5,20]的隨機(jī)整數(shù)
?? 你已經(jīng)堅(jiān)持學(xué)習(xí)更高級(jí)的內(nèi)容了。繼續(xù)前進(jìn)!你剛剛完成了第12天的挑戰(zhàn),你在通往偉大的道路上前進(jìn)了12步?,F(xiàn)在按例來做一些練習(xí)吧,來消化和鞏固下學(xué)習(xí)成功。
?? 第12天練習(xí)
練習(xí)1級(jí)
-
編寫一個(gè) random_user_id 函數(shù),它的功能是隨機(jī)生成6位字符(包括字母和數(shù)字)。
print(random_user_id()); '1ee33d'
-
修改上邊方法。聲明一個(gè)名為 user_id_gen_by_user 的函數(shù)。它不設(shè)置參數(shù),但它使用input() 接受兩個(gè)輸入。其中一個(gè)輸入是字符的數(shù)量,第二個(gè)輸入是應(yīng)該生成的id的數(shù)量。
print(user_id_gen_by_user()) # 用戶輸入: 5 5 # 輸出舉例(因?yàn)槭请S機(jī)每次均不一樣,所以以下值僅為舉例): #kcsy2 #SMFYb #bWmeq #ZXOYh #2Rgxf print(user_id_gen_by_user()) # 16 5 # 實(shí)際以你練習(xí)和輸入的兩個(gè)數(shù)為準(zhǔn) #1GCSgPLMaBAVQZ26 #YD7eFwNQKNs7qXaT #ycArC5yrRupyG00S #UbGxOFI7UXSWAyKN #dIV0SSUTgAdKwStr
-
編寫一個(gè)名為 rgb_color_gen 函數(shù)。它將生成rgb顏色(3個(gè)值,每個(gè)值從0到255)。文章來源:http://www.zghlxwxcb.cn/news/detail-426608.html
print(rgb_color_gen()) # rgb(125,244,255) - 輸出格式
練習(xí)2級(jí)
- 編寫一個(gè)函數(shù) list_of_hexa_colors,它返回?cái)?shù)組中任意數(shù)量的十六進(jìn)制顏色(在#之后寫入的六個(gè)十六進(jìn)制數(shù))。十六進(jìn)制數(shù)字系統(tǒng)由16個(gè)符號(hào)組成,0-9和字母表的前6個(gè)字母a-f。
- 編寫一個(gè)函數(shù) list_of_rgb_colors,它返回任意數(shù)量的RGB顏色數(shù)組。
- 編寫一個(gè)函數(shù) generate_colors,它可以生成任意數(shù)量的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)']
練習(xí)3級(jí)
- 調(diào)用你的編寫的函數(shù) shuffle_list,它接受一個(gè)列表作為參數(shù),并返回一個(gè)打亂的列表。
- 編寫一個(gè)函數(shù),返回由0-9范圍內(nèi)的7個(gè)隨機(jī)數(shù)組成的數(shù)組。所有的數(shù)字必須是唯一的。
?? CONGRATULATIONS ! ??文章來源地址http://www.zghlxwxcb.cn/news/detail-426608.html
到了這里,關(guān)于挑戰(zhàn)30天學(xué)完P(guān)ython:Day12 模塊的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!