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.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 | |
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
注意:
- 第一种方法init()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。
- 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基础语法的更多相关文章
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python 基础语法(三)
Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...
- Python 基础语法(四)
Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...
- Python 基础语法(二)
Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...
- Python 基础语法
Python 基础语法 Python语言与Perl,C和Java等语言有许多相似之处.但是,也存在一些差异. 第一个Python程序 E:\Python>python Python 3.3.5 ...
- 吾八哥学Python(四):了解Python基础语法(下)
咱们接着上篇的语法学习,继续了解学习Python基础语法. 数据类型大体上把Python中的数据类型分为如下几类:Number(数字),String(字符串).List(列表).Dictionary( ...
- python学习第五讲,python基础语法之函数语法,与Import导入模块.
目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...
- python学习第四讲,python基础语法之判断语句,循环语句
目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...
- Python基础语法(三)
Python基础语法(三) 1. 数值型数据结构 1.1 要点 在之前的博客也有提到,数值型数据结构在这里就不过多介绍了.在这里提及一些需要知道的知识点. int.float.complex.bool ...
- python学习第三讲,python基础语法之注释,算数运算符,变量.
目录 python学习第三讲,python基础语法之注释,算数运算符,变量. 一丶python中的基础语法,注释,算数运算符,变量 1.python中的注释 2.python中的运算符. 3.pyth ...
随机推荐
- HTML5: HTML5 Web Workers
ylbtech-HTML5: HTML5 Web Workers 1.返回顶部 1. HTML5 Web Workers web worker 是运行在后台的 JavaScript,不会影响页面的性能 ...
- Linux基础-文件管理
<1>查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令. Linux文件或者目录名称最长可以有265个字符,“ ...
- 推荐一款 MyBatis 开发神器,为简化而生!
Java技术栈 )); MyBatis-Plus将会生成以下查询SQL: SELECT * FROM user WHERE age >= 18FROM user WHERE age >= ...
- 大型项目必备IPC之Binder机制原理(一)
阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680 摘要 Binder是Android系统进程间通信(IPC)方式之一.Li ...
- [已解决]报错: twisted 18.7.0 requires PyHamcrest>=1.9.0
1.下载对应的Twisted,下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 2.通过Anaconda3的Anaconda Promp ...
- dwr中的部分问题和总结
2015-9-1 1.dwr设置同步异步:DWREngine.setAsync(false);//dwr设置为同步 --->使用目的是堵塞js,因为设置这样是为了js进行java的后台数据获取. ...
- clip-path 加边框border
最近些项目,需求是写一个箭头图案,想着就用clip-path来写,但是写到后来发现clip-path 无法加边框,最后用了个死办法写了出来,仅供参考 下图是设计图 如下是实现方案(就是写两层,外面一层 ...
- Spring Boot,Spring Data JPA多数据源支持配置
1 配置文件 wisely.primary.datasource.driverClassName=oracle.jdbc.OracleDriver wisely.primary.datasource. ...
- 【记录】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 ...
- printf sscanf进阶
printf ; printf (3d", a);//将打印 035 printf(“%-*s”, width, string): “*”: 在这里用width代替,其实和printf(“% ...