Python常用语法

字符串格式化

格式化的过程中,如果遇到数字,可以使用 :[格式]来指定数字的格式。

  1. 采用 f 前缀进行格式化。
1
2
3
4
name = 'Kahvia'
money = 143.257
dialog = f'Hello {name}, your money is {money:.2f}.'
print(dialog)

Hello Kahvia, your money is 143.26.

  1. 采用 format 方法
1
2
3
4
5
6
name = 'Kahvia'
name2 = 'Adong'
dialog = 'Hello {0}, and {1}.'.format(name, name2)
print(dialog)
dialog = 'Hello {n1}, and {n2}.'.format(n1=name, n2=name2)
print(dialog)

Hello Kahvia, and Adong.
Hello Kahvia, and Adong.

自定义函数

采用关键词 def 来定义函数,并跟随:表示下面的缩进行是函数体。

1
2
3
4
5
6
7
def make_friends(name1, name2):
print(f"{name1} and {name2} are friends now!")


name = 'Kahvia'
name2 = 'Adong'
make_friends(name, name2)

Kahvia and Adong are friends now!

引入模块

采用 import 引入一个模块中的方法和变量。

  1. import statistics,使用模块中的方法时,采用statistics.median([1,2,3])
  2. from statistics import median, mean,使用方法时,采用median([1,2,3])
  3. from statistics import *,使用方法同2。但是容易造成模块之间的方法或者变量冲突。

常使用第一种和第二种。第三方模块可以在网站PyPI · The Python Package Index上进行查看。

定义

采用 class 关键词定义一个类,并在对应的代码块中采用_init_来定义初始化对象的构造函数。定义其它方法时,也必须要将 self 作为第一个形参。

1
2
3
4
5
6
7
8
9
10
11
class Person:
def __init__(self, name):
self.name = name

def say_hello(self):
print(f'Hello my name is {self.name}.')


Kahvia = Person('Kahvia')
Kahvia.say_hello()

Hello my name is Kahvia.

继承

定义类的时候,后接括号包裹父类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Teacher(Person):
def __init__(self, name, level):
super().__init__(name)
self.level = level

def teach(self):
print(f"I am {self.name}, a teacher.")


class Student(Person):
def __init__(self, name, class_no):
super().__init__(name)
self.class_no = class_no

def study(self):
print(f"I am {self.name}, a student.")


t1 = Teacher("Kahvia", 6)
s1 = Student("Adong", 1)
t1.teach()
s1.study()

I am Kahvia, a teacher.
I am Adong, a student.

文件读写

注意,读模式打开文件时,若是文件不存在,会报错。

readline

一次只读一行,内容包括换行符。

1
2
3
4
5
6
7
8
9
10
11
12
file = open('book.txt', 'r', encoding='utf-8')

# 像下面这样写是不对的,python不允许在条件语句中进行赋值操作,这是为了防止出现在比较中将 == 写成 = 的低级错误,这种错误不容易发现,因为可以运行。
# while (line = file.readline()) != "":
# print(line)

line = file.readline()
while line != "":
# 打印的end设置为空,防止默认的换行与文件中的换行叠加。
print(line, end="")
line = file.readline()
file.close()

你存在
我深深的脑海里
我的心里

read

一次全读出来,不适合对大文件使用。

1
2
3
4
file = open('book.txt', 'r', encoding='utf-8')
# 注意打印结尾有print默认的换行
print(file.read())
file.close()

你存在
我深深的脑海里
我的心里

readlines

读出文件中所有行,放在列表中并返回。

1
2
3
file = open('book.txt', 'r', encoding='utf-8')
print(file.readlines())
file.close()

[‘你存在\n’, ‘我深深的脑海里\n’, ‘我的心里’]

with open … as …

这种写法可以不用close,执行完毕即close。

1
2
3
with open('book.txt', 'r', encoding='utf-8') as file:
# 注意打印结尾有print默认的换行
print(file.read())

write

write不会自动添加换行符,要换行只能自己补充\n。使用 w 模式打开时,若无文件会自动创建,有则清空。若是不希望清空,则需指定为 a 模式,即append,意为追加。

1
2
with open('book.txt', 'w', encoding='utf-8') as file:
file.write("Hello World")

同时读写

正常情况下,指定打开模式为 r 时,只能读,指定 w 时,只能写。若要既能读又能写,则需要指定为r+,此时write语句会以追加的形式写入到文件后面,同append。

异常处理

使用 try…except…else… 来处理异常。

代码测试

使用 unittest 。

高阶函数和匿名函数

高阶函数:将另一个函数作为参数的函数。

匿名函数(lambda函数):lambda para1, para2, ... : para1 op para2 op ...,比如lambda num: num * 5就是一个表达式,传入一个数字,返回五倍的数字。

lambda 表达式可用于高阶函数作为实参传递。