1.5 模块
模块可视为扩展,通过将其导入可以扩展python的功能。python中自带有一组模块,也称为“标准库”。
1.5.1 模块的导入:import + 模块名称
• 使用关键字import导入模块
• import之后跟模块名称,可一次导入多个模块,多个模块名称之间使用逗号隔开
• 使用“模块名称.函数名称”的方式来调用该模块中的函数
1 >>> import random,math 2 >>> print(random.randint(1,10)) 3 3 4 >>> print(math.floor(3.7)) 5 3 6 >>>
1.5.2 模块的导入:from 模块名称 import *
• 使用关键字from,import和 * 号
• 直接使用“函数名称”的方式来调用该模块中的函数
• 使用该方式虽然简化了调用方式,但是代码可读性变差,且必须确认没有同名函数
1 >>> from math import * 2 >>> ceil(33.3) 3 34 4 >>> sqrt(25) 5 5.0 6 >>>
1.5.3 模块的导入:from 模块名称 import 函数名称
• 使用1.5.2导入方式模块中的所有函数都可以调用,而该方式区别在于指定导入模块中的函数名称,只可以调用该函数,模块中的其它函数不可调用,强行调用则会出现‘“函数未定义”的报错
• 该方式适用于明确只使用该模块中的指定函数
1 >>> from math import ceil 2 >>> ceil(33.3) 3 34 4 >>> sqrt(25) 5 Traceback (most recent call last): 6 File "<stdin>", line 1, in <module> 7 NameError: name 'sqrt' is not defined 8 >>>
1.5.4 模块的导入:使用 as 关键字
模块导入时可以通过使用 as 关键字来改变相应的引用对象名字,适用于模块名称或者函数名称过长过复杂时的简化。
• 例如使用 import random as r ,则在后续的调用中可用“r”代替“random” 。
1 >>> import random as r 2 >>> r.randint(1,10) 3 1 4 >>>
• 例如使用 from random import randint as r ,则在后续的调用中可用“r”代替“randint” 。
1 >>> from random import randint as r 2 >>> r(1,10) 3 5 4 >>>
1.6 注释
--- 在python中,使用井号(#)来进行注释,# 到行尾的内容将被当成注释
--- 特殊的例子是脚本的第一行字符序列:#!+ python的绝对路径 + python可执行程序名 ,例如:#!/usr/bin/python3.7 python3
--- 可使用一对单三引号(‘’‘)或者一对双三引号(“”“)进行多行(段落)注释
--- 注释必须言而有物,无用而重复的注释还不如没有
1.7 简单的字符串
1.7.1 长字符串
--- 常规字符串也可以跨越多行,只要在行尾加上反斜杠,python会自动进行拼接
1 >>> "Hello \ 2 ... world!" 3 'Hello world!' 4 >>> print("Hello \ 5 ... world!") 6 Hello world! 7 >>>
--- 使用三单引号或三双引号表示很长的多行字符串,python不会自动进行拼接
1 >>> print("""Hello 2 ... world 3 ... !""") 4 Hello 5 world 6 ! 7 >>>
1.7.2 原始字符串
--- 原始字符串使用前缀 r 表示,r 后的字符串可使用单引号、双引号、三引号括起来,但该字符串不能以单个反斜杠结尾
1 >>> print("Hello \nworld!") 2 Hello 3 world! 4 >>> print(r"Hello \nworld!") 5 Hello \nworld! 6 >>> print(r"Hello \nworld!\") 7 File "<stdin>", line 1 8 print(r"Hello \nworld!\") 9 ^ 10 SyntaxError: EOL while scanning string literal 11 >>>
1.8 简单的字符编码
--- 内存和磁盘中所有对象都是以二进制表示,python提供不可变bytes和可变bytearray两种类型来对接,bytes类型可直接创建bytes对象。
1 >>> "Hello world!" 2 'Hello world!' 3 >>> b"Hello world!" 4 b'Hello world!' 5 >>> type('Hello world!') 6 <class 'str'> 7 >>> type(b'Hello world!') 8 <class 'bytes'> 9 >>>
--- 将文本写到内存和磁盘文件中,需要进行编码,编码使用encode函数;将文本从内存和磁盘文件中读出,需要进行解码,解码使用decode函数。
--- 使用ASCII、UTF-8、UTF-32编码将字符串转换为bytes
1 >>> "Hello world!".encode("ASCII") 2 b'Hello world!' 3 >>> "Hello world!".encode("UTF-8") 4 b'Hello world!' 5 >>> "Hello world!".encode("UTF-32") 6 b'\xff\xfe\x00\x00H\x00\x00\x00e\x00\x00\x00l\x00\x00\x00l\x00\x00\x00o\x00\x00\x00 \x00\x00\x00w\x00\x00\x00o\x00\x00\x00r\x00\x00\x00l\x00\x00\x00d\x00\x00\x00!\x00\x00\x00' 7 >>>
--- 编码长度
1 >>> len("Hello world!".encode("ASCII")) 2 12 3 >>> len("Hello world!".encode("UTF-8")) 4 12 5 >>> len("Hello world!".encode("UTF-32")) 6 52 7 >>>
--- 最好使用UTF-8编码,UTF-8也是默认使用的编码。