由于十分不喜欢 Python 的代码风格,所以自从本科的 Python 选修课结束之后,就再也没有碰过 Python 了,现在对它的一些知识也可以说是忘得差不多了。但由于后续学习需要用到 Pyhton,所以这才需要捡起关于 Python 的知识点
考虑到以后扩展和管理的方便,就没有单独安装 Python,而是选择安装 Anaconda,而 Anaconda 的安装也十分的方便,选择好位置,直接下一步就行。但其中注意的是,Anaconda 并不默认添加到 Path,也就是系统的环境变量中,需要在安装过程中勾选 ”添加到 Path“ 中,如果没有勾选,解决办法有两个:一是重新安装;二是手动添加系统环境变量。
手动添加环境变量,需要添加以下四个新的条目(... 是 anaconda3 安装位置)
...\anaconda3
...\anaconda3\Scripts
...\anaconda3\Library\bin
...\anaconda3\Library\mingw-w64\bin
Python 中的字符串是用双引号 "
或者单引号 '
包括起来的字符,可以混用,但是得注意范围,
message = "I'll get your trail." # 这是正确的
message = "He say:"Hello"" # 错误
lstrip()
去除首部空格rstrip()
去除尾部空格strip()
去除首位空格title()
标题格式lower()
全小写upper()
全大写center()
指定长度,将字符串放中间ljust()
指定长度,将字符串放左边rjust()
指定长度,将字符串放右边zfill()
指定长度,在字符串前面填充 0(处理数字)数字分为整数和浮点数,只要带小数点的就是浮点数,数字类型可以进行加减乘除运算,如果想要类似用 +
拼接字符串就需要用到 str()
将数字类型转换为字符串类型。
只有两个值 : True
和 False
,可以使用 bool()
方法将其他类型变量转换为布尔值
用 []
来创建一个列表,列表中可以是不同类型的变量。
foo = [ 1, 'a', 1.2]
# 添加
foo.append('b')
foo.insert(0,'a')
# 删除
del foo[0] # 不会返回删除的值
foo.pop() # 会返回删除的值
foo.remove() # 不会返回删除的值
# 修改
foo[0] = 100
# 查看
print(foo[1])
如果想要遍历列表:
for fo in foo:
ptrint(fo)
如果想要删除列表中的指定变量:
while "a" in foo:
foo.remove("a")
用 ()
表示一个元组,元组内的变量在元组声明之后,元组内的变量便无法改变,但是你可以直接改这个元组。
用 {}
表示一个字典,也可以通过 dict()
方法来创建一个空字典,字典是以键值对方式来存储的,类似于其他语言的图(Map)。
a_map = {
"key1": "value1",
"key2": "value2",
}
# 添加
a_map['key3'] = "value3"
# 删除
del a_map['key1']
# 修改
a_map['key2'] = "value4"
# 访问
print(a_map['key3'])
字典遍历:
# 遍历所有的键
for key in a_map.keys():
print(key)
# 遍历所有值
for value in a_map.values():
print(values)
# 遍历所有键值对
for key, value in a_map.items():
print(key + value)
input()
接收用户在终端中输入的信息,不管输入的是字符串或是数字 Python 都会视为是字符串。如果需要提示用户输入信息的类型那么在 input()
中输入提示信息即可。
Python 中的条件语句就只有 if else
和 if elif else
。对于输入的条件,可以是布尔值,也可以是逻辑表达式,但是逻辑表达式在某种程度上,逻辑表达式也算是布尔值。
num = 10
if num < 0:
print("负数")
elif num = 0:
print("零")
else:
print("正数")
Python 中的循环就只有 while
和 for in
。
指定次数循环:
count = 0
while count < 5:
print(count)
count += 1
for i in range(1, 5):
print(i)
循环控制:
在循环中通过 break
continue
return
关键词就可以对正在进行的循环进行控制;continue
关键词表示跳出这次循环,直接进行下次循环;break
和 return
则是直接退出循环,不同的是,return
会直接返回数据。
Python 通过 def
关键字声明函数:
def function_name(var_name, default_var='default', *vars):
return_value = var_name + default_var
for var in vars:
return_value += var
return return_value
其中 var_name
、default_var
是形式参数,'default'
是为 default_var
赋予的默认实参。*vars
前的 *
表示这是任意数量的参数。如果形参前面是 **
则表示这是任意数量的关键字实参,类似于向函数传递一个字典变量。
Python 通过 class
关键词来声明类
class MyClass:
def __init__(self, name):
self.name = name
def say_hello(self):
print("Hello " + self.name)
Python 中没有访问控制机制,也就是说实例化的类中,所有的变量都是可以由外部进行访问的,但是如同常量一样,对于私有成员,Python 中也有约定俗成的语法,就是在变量前加上下划线,如:self._private
。这种属性不推荐在实例外部操作,而是调用实例的内部方法来操作这个属性。
对于类的继承,就非常简单:
class ChildClass(MyClass):
def __init__(self, name, age):
self.super(self, name)
self.age = age
# 重写父类方法
def say_hello(self):
print(self.age, "Hello " + self.name)
Python 中测试的话都需要用到 unittest
这个模块,下面我们定义一个方法:
def func_1(name){
return str(name).title()
}
如果我们想要测试这个方法,就需要自定义一个类来继承 unittest.TestCase
类:
class MyTest(unittest.TestCase):
def test_func_1(self):
self.assertEqual("J00ane", func_1("j00ane"))
运行测试:
if __name__ == "__main__":
unitest.main()
如果我们想要对一个类的所有成员方法进行单独的测试,那么每个测试都可能需要新建一个实例,这样做起来很麻烦,所以我们需要用到 SetUp
方法
首先,新建一个类:
class MyClass:
def __init__(self, name, age):
self.name = name
self.age = age
def show_name(self):
return self.name.title()
def show_age(self):
return str(self.age)
在我们的测试类中,可以这样写:
class MyClassTest(unittest.TestCase):
def SetUp(self):
self.my_class = MyClass("j00ane", 10)
self.right_name = "J00ane"
self.right_age = "10"
def test_show_name(self):
self.assertEqual(self.right_name, self.my_class.show_name())
def test_show_age(self):
self.assertEqual(self.right_age, self.my_class.show_age())
运行测试,可以看到所有测试都能通过。
除了 assertEqual
断言,还有 assertNotEuqal
;判断布尔值:assertTrue
assertFalse
;判断列表: assertIn(item, list)
assertNotIn(item, list)
。
异常处理非常像分支语句,也就是 if else。它的 语法是这样的:
try:
# 语句
except XXXError:
# XXXError 的处理语句
except XXError:
# XXError 的处理语句
else:
# 无错误的处理语句
Python 中要求你写的错误类型非常精确,如果不知道错误类型的话,可以先运行一遍错误的,看看编译器的报错类型,复制过去就行了。
本文最后更新于 2023 年 8 月 31 日