1. 格式化数字
Python 中的格式化涉及了一整套格式化语言
>>> x = 1.23456
>>> 'x={:.2f}'.format(x)
'x=1.23'
将一个格式字符串应用到数字上。
格式字符串可以包含用{
和}
分隔的混合常规文本和标记。format
函数的参数将会取代标记。
在上述例子中,格式说明符是:.2f
,其含义是数字被指定为小数点后保留两位小数,且其类型为浮点型f
若希望数字被格式化为总长度是7 位:
>>> x = 1.23
>>> 'x={:.2f}'.format(x)
'x= 1.23'
本例中,由于数字只有3 位,所以会在1 前填充4 个空格
若format
中有多个参数,例如a
和b*2
:
.format(a,b*2)
2. 格式化日期
Python 格式化语言包含了一些针对日期格式化的特殊符号。
%y、%m、%d、%H、%M、%S分别对应年、月、日、时、分、秒
>>> from datetime import datetime
>>> d = datetime.now()
>>>> '{:%y-%m-%d %H:%M:%S}'.format(d)
'18-11-15 20:27:57'
3. 返回多个值
编写一个返回多个值的函数
>>> def calculate(x):
... value1 = x+2
... value2 = x*2
... return value1, value2
...
>>> c, f = calculate(5)
>>> print(c)
7
>>> print(f)
10
>>> print(calculate(3))
(5, 6)
此(5, 6)
即为元组tuple
,是一种数据结构,像列表与之不同的是,元组是在小括号中。两者都是固定长度的。
当数据较为复杂,并要返回较多个值时,使用一个包含数据的类的方案更加简洁。
4. 定义类
类可集合相关的数据和功能。
模拟小狗的类:
class Dog():
def __init__(self, name, age):
"""初始化属性name 和age"""
self.name = name
self.age = age
根据约定,首字母大写的名称指的是类。方法__init__()
是一个特殊的方法,每当根据Dog 类创建新实例时,Python 都会自动运行它。其首末的双下划线约定为避免Python 默认方法与普通方法发生名称冲突。
在此方法中,形参self
必不可少,且必须位于其他形参前面,self 是对新创建的实例的引用,其与java
中的特殊变量this
概念相同
以self.
为前缀的变量是类当中各方法之间沟通的桥梁
其中name
和age
的初始化是通过创建实例调用传递的值完成的
>>> Wuyou = Dog('Wuyou',4)
>>> Wuyou.name
'Wuyou'
在一个复杂的程序中,将每个类单独放到一个文件中并以类的名称命名文件会使得将类转换为模块更加容易。
5. 定义方法
class Dog():
def __init__(self, name, age):
self.name = name
self.age = age
def sit(self):
print(self.name.title() + ' is now sitting.')
def roll_over(self):
print(self.name.title() + ' rolled over!')
方法可理解为绑定在某个特殊的类上的函数,该函数的执行可能会也可能不会用到类的成员变量。因此,与函数相同,可在方法中添加任何代码,也可调用另一个方法。若一个方法调用另一个类中的另一个方法,那么在调用之前也需要加上前缀self.
。
6. 继承
前提:需要一个已经存在的类的特殊版本。
默认情况下,新创建的所有类都是object 的子类。若要改变新建的类的父类,则需在类定义时的类名之后的括号中指定想使用的类。
class Chinese_dog(Dog):
def __init__(self, breed, speed):
super().__init__('Wuyou', 4)
self.breed = breed
def run(self, speed):
self.speed = speed
该Dog
的子类Chinese_dog
中添加了新的成员变量breed
与speed
,和额外的方法run
若是Python2,则不可使用super().
,需使用Dog__init__
7. 写文件
可使用open
、write
和close
函数打开文件、写入数据和关闭文件
>>> f = open('test.txt', 'w')
>>> f.write('Today is 2018/11/15')
>>> f.close()
open
方法需要两个参数。第一个是要写入的文件的路径。此路径可以是相对于当前工作目录的相对路径,也可以是以/
开头的绝对路径;第二个参数是打开文件的模式。当要覆写一个已存在的文件,或是要创建文件,使用w
。
模式 | 说明 |
---|---|
r | 读取 |
w | 写入 |
a | 附加——对于已存在的文件,将内容附加到末尾而不是覆写 |
b | 二进制模式 |
t | 文本模式(默认) |
+ | r + w 的缩写 |
二进制模式允许你对二进制数据流进行读写,例如图片而不是文本