3. Python基础语法
我们在文言文中经常会看到注释,注释可以帮助读者对文章的理解。代码中的注释也是一样,优秀的代码注释可以帮助读者对代码的理解。当然在代码编写过程中,注释的使用不一定只是描述一段代码,也可能的是对代码的调试。
Python注释一共有# 、''' ''' 、""" """三种方式。我们在编写代码中,一般用#进行单行注释,''' '''或""" """进行多行注释。如下代码所示:
# 这是一段注释'''这是多行注释,使用英文单引号。这是多行注释,使用英文单引号。这是多行注释,使用英文单引号。'''"""这是多行注释,使用英文双引号。这是多行注释,使用英文双引号。这是多行注释,使用英文双引号。"""# 单行注释 这是一个加法def add(a, b): return a + b# 先把print(add(1, 2))注释掉,下次如果用到print(add(1, 2))把#去掉# print(add(1, 2))
我们右击运行,发现不会输出任何内容,虽然我们定义了一个add函数,但是并没有调用add函数,当我们把# print(add(1, 2))的#去掉时,再右击运行,打印台会输出3。关于函数的使用,会在后面内容进行介绍。
变量变量的概念和数学方程式变量是一致的。比如一元一次方程 x+1>5 ,x就是一个变量。
在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。变量在程序中用一个变量名表示,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,不能使用关键字作为变量。如下代码所示:
a = [1, 'test', '你好', 1 + 2, False, [2, 3, 'CHINA']]A = 1.1b = '1'B = 'test'c = True_C = Falsed1 = 'test'name = {'testDog', 'Jim', 'Mary', 'Jim', 'Jack', 'Rose'}
Python中关键字如下所示:
andExec not assertFinallyorbreakForpassclassFromprintcontinueGlobalraisedefIfreturndelImporttryelifInwhileelseIswithexceptlambdayield缩进
一般当我们定义一个函数、使用if…else、while等时,第二行都必需要进行缩进。使用四个空格或键盘上的tab键表示缩进。如下代码所示:
def add(a, b): return a + bif 0 < 1: print("True")
如果我们缩进位置不对时,运行下面这段代码一般会报IndentationError: expected an indented block错误。如下代码所示:
def add(a, b): return a + bprint(add(1, 2))
input和print
input意思是等待用户输入,print我们之前也已经用过,表示打印的意思。我们运行下面这段代码,会发现Pycharm打印台需要我们输入2个数,当我们输入第一个数字时,按下Enter,会让我们输入第二个数,输完第二个数,按Enter,程序运行结束。当然下面这段代码是有Bug的,猜猜Bug在哪里呢?如下代码所示:
a = input("请输入第一个数:")b = input("请输入第二个数:")print("输入的2个数和为:", (a + b)
上面代码将输出如下内容:
import与from...import请输入第一个数:1
请输入第二个数:2
输入的2个数和为:3
python 用 import 或者 from...import 来导入相应的模块。
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为:from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为:from somemodule import *
import timeprint(time.strftime('%Y.%m.%d',time.localtime(time.time())))
上面代码将输出如下内容:
从.py文件导入2019.02.01
from...import模块导入函数
from datetime import datetimeprint(datetime.now())
上面代码将输出如下内容:
2019-02-01 10:14:45.614800
已知目录结构如下:
test1.py代码如下:
def add(a, b): return a + b
test2.py代码如下:
from test1 import addprint(add(1,2))
运行test2.py打印如下内容:
3
注意,该目录结构有一个init.py文件,这个init.py文件声明该目录是一个python模块。小伙伴可以试试去掉init.py后是否可以执行。
定义一个函数def 函数名(参数列表): 函数体
函数实例
def hello(): print("hello world")
创建一个类和对象
class People(): """ 定义一个人类 """ def __init__(self, name): self.name = name def my_name(self): print("我的名字是:"+self.name)bobby = People('bobby') # 创建一个对象bobby.my_name()
上面代码将输出如下内容:
我的名字是:bobby
注意:
第一种方法init()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。我们创建了一个People类,People类有一个构造函数,当我们创建一个People类的对象时需要传入一个参数,创建的对象可以调用People类中的方法
异常处理我们在编写Python程序时,经常会因为一些错误导致剩下的代码无法执行,为了解决这个问题,Python内置了一套try...except...finally...的错误处理机制。我们先看一段会抛出异常的代码
a = 10if a > 0: b = a / 0else: b = a + 1print(b)
上面代码将输出如下内容:
Traceback (most recent call last):
File "F:/新建文件夹/blogApiTest/test5.py", line 42, in <module>
b = a/0
ZeroDivisionError: division by zero
上面代码比较简单,我们发现,我们的当a>0时,我们将执行 b = a / 0,除数为0。我们都知道除数不能为0,所以Python程序会 抛出异常,那么我们怎么才能接受这个异常并使程序继续执行下去呢?我们可以使用try...except...finally. 如下代码所示:
try: a = 10 if a > 0: b = a / 0 else: b = a + 1 print(b)except ZeroDivisionError as e: print(e)finally: print("end")
上面代码将输出如下内容:
division by zero
end
我们将我们的程序放在try里面,如果发生错误抛出ZeroDivisionError 异常,这里为了简便,把ZeroDivisionError 重命名为e,当然,我们也可以不使用finally,可以直接使用try...except
。这里有个问题,我是怎么知道会抛出ZeroDivisionError 异常的呢?我将给大家罗列一些常见异常,如下表格所示:
当然如果我们不知道会抛出什么异常,我们可以使用BaseException
,因为所有的错误类型都继承自BaseException
,所以在使用except时需要注意的是,它不但捕获该类型的错误,还把其子类也“一网打尽”。比如:
try: a = 10 if a > 0: b = a / 0 else: b = a + 1 print(b)except BaseException as e: print(e)
上面代码将输出如下内容:
division by zero
欢迎关注微信公众号:软件测试汪。软件测试交流群:809111560
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。