注释

我们在文言文中经常会看到注释,注释可以帮助读者对文章的理解。代码中的注释也是一样,优秀的代码注释可以帮助读者对代码的理解。当然在代码编写过程中,注释的使用不一定只是描述一段代码,也可能的是对代码的调试。

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.1
b = '1'
B = 'test'
c = True
_C = False
d1 = 'test'
name = {'testDog', 'Jim', 'Mary', 'Jim', 'Jack', 'Rose'}

Python中关键字如下所示:

and Exec not
assert Finally or
break For pass
class From print
continue Global raise
def If return
del Import try
elif In while
else Is with
except lambda yield

缩进

一般当我们定义一个函数、使用if…else、while等时,第二行都必需要进行缩进。使用四个空格或键盘上的tab键表示缩进。如下代码所示:

def add(a, b):
return a + b if 0 < 1:
print("True")

如果我们缩进位置不对时,运行下面这段代码一般会报IndentationError: expected an indented block错误。如下代码所示:

def add(a, b):
return a + b print(add(1, 2))

input和print

input意思是等待用户输入,print我们之前也已经用过,表示打印的意思。我们运行下面这段代码,会发现Pycharm打印台需要我们输入2个数,当我们输入第一个数字时,按下Enter,会让我们输入第二个数,输完第二个数,按Enter,程序运行结束。当然下面这段代码是有Bug的,猜猜Bug在哪里呢?如下代码所示:

a = input("请输入第一个数:")
b = input("请输入第二个数:")
print("输入的2个数和为:", (a + b)

上面代码将输出如下内容:

请输入第一个数:1

请输入第二个数:2

输入的2个数和为:3

import与from...import

python 用 import 或者 from...import 来导入相应的模块。

将整个模块(somemodule)导入,格式为: import somemodule

从某个模块中导入某个函数,格式为: from somemodule import somefunction

从某个模块中导入多个函数,格式为:from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为: from somemodule import *

import

import time

print(time.strftime('%Y.%m.%d',time.localtime(time.time())))

上面代码将输出如下内容:

2019.02.01

from...import

模块导入函数

from datetime import datetime
print(datetime.now())

上面代码将输出如下内容:

2019-02-01 10:14:45.614800

从.py文件导入

已知目录结构如下:

test1.py代码如下:

def add(a, b):
return a + b

test2.py代码如下:

from test1 import add

print(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

注意

  1. 第一种方法init()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。
  2. self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

我们创建了一个People类,People类有一个构造函数,当我们创建一个People类的对象时需要传入一个参数,创建的对象可以调用People类中的方法

异常处理

我们在编写Python程序时,经常会因为一些错误导致剩下的代码无法执行,为了解决这个问题,Python内置了一套try...except...finally...的错误处理机制。我们先看一段会抛出异常的代码

a = 10

if a > 0:
b = a / 0
else:
b = a + 1 print(b)

上面代码将输出如下内容:

Traceback (most recent call last):

File "F:/新建文件夹/blogApiTest/test5.py", line 42, in

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 异常的呢?我将给大家罗列一些常见异常,如下表格所示:

异常 描述
AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
NameError 使用一个还未被赋予对象的变量
SyntaxError 语法错误
TypeError 传入对象类型与要求的不符合
ValueError 传入一个调用者不期望的值,即使值的类型是正确的

当然如果我们不知道会抛出什么异常,我们可以使用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

3. Python基础语法的更多相关文章

  1. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  2. Python 基础语法(三)

    Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...

  3. Python 基础语法(四)

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  4. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  5. Python 基础语法

    Python 基础语法 Python语言与Perl,C和Java等语言有许多相似之处.但是,也存在一些差异. 第一个Python程序 E:\Python>python Python 3.3.5 ...

  6. 吾八哥学Python(四):了解Python基础语法(下)

    咱们接着上篇的语法学习,继续了解学习Python基础语法. 数据类型大体上把Python中的数据类型分为如下几类:Number(数字),String(字符串).List(列表).Dictionary( ...

  7. python学习第五讲,python基础语法之函数语法,与Import导入模块.

    目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...

  8. python学习第四讲,python基础语法之判断语句,循环语句

    目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...

  9. Python基础语法(三)

    Python基础语法(三) 1. 数值型数据结构 1.1 要点 在之前的博客也有提到,数值型数据结构在这里就不过多介绍了.在这里提及一些需要知道的知识点. int.float.complex.bool ...

  10. python学习第三讲,python基础语法之注释,算数运算符,变量.

    目录 python学习第三讲,python基础语法之注释,算数运算符,变量. 一丶python中的基础语法,注释,算数运算符,变量 1.python中的注释 2.python中的运算符. 3.pyth ...

随机推荐

  1. HTML5: HTML5 Web Workers

    ylbtech-HTML5: HTML5 Web Workers 1.返回顶部 1. HTML5 Web Workers web worker 是运行在后台的 JavaScript,不会影响页面的性能 ...

  2. Linux基础-文件管理

    <1>查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令. Linux文件或者目录名称最长可以有265个字符,“ ...

  3. 推荐一款 MyBatis 开发神器,为简化而生!

    Java技术栈 )); MyBatis-Plus将会生成以下查询SQL: SELECT * FROM user WHERE age >= 18FROM user WHERE age >=  ...

  4. 大型项目必备IPC之Binder机制原理(一)

    阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680 摘要 Binder是Android系统进程间通信(IPC)方式之一.Li ...

  5. [已解决]报错: twisted 18.7.0 requires PyHamcrest>=1.9.0

    1.下载对应的Twisted,下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 2.通过Anaconda3的Anaconda Promp ...

  6. dwr中的部分问题和总结

    2015-9-1 1.dwr设置同步异步:DWREngine.setAsync(false);//dwr设置为同步 --->使用目的是堵塞js,因为设置这样是为了js进行java的后台数据获取. ...

  7. clip-path 加边框border

    最近些项目,需求是写一个箭头图案,想着就用clip-path来写,但是写到后来发现clip-path 无法加边框,最后用了个死办法写了出来,仅供参考 下图是设计图 如下是实现方案(就是写两层,外面一层 ...

  8. Spring Boot,Spring Data JPA多数据源支持配置

    1 配置文件 wisely.primary.datasource.driverClassName=oracle.jdbc.OracleDriver wisely.primary.datasource. ...

  9. 【记录】uni-app Chrome跨域解决方案插件 has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is...

    博主最近在用Hbuilder X开发前端网页时, 出现了has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header ...

  10. printf sscanf进阶

    printf ; printf (3d", a);//将打印 035 printf(“%-*s”, width, string): “*”: 在这里用width代替,其实和printf(“% ...