Python——我愿称之为最简单的语言
参考书籍:《python编程从入门到实践》
开发工具
python编程环境分为两个部分:python解释器和文本编辑器。运行.py文件时,末尾的.py指出这是一个python程序,因此编辑器将使用python解释器来运行该文件,python解释器读取整个程序并执行相应的操作。pycharm是一个在python解释器上运行的应用程序,其提供了一个集成开发环境的界面和工具。
基础语法
《python编程从入门到实践》第1~11章。
变量和数据类型
1、变量名的命名规则。
- 变量名只能包含数字、字母、下划线,但是不能以数字开头。
- 不要将python关键字和函数名用作变量名。
- 变量名应该既简短又具有描述性,一般使用小写,并且使用下划线_划分。
- 类名应该使用驼峰命名法,即每个单词的首字母大写。
2、字符串。
- 字符串使用单引号’'或者双引号""括起来,注意嵌套要使用不同的引号。
- str.title()表示以首字母大写的方式显示每个单词。
- str.upper()表示将字符串全部大写。
- str.lower()表示将字符串全部小写。
- str=f"{str1}{str2}"表示在字符串中插入变量。
- str.lstrip()表示删掉字符串开头的空白。
- str.rstrip()表示删掉字符串末尾的空白。
- str.strip()表示删掉字符串两边的空白。
3、数。
- 表示乘方。
- 书写很大的数时,可以使用下划线将其中的数字分组,每一组划分为几位没有影响。
- 无论哪一种运算,只要操作数有浮点数,得到的结果就是浮点数。
- 使用逗号将变量名分开以及将对应赋值分开,可以实现同时给多个变量赋值。
- 常量一般全部使用大写字母命名。
4、注释。
- 注释使用#符号。
- 一般以函数为单位分块注释,如果有某些比较巧妙的细节也可以突出重点注释。
列表和元组
1、列表是什么。
列表是使用方括号[]表示,并使用逗号分割元素。
2、列表的增删改查操作。
- 查找:var=list[index],注意,列表正向索引是从0开始的,列表逆向索引是从-1开始的。
- 修改:list[index]=newvar,语法类似查找。
- 增加:在尾部添加元素使用list.append(value);在任意位置添加元素使用list.insert(position,value)。
- 删除:删除尾部元素使用var=list.pop();删除任意位置元素使用del list[position]或者var=list.pop(position);根据值删除元素使用list.remove(value)。注意,remove只能删除第一个指定的值。
3、列表的排序操作。
- 永久排序:排序会改变list,从小到大排序使用list.sort();从大到小排序使用list.sort(reverse=True)。
- 临时排序:排序不会改变list,而是产生list副本,从小到大排序使用sorted(list),从大到小排序使用sorted(list,reverse=True)。
4、列表的其他操作。
- 反转列表:list.reverse(),永久改变列表,反转两次可复原。
- 列表长度:len(list)。
5、列表的遍历操作。
- 遍历列表:for element in list(注意缩进)。
6、列表的批量操作。
- range(a,b,step):产生[a,b)区间且步长为step的整数,a默认为0,step默认为1。
- list(range(a,b,step)):将range产生的一组数转换为列表。
- min(list):求列表的最小值。
- max(list):求列表的最大值。
- sum(list):求列表的总和。
- newlist=[value for element in list]:将for循环和创建新元素的代码合并成一行并自动附加新元素从而完成列表解析。
- list[begin:end]:切片可实现列表复制,正序begin默认为列表起始位置,end默认为列表结束位置,逆序end默认为列表结束位置。
7、元组是什么。
元组是使用圆括号()表示,并使用逗号分割元素。列表与元组的区别在于,列表的元素可以改变,而元组的元素不可以改变。注意,虽然元组的元素不可以改变,但是元组变量是可以改变的。
字典
1、字典是什么。
字典是使用花括号{}表示,并使用逗号分割元素,字典元素由键值对key-value组成,且key与value使用冒号:隔开。字典可以用于存储一种对象的多种信息或者多种对象的一种信息。
2、字典的增删改查操作。
- 查找:value=dictionary[key]。
- 修改:dictionary[key]=newvalue。
- 增加:dictionary[key]=value。
- 删除:del dictionary[key]。
- 函数:dictionary.get(key,default),如果指定的键不存在则返回默认值,反之存在则返回对应的值。
3、字典的遍历操作。
- 遍历所有键值对:for key,value in dictionary.items(),其中items返回一个键值对列表。
- 遍历所有键:for key in dictionary.keys(),其中keys返回所有的键,默认遍历字典时也会遍历所有的键,即for key in dictionary也可以遍历所有的键,使用for key in sorted(dictionary.keys())可以实现按特定顺序遍历字典中的所有键。
- 遍历所有值:for value in dictionary.values(),其中values返回所有的值,使用for value in set(dictionary.values())可以实现值的去重,花括号可以直接创建集合,其中元素使用逗号间隔,注意区分字典和集合。
4、字典和列表的嵌套使用。
- 字典列表:列表里面套字典,适用于存储多个对象的多种信息。
- 列表字典:字典里面套列表,即字典的键值对中的值使用列表,适用于存储某一种信息描述了多个属性。
- 字典字典:字典里面套字典,即字典的键值对中的值使用字典,适用于存储唯一关键字和相关信息。
if语句
1、if语句对应的条件测试。
- 相等测试:if element == condition。
- 不等测试:if element != condition。
2、if语句对应的多个条件测试。
- and:多个条件均要满足。
- or:至少一个条件要满足。
- in:检查是否在列表中。
- not in:检查是否不在列表中。
3、if语句对应的多种形式。
- if语句:每次测试一个条件语句。
- if-else语句:每次测试一个条件语句,只不过两种情况。
- if-elif-else语句:每次测试一个条件语句,只不过多种情况。
- 多个if语句:一次可以测试多个条件语句。
while语句
1、用户输入。
- 输入字符串:message=input(提示语)。
- 输入数值:message=input(提示语),然后message=int(message),或者message=float(message)。
2、while循环。
- while语句:while condition。
- break语句:跳出最近的一层循环。
- continue语句:继续下一次循环。
使用while循环修改列表,而不使用for循环修改列表,否则会导致难以跟踪其他元素。
函数
1、如何定义函数。
def function(),其中使用三引号"“”……“”"来描述函数功能。
2、函数的参数传递方式。
- 位置实参:形参与实参按照顺序一一对应,带有默认值的参数要放在最后。
- 关键字实参:传递给函数名称值对,即类似传递字典。
3、如何传递任意数量。
- 任意数量位置实参:*args,相当于创建了一个名为args的空元组。
- 任意数量关键字实参:args,相当于创建了一个名为args的空字典。
可以结合位置实参和关键字实参等多种传参方式。
4、函数与模块。
- 导入整个模块:import pyname,使用时调用pyname.pyfunction()。
- 导入特定函数:from pyname import pyfunction,使用时调用pyfunction()。
- 指定函数别名:import pyname as name,或者from pyname import pyfunction as function。
- 导入多个函数:from pyname import pyfunction1,pyfunction2,pyfunction3……。
- 导入所有函数:from pyname import *。
一般运算符两边均留一个空格,但是函数形参默认值中的等号两边一般不要留有空格。
类
1、如何定义类。
class Class,其中类名要使用驼峰命名法,即每个单词的首字母要大写。
2、类的实例初始化方法。
def _init_(self),其中参数self必不可少,而且必须位于其他形参的前面,当python调用初始化方法来创建实例时,将自动传入实参self,也可以根据需求选择性的传入其他实参来进行初始化。每一个与实例相关的方法调用都自动传递实参self,它指向实例本身的引用,让实例能够访问类中的属性和方法。
3、类的使用方法。
-
创建对象:my_class=Class(实参列表)。
-
获取属性:my_class.attribute。
-
调用方法:my_class.method()。
4、类的继承。
class Son(Father),其中使用括号中填写父类来实现继承。一个类继承另一个类时,将自动获得另一个类的所有属性和方法。在子类的初始化函数中,可以调用super()._init_()来进行初始化,也可以使用self.attribute=attribute来新增属性。在子类的方法中,可以通过重写一个父类方法同名的函数来更改方法。
5、类与模块。
格式同函数与模块。
文件与异常
1、文件的常见操作。
- 打开文件:with open(文件路径) as file_object,其中open返回一个表示文件的对象,并将该对象赋值给file_object供以后使用。
- 读取文件:content=file_object.read()。
- 写入文件:with open(文件路径,‘w’) as file_object,file_object.write(content)。
- 按行读取:lines=file_object.readlines(),其从文件中读取每一行,并且存储在一个列表中。
- 多种模式:'r’只读,'w’写入,'a’附加,'r+'读写。
2、异常。
try:可能出现异常的语句
except e: //e表示一种异常类型相应的错误处理语句 //pass表示占位符即什么都不处理
else:相应的正确处理语句
3、存储数据。
- json.dump(content,file_object):将content写入file_object。
- content=json.load(file_object):从file_object中读取content。
4、一些概念。
- 重构:重构指的是将代码划分为一系列完成具体工作的函数,从而使得代码更清晰,更易于理解,更容易扩展。
- 异常:如果未对异常进行处理,将显示traceback,反之如果编写了处理异常的代码,程序将继续进行。
测试代码
1、代码测试工具unittest。
import unittest //代码测试工具
from pyname import function1 //待测试函数
class exampleTestCase(unittest.TestCase): //测试类"""测试pyname.py"""def test_function1(self): //测试函数result=function1(测试参数) //函数结果self.assertEqual(result,contrast) //对比结果if _name_ == '_main_':unittest.main()
如果某个文件作为主程序执行,那么变量_name_将被设置为_main_,于是调用unittest.main()来运行测试用例。注意,测试类中只有以test_开头的方法才会在运行测试文件时运行。
2、常用的断言方法。
- assertEqual(a,b):核实a==b。
- assertNotEqual(a,b):核实a!=b。
- assertTrue(x):核实x为True。
- assertFalse(x):核实x为False。
- assertIn(item,list):核实item在list中。
- assertNotIn(item,list):核实item不在list中。
3、创建一个实例供多个测试方法使用。
def setUp(self):"""创建一个对象一个参数列表供使用的测试方法使用"""self.my_object=Object()self.parameter=[……]
多加练习,熟能生巧。