Python学习笔记:import与常用内置库
2017-11-24 12:13
507 查看
模块
Python模块实质为py文件,Python在importpy模块时默认会在sys.path所包含的路径中去寻找,搜索失败时会出错。导入整个模块
假设有一个module.py文件,代码如下:var=1 def func(): print("module function")
在同一路径中有一个test.py文件,代码如下:
import module #在sys.path中搜索module.py文件 print(module.var) module.func()
import整个文件实质上会将module.py中的所有代码解释一遍,并将结果以文件名同名变量返回,返回结果可理解为是一个对象,因为调用模块中的成员需要用’模块名.成员’的形式。
test.py运行结果:
导入模块的部分代码
#直接导入对应的代码部分,相当于代码复制 from module import var,func print(var) func() # 与导入代码同名会产生覆盖 var=2 def func(): print("test funtion") print(var) func()
包
Python中包是指包含多个可调用模块的文件夹,除了可调用模块外,包默认包含一个特殊的__init__.py文件,这个文件中的代码在包被导入时会自动执行。Python包的一个使用示例如下:
__init__.py:
print("package __init__.py running...") from . import package_file_1 from . import package_file_2
package_file_1.py:
def package_func_1(): print("package function_1 running...")
package_file_2.py:
def package_func_2(): print("package function_2 running...")
test.py:
import package #在导入包的时候会执行__init__.py中的代码 package.package_file_1.package_func_1() package.package_file_2.package_func_2()
test.py运行结果:
跨目录调用
假设项目目录结构如下图所示,func为项目执行入口,配置程序与主程序均在func中被调用。settings.py代码:
def settings(): print("settings running...")
main.py代码:
def main(): print("main running...")
func.py代码:
import os #获取本文件所在绝对路径,往上返回两层得到项目路径 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) import sys sys.path.append(BASE_DIR) from conf import settings settings.settings() from core import main main.main()
运行func.py输出:
内置库
time
import time
Python支持三种格式的时间:时间戳、元组和字符串,三种时间格式之间可以相互转换。
time():返回以秒为单位的当前时间戳。
time.time()
输出为:1511520388.6707194
gmtime()与localtime():分别将时间戳转换为元组格式的UTC时间与当地时间。
print(time.gmtime(time.time())) print(time.localtime(time.time()))
输出为:
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=24, tm_hour=10, tm_min=47, tm_sec=42, tm_wday=4, tm_yday=328, tm_isdst=0)
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=24, tm_hour=18, tm_min=47, tm_sec=42, tm_wday=4, tm_yday=328, tm_isdst=0)
mktime():将元组格式转换成时间戳。
time.mktime(time.localtime(time.time()))
输出为:1511520462.0
asctime()与ctime():分别将元组格式和时间戳转换成字符串。
time.asctime(time.localtime(time.time())) time.ctime(time.time())
输出均为:’Fri Nov 24 18:47:42 2017’
strftime():将元组格式转换成指定格式的字符串。
time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))
输出为:’2017-11-24 18:47:42’
strptime():将字符串一指定格式转换成元组格式。
time.strptime('2017-11-24 18:47:42',"%Y-%m-%d %H:%M:%S")
输出为:time.struct_time(tm_year=2017, tm_mon=11, tm_mday=24, tm_hour=18, tm_min=47, tm_sec=42, tm_wday=4, tm_yday=328, tm_isdst=-1)
random
import random random.seed(42)
Python的random模块实现了一个伪随机数生成器,若未指定随机数种子,会默认使用系统的当前时间。
输出为:0.7364712141640124
uniform():在范围内产生随机浮点数。
random.uniform(0,1)
输出为:0.6498780576394535
randrange():在range范围内产生随机整数。
random.randrange(0,10)
输出为:6
choice():在可迭代对象中随机选取元素。
random.choice("abcdefg")
输出为:’c’
sample():在可迭代对象中进行无放回的随机采样。
random.sample("abcdefg",2)
输出为:[‘g’, ‘b’]
shuffle():对序列对象进行内部洗牌(改变序列对象)。
l=[1,2,3,4,5] random.shuffle(l) l
输出为:[2, 4, 3, 5, 1]
使用sample()方法可以实现外部洗牌(不改变序列对象)。
l=[1,2,3,4,5] random.sample(l,len(l))
实现一个验证码生成器。
import random code_len=4 code='' for i in range(code_len): char_or_num=random.randrange(0,2) if char_or_num: code+=chr(random.randrange(65,91)) else: code+=chr(random.randrange(48,58)) print(code)
输出为:3D99
os
import os
Python的os模块提供了一些系统级操作。
os.getcwd():get current working directory。
os.getcwd()
输出为:’C:\Users\qq435\Desktop\source\python’
os.listdir():返回包含指定目录下所有文件\文件夹的列表。
os.listdir(".")
输出为:[‘.ipynb_checkpoints’, ‘.vscode’, ‘temp.py’, ‘test’, ‘Untitled-1.py’, ‘Untitled.ipynb’, ‘__pycache__’]
os.scandir():返回包含包含指定目录下所有文件\文件夹的迭代器,速度快于os.listdir()。
for item in os.scandir("."): print(item)
输出为:
<DirEntry '.ipynb_checkpoints'> <DirEntry '.vscode'> <DirEntry 'temp.py'> <DirEntry 'test'> <DirEntry 'Untitled-1.py'> <DirEntry 'Untitled.ipynb'> <DirEntry '\__pycache__'>
os.chdir():Change the current working directory。
# os.chdir(r'C:\Users\qq435\Desktop\source') os.chdir("..")
os.makedirs():递归创建目录,路径存在时会报错。
os.makedirs(r".\test\test\test")
os.rmdir():删除指定目录。
os.rmdir(r".\test\test\test")
os.removedirs():尝试递归删除指定路径的所有非空目录。
os.removedirs(r".\test\test")
注意,如果在”.\test”目录非空的话,那么”.\test”目录不会被删除。
os.remove():删除指定文件。
os.remove(r".\Untitled-1.py")
os.environ:显示环境变量。
os.environ
os.sep:显示当前系统的路径分隔符。
os.sep
输出为:’\’
os.linesep:显示当前系统的行分隔符。
os.linesep
输出为:’\r\n’
os.pathsep:显示当前系统环境变量的路径分隔符。
os.pathsep
输出为:’;’
re
import re
参考博客
语法基本
#对指定字符匹配指定次数 re.search('(!){1}',"@#$!").group() #匹配一次'!'
输出为:’!’
#[]字符集,满足字符集中任意字符即可 s1="I love my mommy." s2="I love my mummy." print(re.search("(m[ou]mmy){1}",s1).group(),re.search("(m[ou]mmy){1}",s2).group())
输出为:mommy mummy
#匹配数字 re.search("[0-9]{2}","abc123abc").group() #匹配两次数字
输出为:’12’
#[^]字符集取反 re.search("([^a-zA-Z]){3}","@#$aBc$%^").group() #匹配非字母字符
输出为:’@#$’
#".":匹配一次除"\n"之外的所有字符 re.search("(.){2}","\na1@").group()
输出为:’a1’
#"+":最大化匹配 re.search("([a-zA-Z])+","ab12cde").group()
输出为:’ab’
re.search("(.)+","ab12!\n@").group() #最大化匹配除'\n'外的所有字符
输出为:’ab12!’
re.search("a.+e","abdegh").group() #以a开头,多次匹配任意字符,再以e结尾
输出为:’abde’
re.search("a[a-zA-Z]+e","a12eabcde").group() #以a开头,多次匹配字母,再以e结尾
输出为:’abcde’
#"?"匹配某个字符至多一次,与"+"的作用相对应 re.search("1[0-9]?3","123").group() #1与3中间的一个数字可以是缺失的
输出为:’123’
#"{n,m}"指定匹配n到m次 re.search("1[0-9]{1,2}","12345").group() #1开头,再匹配一到两个数字
输出为:’123’
#"|"或条件匹配 re.search("12345|67890",string).group() #匹配12345或67890
输出为:’12345’
#"^"从首个字符开始匹配 #"$"从结束字符开始匹配 #常用于验证字符串的首尾字符 re.search("^<(.)+>$","<abc><123>").group()
输出为:
<abc><123>
#(?P<name>str)对匹配到的字符命名 ID_number="543635198712050040" #捏造一个身份证号 res_dict=re.search("(?P<add_code>([0-9]){6})(?P<birth_code>([0-9]){8})",ID_number).groupdict() print(res_dict['add_code'],res_dict['birth_code'])
输出为:543635 19871205
匹配反斜杠
re.search("\\\\","3\8").group()
输出为:’\’
findall()
#找出所有满足规则的字符 re.findall("([0-9]){1}","1a2b3c")
输出为:[‘1’, ‘2’, ‘3’]
split()
#按指定模式分割字符串 re.split("#+","12###abc#34")
输出为:[‘12’, ‘abc’, ‘34’]
sub()
#按照指定模式替换字符 re.sub("(\\\\)+","#","\\代码中的注释")
输出为:’#代码中的注释’
多行模式
string="1.abc\n2.def\n3.ghi\n" re.search("^(2.)(.)+",string,flags=re.M).group()
输出为:’2.def’
相关文章推荐
- python学习笔记——Thread常用方法
- Python学习笔记(三):常用内置函数学习
- python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化
- Python 学习笔记(四):常用内建模块和第三方模块
- Python学习笔记 —— 数字类型【Numbers】及常用方法
- python学习笔记(三):常用函数和运算优先级
- python 学习笔记 os模块常用项
- python的学习笔记之——time模块常用内置函数
- Python常用的内置序列结构(列表、元组、字典)学习笔记
- Python 【Tkinter 常用控件】 学习笔记
- python学习笔记之常用模块用法分析
- python 常用代码学习笔记之commands模块
- Python之学习笔记(常用内建模块)
- Python3学习笔记5-常用的内置函数,ASCII码
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
- [Python] Python学习笔记之常用模块总结[持续更新...]
- python 学习笔记 14 -- 常用的时间模块之datetime
- Python学习笔记:常用控件
- Python学习笔记之常用函数及说明
- python学习笔记-常用技巧整理