官宣,截至2020 年01月01日,Python2已停止更新,Python 2.7是Python 2.x最后的版本。关于Python 3.x 版本与Python 2.x之间的区别可以参考:https://www.runoob.com/python/python-2x-3x.html。
关于Python编码规范参考:https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/#comments
1.数据类型与运算
1.1 数据类型
Python有6中数据类型:数字、字符串、列表、字典、元祖、集合。
- Python 3支持int、float、bool、complex(复数),在Python 3里,只有一种整数类型int表示为长整型,没有Python 2中的long;
>>> a=1
>>> print(type(a)) # type()函数显示变量类型。
<class 'int'>
>>> name='chengyu'
>>> print(type(name))
<class 'str'>
>>> c=str(a)+name # str()函数转换数字为字符串
>>> print(c)
1chengyu
>>> c=name+'1'
>>> print(type(c))
<class 'str'>
- 列表元素可以是字符串、数字、列表,用[]标识;
>>> listtest=['撒野', '残次品', '杀破狼', '某某', '全球高考', '刺青']
>>> for i in listtest:
... print(i)
...
撒野
残次品
杀破狼
某某
全球高考
刺青
>>> listtest=['木苏里',1,['某某','全球高考','一级律师']]
>>> for i in listtest:
... print(i)
...
木苏里
1
['某某', '全球高考', '一级律师']
>>> numb = len(listtest) # 列表元素个数统计
>>> print(numb)
3
>>> numb1 = listtest[1] # 指定输出列表单个元素,起始序号为0.
>>> print(numb1)
1
>>> numb2 = listtest[0:2] # 列表多个元素输出
>>> print(numb2)
['木苏里', 1]
>>> numb3 = listtest[0:1] # 序号遵循“左开右闭”原则
>>> print(numb3)
['木苏里']
>>> listtest=['木苏里',1,['某某','全球高考','一级律师']]
>>> listtest.append('绝美爱情') # append()追加元素
>>> print(listtest)
['木苏里', 1, ['某某', '全球高考', '一级律师'], '绝美爱情']
- 列表是有序的对象结合(每个元素只有一个部分),字典是无序的对象集合,每个元素有两部分组成(键+值)。两者之间的区别在于:字典当中的元素时通过键来存取的,而不是通过偏移存取, 用{} 标识。
# 提取指定key的值:字典名[‘键名’]
>>> dicttest = {'木苏里':'某某','priest':'撒野','羲和清零':'助理建筑师','水千丞':'一醉经年'}
>>> print(dicttest['木苏里'])
某某
# 输出整个列表
>>> for i in dicttest:
... print(i + '作品:' + dicttest[i])
...
木苏里作品:某某
priest作品:撒野
羲和清零作品:助理建筑师
水千丞作品:一醉经年
# items()函数遍历输出整个列表
>>> dictitems = dicttest.items()
>>> print(dictitems)
dict_items([('木苏里', '某某'), ('priest', '撒野'), ('羲和清零', '助理建筑师'), ('水千丞', '一醉经年')])
- 元组:类似列表,不同之处:列表[]标识,元组()标识,另外元组的元素不能修改,元素之间用逗号隔开;
>>> tupletest = ('顾一', '林二', '邢三', '李四')
>>> print(tupletest[0:3])
('顾一', '林二', '邢三')
- 集合是一个无序不重复元素的序列,类似列表,基本功能元素间的关系测试和存储不重复元素,输出无序。
>>> settest = ('顾一', '林二', '邢三', '李四', '顾一')
>>> print(set(settest))
{'顾一', '李四', '林二', '邢三'}
1.2 简单运算
# 术运算符,运算优先级:** > * > / > % > // > + -
- print(10+34)
- print(30-32)
- print(3*2) # 乘
- print(3**2) # 幂运算
- print(34/3) # 除
- print(34//3) # 取整数
- print(34%3) # 取余数
- print("喜欢你"*100) # 字符运算
[root@chengyu ~]# python3
Python 3.8.2 (default, Mar 16 2020, 14:21:03)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 10+34
44
>>> 30-32
-2
>>> 3*2
6
>>> 3**2
9
>>> 34/3
11.333333333333334
>>> 34//3
11
>>> 34%3
1
>>> "喜欢你"*100
'喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你喜欢你'
逻辑运算not、and、or:
>>> year = 2020
>>> month = 4
>>> if (year == 2020) and (month < 5):
... print('过去,喜欢是一厢情愿')
... else:
... print('未来,喜欢是义无反顾')
...
过去,喜欢是一厢情愿
>>> if (year > 2020) or (month != 4):
... print('time is dog')
... else:
... print('love is color blind')
...
love is color blind
>>> if not(year == 2020 and month == 4):
... print(date)
... else:
... print('幸福是:天上星,杯中月,眼前人!')
...
幸福是:天上星,杯中月,眼前人!
2.Python语句
2.1 if 条件语句
if 条件语句主要用于判断,基本的语法:
if 判断条件:
执行代码1
else:
执行代码2
>>> salary = 20000
>>> if salary >= 20000:
... print('处于工资分布top:1.6%')
... elif salary >= 10000 and salary <= 15000:
... print('处于工资分布top:5.4%')
... elif salary >= 8000 and salary <= 10000:
... print('处于工资分布top:11%')
... else:
... print('二八定律80%人群')
...
处于工资分布top:1.6%
2.2 for 循环语句
for语句:
for i in 循环区域:
循环执行的代码
>>> citylist=['哈尔滨', '武汉', '广州', '深圳']
>>> for city in range(len(citylist)):
... print('城市名:' + citylist[city])
...
城市名:哈尔滨
城市名:武汉
城市名:广州
城市名:深圳
>>> for city in range(len(citylist)):
... if citylist[city] == '哈尔滨':
... print(citylist[city] + '学府四道街22:00的路灯')
... continue
... else:
... print('城市名:' + citylist[city])
...
哈尔滨学府四道街22:00的路灯
城市名:武汉
城市名:广州
城市名:深圳
>>> for city in citylist:
... if city == '哈尔滨':
... print(city + '学府四道街22:00的路灯')
... break
... else:
... print('城市名:' + city)
...
哈尔滨学府四道街22:00的路灯
2.3 while 循环语句
控制条件变量要继续使用就用while,否则用for,已知循环次数用for循环,未知循环次数用while循环。
while 判断条件:
重复执行的代码
>>> a=1
>>> while a < 20:
... a+=5
... print(a)
...
6
11
16
21
>>> a=1
>>> while a < 20:
... print(a)
... a+=5
... if a > 15:
... break
...
1
6
11
2.4 try/except异常处理语句
即使语句或表达式在语法上是正确的,执行时,仍可能会引发错误,try/except就是监查try语句块中的执行异常,通过except语句捕获异常信息并处理,工作原理:
-
首先,执行 try 子句(try 和 except 关键字之间的(多行)语句);
-
如果没有异常发生,则跳过 except 子句并完成 try 语句的执行;
-
如果在执行 try 子句时发生了异常,则跳过该子句中剩下的部分;然后,如果异常的类型和 except 关键字后面的异常匹配,则执行 except 子句,然后继续执行 try 语句之后的代码;
-
如果发生的异常和 except 子句中指定的异常不匹配,则将其传递到外部的 try 语句中;如果没有找到处理程序,则它是一个 未处理异常,执行将停止并显示如上所示的消息。
try:
<主执行语句>
except:
<主执行语句false时要执行的语句>
>>> 1 + 'a'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> try:
... print(1 + 'a')
... except:
... print('数字和字符串不可直接相加')
...
数字和字符串不可直接相加
3 函数与Python库
3.1 函数
def 函数名(参数):
代码
>>> def dataadd(datalist):
... datalist.append([1,2,3])
... print (datalist)
...
>>> dataadd([4,5])
[4, 5, [1, 2, 3]]
Python常用的内置函数:
3.2 Python库(摘自官文)
引用库的两种方法:
-
import 库名
-
from 库名 import 库里的功能
- os 模块提供许多与操作系统交互的函数;
>>> import os
>>> os.getcwd()
'/root'
一定要使用 import os 而不是 from os import * 。这将避免内建的 open() 函数被 os.open()
隐式替换掉,它们的使用方式大不相同。
内置的 dir() 和 help() 函数可用作交互式辅助工具,用于处理大型模块,如 os:
>>> import os
>>> dir(os)
<returns a list of all module functions>
>>> help(os)
<returns an extensive manual page created from the module's docstrings>
2. glob 模块提供在目录中使用通配符搜索创建文件列表的函数;
>>> import glob
>>> glob.glob('/home/*.py')
['/home/pyttest.py', '/home/test1.py', '/home/test.py']
3.re 模块为高级字符串处理提供正则表达式工具;
>>> import re
>>> re.findall(r'\bf[a-z]*','whichfootorhandfellfastest')
['foot','fell','fastest']
>>> re.sub(r'(\b[a-z]+)\1',r'\1','catinthethehat')'
catinthehat'
4.math 模块提供对浮点数学的底层 C 库函数的访问,random 模块提供了进行随机选择的工具,statistics 模块计算数值数据的基本统计属性(均值,中位数,方差等);
>>> import math
>>> math.cos(math.pi / 4)
0.7071067811865476
>>> math.log(1024, 2)
10.0
>>> import random
>>> random.choice(['Monday', 'Tuesday', 'Wednesday'])
'Wednesday'
>>> random.sample(range(10), 5)
[2, 3, 4, 6, 1]
>>> random.random() # random float
0.47573922852176354
>>> random.randrange(10) # random integer chosen from range(10)
6
>>> import statistics
>>> data = [1.2, 4.4, 5.24, 2.5, 6.1]
>>> statistics.mean(data)
3.888
>>> statistics.median(data)
4.4
>>> statistics.variance(data)
4.03372
5.urllib.request用于访问互联网和处理互联网协议;
6.datetime 模块提供以简单和复杂的方式操作日期和时间的类。
>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2020, 4, 22)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'04-22-20. 22 Apr 2020 is a Wednesday on the 22 day of April.'