作者 :荣仔!最靓的仔!
专栏地址 :http://suo.im/5Rh1z1
本文目录
1 Python简介
1.1 Python的特点
Python是Guido Van Rossum在1989年开发的一种脚本解释语言,是ABC语言的一种继承。由于作者是Monty Python喜剧团的一名爱好者,故将其命名为Python(蟒蛇)
Python
作为当下一种热门语言,具有以下特点
:
-
语法清晰,代码友好,易读。 -
应用广泛,具有大量的第三方库(尤其是机器学习、人工智能相关库)支持。 -
Python可移植性强,易于操作各种存储数据的文本文件和数据库。 -
Python是一种面向对象语言,支持开源思想。
根据Tiobe编程语言最新排行榜(部分),其中Python排名第三,并且随着大数据、数据分析、深度学习、人工智能的迅速发展,Python收到的关注程度越来越高。
1.2 安装及第三方库导入过程
利用Python编程之前,首先需要安装Python软件:包括搭建Python环境、学会安装Python第三方库等。
搭建好Python环境之后是这个样子的(同时可以打印输出进行进一步的测试)。
当编写大段代码或自定义函数时,在command命令行中编写是不太现实的,因此可以进一步选择合适的编译器进行编译,我在这里用的是JetBrains PyCharm
2018.1.2 x64,下面提供一个百度云盘地址。
百度云盘地址:https://pan.baidu.com/s/1zunmfSfHVDF9VP1qVDQ8Gg
提取码:4558
2 基本语法
2.1 缩进与注释
1 缩进
不同于其他语言,Python 是通过缩进
来标明代码的层次关系的。其中,1个缩进等于4个空格,它是 Python 语言中标明程序框架的唯一手段。前面提到的的 PyCharm 提供了快捷键 Tab 用于快速缩进,Shift + Tab用于返回缩进的上一部操作。
2 注释
注释是用于说明代码信息的,注释代码不执行。Python 注释主要包括两种:
-
行注释:采用“#”开头进行单行注释,如:“# 这里是单行注释”。 -
块注释:即多行注释,常用“ ''' ”或“ """ ”开头和结尾。'''
这里是多行注释 …… 这里是多行注释 '''
这里需要注意的是:
① python 中“ ”
与‘ ’
在表示字符串时是没有区别的。
在输出时,输出内容有“ ”(双引号)则在单引号内使用双引号,即‘ “要输出内容” ’。输出内容有‘ ’(单引号)则在双引号内使用单引号,即“ ‘要输出内容‘ “。
②''' '''
(三引号)用法
1、用作多行注释;2、用作表示一个字符串;
★python中并没有提供专门的多行注释的符号,当一串字符被三引号引用时,但它不作为字符串被操作时,这个三引号内引用的内容就被视为注释。
2.2 常量与变量
1 常量
常量
是指程序中值不发生改变的元素,一旦初始化后就不能对其进行修改的固定值,它是内存中用来保存固定值的单元。
事实上,Python并未提供如C/C++/Java一样的const修饰符,换言之,python中没有常量,python程序一般通过约定俗成的变量名全大写的形式表示这是一个常量。然而这种方式并没有真正实现常量,其对应的值仍然可以被改变。后来,python提供了新的方法实现常量:即通过自定义类实现常量。这要求符合命名全部为大写
和值一旦被绑定便不可再修改
这两个条件。
下面给出一个例子(.py文件),该文件定义了一个方法__setattr(),和一个异常ConstError, ConstError类继承类TypeError。通过调用类自带的字典__dict, 判断定义的常量是否包含在字典中。如果字典中包含此变量,将抛出异常,否则,给新创建的常量赋值。最后两行代码的作用是把const类注册到sys.modules这个全局字典中。
class _const:
class ConstError(TypeError): pass
def __setattr__(self, name, value):
if name in self.__dict__:
raise self.ConstError("Can't rebind const (%s)" % name)
self.__dict__[name] = value
import sys
sys.modules[__name__] = _const()
如果上面对应的模块名为const,使用的时候只要 import const,便可以直接定义常量了。
import const
const.PI=3.14
print(const.PI)
我们运行test.py,就可打印出常量的值,如果再次修改const.PI=4.13,则会抛出const.constError异常。
python常量:
内存中用于保存固定值的单元、在程序中、常量的值不能发生改变的。
python常量命名规范:
通常是以大写字母开头进行区分-Chy常量 chy变量。
python常量的赋值:
数字 字符串 布尔值 空值。
python常量举例:
Aa=123、Ab='chy'、Ac=True和False、Ad=' '。
2 变量
python变量:
占用内存中一块空间、用来存放变量的值(或地址)、存放的值是可以发生改变的。
python变量命名规范:
变量名是由大小写字符、数字和下划线()组合而成的;第一个字符必须是字母或下划线开始()不可用数字开头,不要用中文开头;Python中的变量是区分大小写的;在赋值时单引号、双引号的效果是一样的。
注意:
Python中已经被使用的一些关键词不能用于声明变量,如下图所示。
2.3 输入与输出
1 输入
Python的输入函数主要是:input()
str1 = input('input:')
print(str1)
结果如下:
再来看一个例子:
number = input('input:')
print(number)
结果如下:
2 输出
Python的输入函数主要是:print()
print(3)
结果如下:
再来看一个例子:
print('Hello World!')
结果如下:
同时,Python 还支持格式化输出
数据,这是调用format()
函数来实现。
# 输出6位数值的浮点数,小数点后精确到2位
print(format(12.3456, '6.2f'))
结果如下:
2.4 赋值与表达式
1 赋值
Python中赋值语句是使用等号(=)直接给变量赋值,如a=10
,如果需要同时给多个变量进行赋值,则表达式如下。
a, b, c = 10, 20, (10+20)/2
print(a, b, c)
# 先运算右侧3个表达式,然后同时将表达式结果赋给左侧变量
结果如下 :
2 表达式
表达式
是程序中产生或计算新数据值的一行代码,通常由变量、常量或操作符号产生,赋值表达式如 a = 10。
3 数据类型
3.1 数字类型
Python中常见的数字类型包括整数类型
、浮点数类型
、复数类型
。
-
整数类型:
对应数学中的整数,其返回值类型为int型,如10, 25等。 -
浮点数类型:
带有小数点的数字,其返回类型为float型,如3.14, 2.1e2等。 -
复数类型:
Python复数分为两部分,例如a+bj,其中a是实部,b是虚部,其返回类型为complex。其中,复数可通过.real获得实部数据,通过.imag获得虚部数据。
z = -12.3 + 8j
print('复数:', z, '类型:', type(z))
print('实部:', z.real)
print('虚部:', z.imag)
结果如下:
注:
Python中的数字类型是可以相互转换的。
-
浮点数转整数: int()
-
整数转小数: float()
-
浮点数转复数: complex()
3.2 字符串类型
在Python中,字符串类型
是指需要用单引号或双引号括起来的一个字符或字符串。
字符串表示一个字符的序列,其最左端表示字符串的起始位置,下标为0,然后依次递增。
# 字符串格式化输出需要引入百分号(%)实现
print('My name is %s' % ('ZZR'))
结果如下:
再来看字符串类型的一些其他用法。
str1 = 'abcdefg'
str2 = 'Hello World!'
str3 = '1+2+3'
str4 = ' I love Python '
str5 = ['Thank', 'you']
# 字符串求长度
print(len(str1))
# 字符串切片
print(str1[3:6])
# 字符串反向切片
print(str1[-1:-4:-1])
# 字符串查找子字符串,若未找到返回-1
print(str1.find('def'))
print(str1.find('opq'))
# 字符串分割成序列,亦可设置分隔符
print(str2.split())
print(str3.split('+'))
# strip()函数用于去除开头结尾空格,lstrip()函数去除左侧空格,rstrip()函数去除右侧空格
print(str4.strip())
print(str4.lstrip())
print(str4.rstrip())
# join()函数用于拼接字符串
sep = " " # 采用空格拼接
print(sep.join(str5))
结果如下:
3.3 列表类型
在Python中,列表是一个非常重要的数据类型,它是中括号[ ]
中用逗号分隔的元素集合。
list = [1, 2, 'a', 'Python']
print(list)
print(list[3])
print(type(list))
结果如下:
列表中也可以用加号(+)拼接,用乘号(*)重复显示,也可以进行切片等操作。
list1 = [1, 2, 3, 4]
list2 = [5, 6, 7]
print(list1 + list2)
print(list2 * 3)
print(list1[1:3])
结果如下:
下表列举了一些列表中的常用方法,假设有列表list1 = [4, 2, 1, 5, 3]。
3.4 元组类型
元组是与列表类似的一种数据类型,它采用括号定义一个或多个元素的集合,其返回类型为tuple。
tuple1 = (1, 2, 'Python')
print(tuple1)
print(type(tuple1))
print(tuple1[2])
结果如下:
注:
当元组定义后就不能进行更改,也不能删除,这不同于列表,由于其有不变性,因为它的代码更加安全。
3.5 字典类型
在Python中,字典是针对非序列集合提供的,由键值对<Key> <Value>
组成,其类型是dict。
键是字典的索引,一个键对应一个值,通过键值可查找字典中的信息,这个过程叫做映射
。
dict = {"1":"Python", "2":"Java", "3":"C++"}
print(dict)
print(dict["2"])
结果如下:
字典与列表主要存在以下几点不同:
-
列表中的元素是顺序排列的,字典中的数据时无序排列的。 -
映射方式不同,列表通过地址映射到值,字典通过键值对映射到值。 -
列表只能通过数字下表或索引进行访问,字典可以用各种对象类型作为键进行访问。
4 条件语句
4.1 单分支
if <condition>:
<statement>
<statement>
判断为真就执行
i =1
if i == 1:
print(True)
结果如下:
4.2 二分支
if <condition>:
<statement>
<statement>
else:
<statement>
<statement>
如果条件语句
i = 2
if i == 1:
print(True)
else:
print(False)
结果如下:
4.3 多分支
if多分支由 if-elif-else 组成,其中 elif 相当于 else if。
if <condition1>:
<case1 statements>
elif <condition2>:
<case2 statements>
elif<condition3>:
<case3 statements>
……
else:
<defult statements>
演示如下:
course = 88
if course >= 90:
print('A')
elif course >= 80:
print('B')
elif course >= 70:
print('C')
elif course >= 60:
print('D')
else:
print('No Pass!')
结果如下:
5 循环语句
5.1 While循环
while <condition>:
<statement>
else:
<statement>
如果条件表达式
① 第一个案例
i = 1
s = 0
while i <= 100:
s = s + i
i = i + 1
else:
print('over')
print('sum=', s)
结果如下:
② 第二个案例
# 本例中代码是调用webbrowser库中的open_new_tab函数打开百度网页5次
# 本段代码可用于循环增加刷阅读量等
import webbrowser as web
import time
import os
i = 0
while i<5:
web.open_new_tab('http://www.baidu.com')
i = i + 1
time.sleep(0.8)
else:
# /F 表示强行终止程序;/IM 表示图像
os.system('taskkill /F /IM iexplore.exe')
print('close IE')
结果如下:
5.2 for循环
for <var> in <sequence>:
<statement>
<statement>
自定义循环变量var遍历sequence序列中的每一个值,每个值都执行一次循环的语句块。sequence表示序列,常见类型有list(列表)、tuple(元组)、strings(字符串)、files(文件)。
# 输出星号三角形
for i in range(10):
print('*' * i)
结果如下:
5.3 break和continue语句
break和continue语句是两个常用的跳出循环的语句。
1 break语句
break语句跳出整个循环。
# 当求和变量s大于100时,进入if判断语句,执行break语句跳出循环,最后输出和
s = 0
num = 0
while num < 20:
num += 1
s += num
if s> 100:
break
print('The sum is', s)
结果如下:
2 continue语句
continue跳出本次循环,下一次继续判断执行。
# 当为偶数时continue跳出当前循环,所以for循环中只输出偶数
for num in range(10):
if num % 2 == 0:
print('even number', num)
continue
print('odd number', num)
结果如下:
6 函数
当我们要完成特定功能的语句块时,就需要调用函数来完成相应的功能。
6.1 自定义函数
为了简化编程,提高代码的复用性,可以自定义函数。
def funtion_name([para1, para2,……, paraN]):
statement1
statement2
…
[return value1, value2, ……, valueN]
函数调用时,新参被赋予真实的参数,然后执行函数体,并在函数结束调用时返回结果。return语句表示退出函数并返回到函数被调用的地方,返回值传递给调用程序。
def fun(a, b):
print(a, b)
c = a + b
print('sum:', c)
fun(3, 4)
结果如下:
再来看下一个例子:
def fun(a, b, c=10):
print(a, b)
sum = a + b + c
print('sum:', sum)
fun(3, 4)
fun(3, 4, 5)
结果如下:
6.2 常见内部库函数
Python系统内部提供了一些库函数供大家使用,常用的有:str字符串库函数、math数学库函数、os操作系统库函数、socket网络套接字库函数。
6.3第三方库函数
Python作为一门开源语言,他支持各种第三方提供的开源库供用户使用。
常用格式:
module_name.method(parametes)表示第三方库函数名.方法(参数)
使用第三方库之前需要安装,如果没有安装就会报错。
7 文件操作
文件是指存储在外部介质上数据的集合,文本文件的编码方式包括ASCII码格式、Unicode码、UTF-8码和GBK码等。
文件操作流程为打开文件——>读/写文件——>关闭文件。
7.1 打开文件
打开文件是通过调用 open() 函数实现的,函数原型如下:
<variable> = open(<name>, <mode>)
其中,<name>
表示打开文件名称;<mode>
表示文件打开模式,参数有r(只读)、w(只写)、a(最佳末尾)、rb(只读二进制文件)、wb(只写二进制文件)、ab(附加到二进制文件末尾)、w+(追加写文件),返回结果为一个文件对象。
infile = open('test.txt', 'r')
7.2 读/写文件
读文件常用方法:
-
read()的返回值为包含整个文件内容的一个字符串。 -
readline()的返回值为文件内容的下一行内容的字符串。 -
reallines()的返回值是整个文件内容的列表,列表中的每一项都为一行字符串。
写文件常用方法:
-
write()用于把含有文本数据或二进制数据集的字符串写入文件中。 -
writelines()针对列表操作,接收一个字符串列表参数,并写入文件。
7.3 关闭文件
文件读/写结束后,一定要记住使用close()方法关闭文件。为了安全起见,常用try-except-finally异常捕获语句,并在finally子句中关闭文件。
try:
# 文件操作
except:
# 异常处理
finally:
file.close()
7.4 循环遍历文件
在数据爬取或数据分析中,常常会用到文件遍历(常常采用for循环遍历文件内容)。
#!/usr/bin/env python
fd = open('F:/test1.txt', 'r', encoding='UTF-8')
for line in fd:
print(line)
fd.close()
结果如下:
8 面向对象
不同于面向过程编程,面向对象编程需要使用“类”和“对象”来实现,将函数进行封装,是更接近真实生活的一种编程方式。
面向对象的3个基本特征:
-
封装:
把客观事物封装成抽象的类,类中的数据和方法让类或对象进行操作; -
继承:
子类继承父类后,可以使用父类的所有功能,而无需重新编写原有的类,并且可以对功能进行扩展; -
多态:
类中定义的属性或行为被特殊类继承后,可以具有不同的数据类型或表现不同的行为。各个类能表现不同的语义,其实现的方法有两种,分别为覆盖和重载。
在Python中类就是一个模板,模板里可以包含多个函数,函数可实现一些功能,对象则是根据模板创建的实例,通过实例对象可以执行类中的函数。
class Rect:
def __init__(self, length, width):
self.length = length
self.width = width
def detail(self):
print(self.length, self.width)
def showArea(self):
area = self.length * self.width
return area
def showCir(self):
cir = (self.length + self.width) * 2
return cir
rect = Rect(4, 5)
rect.detail()
area = rect.showArea()
cir = rect.showCir()
print('面积:', area)
print('周长:', cir)
结果如下:
未完,待续......
如果你觉得本文写得好,可以扫描下方二维码,关注作者的CSDN博客
,更多精彩文章抢先看。
关注微信公众号『数据分析与统计学之美』,添加作者微信号,拉你入群哦,气氛杠杠的!看到这里,麻烦您点个再看,让更多朋友看到哦!
喜欢本文点个在看
本文分享自微信公众号 - 数据分析与统计学之美(gh_21c25c7e71d0)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4579597/blog/4480219