【Python编程与数据分析】Python语言
示例代码基于Python3.x
表达式与语句
1.表达式是值、变量和运算符的组合:
5
x
x+1
2.语句是一个会产生影响的代码单元,例如新建一个变量或显示某个值。
n = 17
print (n)
a = b = c = 'spam'
[a,b,c] = (1,2,3)
(a,b,c) = 'ABC'
标识符
标识符(Identifier)由字母、数字、下划线(_)组成
区分大小写
保留字段,不能用作变量或其它标识符名称
赋值语句
1.序列解包:将一个序列解包,并将得到的值存储到一系列的变量中。
x, y, z = 1, 2, 3
values = 1, 2, 3
x, y, z = values
>>> key, value = dict.popitem() # 返回并删除字典中的最后一对键和值
>>> key
'girlfriend'
>>> value
'Marion'
2.要解包的序列包含的元素个数必须和等号左边的目标个数相同,否则将引发异常
>>> x, y, z = 1, 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack
3.可使用星号运算符(* )来收集多余的值,这样无需确保值和变量的个数相同
a, b, *rest = [1, 2, 3, 4]
>>> name = "Albus Percival Wulfric Brian Dumbledore"
>>> first, *middle, last = name.split() # 把字符串name按空格拆分成列表
>>> middle
['Percival', 'Wulfric', 'Brian']
条件和条件语句
1.格式:
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
2.Python不支持switch case语句
3.当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号
4.执行语句可以和条件判断语句在同一行
var = 100
if ( var == 100 ) : print("变量 var 的值为100")
print("Good bye! ")
is:相同运算符
1.与 == 不同, == 比较两个对象的内容是否相等
2.is 检查两个对象是否相同(而非内容相等) # 即id()所得的值是否相同
3.从-5开始到256结束,共262个整数会共享内存。python之所以这么干是因为这些小的整数在编程时出现的频率非常高,可以节省内存开销
4.浮点型,字符串,列表,元组(空元组除外),字典不共享内存,每次开辟新内存
其他判断用法
in:成员资格运算符
1.常用于条件表达式中
assert:断言
1.if语句的“亲戚,满足特定条件下,程序才能正常运行,否则崩溃
2.充当程序的检查点
>>> age = 10
>>> assert 0 < age < 100
>>> age = -1
>>> assert 0 < age < 100
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AssertionError
循环类型
while循环
while 判断条件:
执行语句…….
for循环
for iterating_var in sequence:
执行语句......
嵌套循环
1.for 循环嵌套
2.while循环嵌套
3.while嵌入for, for嵌入while
循环控制语句
1.break # 跳出整个循环。
2.continue # continue 语句跳出本次循环的剩余语句
3.pass # pass 不做任何事,一般用做占位语句
并行迭代
1.迭代两个序列
names = ['anne', 'beth', 'george', 'damon']
ages = [12, 45, 32, 102]
#打印名字和对应的年龄
for i in range(len(names)):
print(names[i], 'is', ages[i], 'years old')
2.内置函数zip():缝合多个序列
>>>list(zip(names, ages))
# [('anne', 12), ('beth', 45), ('george', 32), ('damon', 102)]
循环解包
第1章 编程基础
for name, age in zip(names, ages):
print(name, 'is', age, 'years old')
pass、del
pass
1.什么都不做,用作占位
del
1.删除对象的名称
2.示例:
>>> x = ["Hello", "world"]
>>> y = x
>>> y[1] = "Python"
>>> x
['Hello', 'Python’]
>>> del x
>>> y
['Hello', 'Python']
exec()、eval()
exec()
1.内置函数(Python2中是一种语句)
2.将传入的字符串作为代码执行,可以执行复杂的代码逻辑
3.无返回结果
exec("print('Hello, world!')")
eval()
1.eval是一个类似于exec的内置函数
2.只能传入单个运算表达式,不支持复杂代码逻辑
3.返回结果
eval(input("Enter an arithmetic expression: "))
文件输入输出
open函数
f = open('somefile.txt')
1.如果只指定文件名,则文件只可读
f = open('somefile.txt','打开模式参数')
文件打开模式
写入和读取
1.f.write()函数:向文件写入指定的字符串
f = open('somefile.txt', 'w')
f.write('Hello\n')
f.write('World')
f.close()
2.f.read()函数
2.1 读取指定的字节数
2.2 f.readline()函数:读取整行
with open('somefile.txt', 'r') as f:
content = f.read(5) # 从文件开头读5个字节
content1 = f.read() # 从文件指针位置读到结尾
print(content,content1)
f.close()
3.f.close()函数
3.1 常在finally语句块中使用
3.2 写入内容可能只在缓冲区
with open('somefile.txt', 'r') as f:
while True:
line = f.readline() # 逐行读取整个文件
if not line : break
print(line)
f.close()
异常的引发,创建与处理
1.Python在遇到错误时引发异常,异常对象未被处理时,程序终止并显示错误消息(traceback)
2.raise语句
2.1 手动引发/抛出异常
2.2 一旦执行raise语句,程序终止,显示错误消息
2.3 将一个类(Exception的子类)或实例做为参数
2.4 内置异常类:Exception
>>> raise Exception # 引发的是通用异常,没有指出出现了什么错误
>>> raise Exception(‘Drive Overload’) # 添加了错误消息hyperdrive overload
>>> raise OSError # 内置异常类,从Exception类派生而来
处理异常
1.try/except语句
try:
<语句> #运行代码
except <名字1>:
<语句> #如果在try部份引发了<名字1>异常
except <名字2>,<异常参数>:
<语句> #如果引发了<名字2>异常,获得附加的数据
else:
<语句> #如果没有异常发生
try:
f = open("testfile", "w")
f.write("这是一个测试文件,用于测试异常!!")
except IOError:
print("Error: 没有找到文件或读取文件失败")
else:
print("内容写入文件成功")
f.close()
捕捉多个异常
通常做法:except Exception as e
while True:
try:
x = int(input('Enter the 1st number: '))
y = int(input('Enter the 2nd number: '))
value = x / y
print('x / y is', value)
except Exception as e:
print('Invalid input:', e)
print('Please try again')
else:
break
常见的内置异常类
创建自定义异常类
1.内置异常类不够用时
2.专门的错误,用专门的异常类去处理
3.务必直接或间接继承Exception类
4.创建实例
class SomeCustomException(Exception):
pass
try…finally语句
1.无论try语句块中是否触发异常,都会执行finally子句中的语句块
try:
fh = open("testfile", "w")
fh.write("这是一个测试文件,用于测试异常!!")
finally:
print("Error: 没有找到文件或读取文件失败")
2.什么语句放在finally中?
->关闭文件或关闭因系统错误而无法正常释放的资源。
->->文件关闭
->->释放锁
->->把数据库连接返还给连接池