系列文章
Python 学习 01 —— Python基础 Python 第三方库 —— urllib 学习 Python 第三方库 —— BeautifulSoup4学习 Python 学习 02 —— Python爬虫
一、Python基础
1、简单介绍
-
Python 是一门解释型、面向对象的高级编程语言。(解释型:运行前无需生成中间代码,面向对象:封装、继承、多动态) -
Python的设计混合了传统语言的软件工程的特点和脚本语言的易用性,具有如下特性:
-
Python缺点:
- 运行速度慢:由于Python是解释型语言,运行时翻译为机械码非常耗时,但像C语言是运行前直接编译成CPU能执行的机械码。不过大量应用程序并不需要这么快的运行速度,因为用户一般也感觉不出性能差别。(企业针对大型项目有性能需求)
- 代码无法加密:由于解释型语言发布程序就是发布源代码,其他用户可以直接看到,而像C语言这种编译型语言是把编译后的机械码发出去,机械码无法反推出源码。
-
Python应用:
2、环境搭建
Python环境比较简单,无论是Mac还是Windows都直接去官网下载最新版安装就行,然后再装一个IDE(通常是PyCharm)
-
python官网:www.python.org , Windows安装,记得勾选下面选项。 安装完成后,在命令行下输入python,看是否能成功运行。 如果不能,可能是环境变量问题,去检查系统变量PATH里是否包括下面两个变量。 如果环境变量正确,输入命令行python却打开了Windows应用商店,则删除下面PATH的变量(环境变量是从上到下的优先级,把Python的路径调到商店前面也可以) 在MacBook上,运行是输入 python3,因为MacBook自带了python2,所以我们输入python是默认使用的2.0。 -
Pycharm官网:https://www.jetbrains.com/zh-cn/pycharm/ 安装时下面的全部勾选。 进入PyCharm创建新项目,这里选第一个,用于创建纯Python的项目。 进入后建议先进行一些常规设置,例如代码的字体、项目格式模板。(Windows快捷键:Ctrl+Alt+S,Mac快捷键:command+,)
3、基本知识
注释
'''
多行注释
'''
变量
- 变量可以是任意的数据类型(浮点数、整型、字符串……)
- 变量名不能以数字开头,可以是字母、数字、下划线的组合
- 给变量赋值:例如
a="abc" ,此时Python解释器做了两件事,在内存中创建了“abc"的字符串,然后又在内存中创建了名为a的变量,并让变量a指向”abc“。
输出
print("这是一个普通输出")
a = 123
b = "这是格式化输出"
print("这是格式化输出%d" % a)
print("%s,%d" % (b, a))
print("aaa", "bbb", "ccc")
print("www", "baidu", "com", sep=".")
print("hello", end="")
print("world", end="\t")
print("python", end="\n")
print("end")
输入
使用input() 方法来获取输入,需要注意的是这种方式获取到的都是字符串类型。
password = input("请输入密码:")
print("您输入的密码是:", password)
print(type(password))
b = int(password)
print("b的类型:", type(b))
引入库
在Python中使用import 或from xx import 导入相应模块。
import 是导入整个模块。from aa import bb 是从aa模块中导入bb函数。from aa import bb, cc 是从aa模块导入bb、cc函数。from aa import \* 是从aa模块导入全部函数。
import random
x = random.randint(0, 2)
4、判断与循环
-
if 判断 格式如下,需要注意的是,Python的代码块是依靠缩进完成的,通常内部代码前面会用TAB键来缩进。 同时,Python的判断表达式可以是True和False,也可以是0和非0。Python中else if 的写法是elif 。
if True:
print("True")
else:
print("False")
score = input("请输入分数:")
score = int(score)
if 90 <= score <= 100:
print("优秀")
elif score >= 60 and score < 80:
print("合格")
else:
print("不合格")
-
for循环
for i in range(5):
print(i)
for i in range(0, 11, 3):
print(i, sep=",")
for i in range(-10, -100, -30):
print(i, sep=",")
name = "chongqing"
for x in name:
print(x, end="\t")
a = ["aa", "bb", "cc"]
for x in range(len(a)):
print(x, a[x])
-
while循环
i = 0
while i < 5:
print("第%d次循环" % (i + 1))
print("i=%d" % i)
i += 1
count = 0
while i < 5:
print(count, "小于5")
count += 1
else:
print(count, "大于或等于5")
在循环中,break和continue是同样的作用,break结束循环,continue开始下一次循环。同时,有关键字pass ,用于占位,没有其他意义。
5、字符串、列表、元祖、字典
字符串
-
Python的字符串可以用单引号、双引号、三引号括起来,可以使用反斜杠\ 来转义特殊字符
a = "I'm a student."
b = "Bob said \"I love you\"."
b2 = 'Bob said "I love you."'
c = """
1
2
3
"""
-
Python3默认以UTF-8编码,所有字符串都是unicode字符串 -
可以对字符串进行拼接、截取
a = "Hello"
b = "Python"
print("a+b 的结果:", a + b)
print("你好,"+b)
print(b*3)
print("a[1:4]输出结果:", a[1:4])
print("a[1:4:2]输出结果:", a[1:4:2])
print("a[1:]输出结果:", a[1:])
print("a[:1]输出结果:", a[:1])
-
特别注意:关于转义
print(r"Hello\nPython")
-
字符串常用函数
使用 | 描述 |
---|
isalnum() | 若字符串至少有一个字符且所有字符都是字母或数字,则返回True | isalpha() | 若字符串至少有一个字符且所有字符都是字母,则返回True | isdigit() | 若字符串只包含函数字则返回True | isnumeric() | 若字符串只包含数字字符则返回True | join(seq) | 以当前字符串为分隔符,把seq中的所有元素合并为一个新字符串 | len(string) | 返回字符串长度 | lstrip() | 去掉字符串左边的空格 | rstrip() | 去掉字符串右边的空格 | split(str,num,count) | 以str为分隔符,分割当前字符串。如果有num则截取num+1个 |
列表
-
Python的列表类似于其他语言的数组,最大的区别是,Python的列表里的类型可以不相同。
list = ['abc', 123, 1.1, "ABC"]
print(list[0], type(list[0]))
print(list[1], type(list[1]))
-
列表下标从0开始,-1是末尾位置。(即列表可以倒着遍历)
for temp in list:
print(temp)
length = len(list)
i = 0
while i < length:
print(list[i])
i += 1
-
列表可以用+操作符进行拼接,使用*进行重复。 -
列表常用操作
操作名称 | 操作方法 | 举例 |
---|
访问列表元素 | 通过下标直接访问 | print(list[0]) | 列表的切片 | 使用[1:2:3] | list[1:2:3] | 遍历列表 | 通过for循环 | for i in list: print(i) | 【增】新增元素到列表尾 | append | list.append(5) | 【增】列表的追加 | extend | list.extend(list2) | 【增】列表数据的插入 | insert | list.insert(1,3) | 【删】列表的删除 | del:删除指定下标元素 remove:移除列表指定值的第一个匹配值。若都没有匹配则抛出异常。 | del list[0],list.remove(0) | 【删】弹出列表尾部元素 | pop | list.pop() | 【改】更新列表数据 | 通过下标修改 | list[0] = 1 | 【查】列表成员关系 | in、not in | 2 in list | 【查】指定元素的 下标 | index:从下标1到下标2,找指定元素并返回下标。(不包含下标2) | list.index(元素, 下标1, 下标2) | 【查】统计指定元素 | count | list.count(x) | 列表的加法操作 | + | list3 = list1 + list2 | 【排】列表排序 | sort【默认升序,降序是sort(reverse=True)】 | list.sort() | 【排】列表反转 | reverse | list.reverse() |
元祖
-
元祖Tuple和列表List类似,区别在于元祖的元素不能被修改。 -
元祖的元素不可变,但可以包含可变的对象,例如List
a = ("abc", 123)
b = (1, )
t1 = (1, )
t2 = (2, )
c = t1+t2
d = ("a", [1, 2])
字典
-
字典是无序的对象集合,使用键值对存储,具有极快的查找速度。 -
键必须使用不可变类型。 -
在同一个字典中,键必须是唯一的。
info = {"name": "小白", "age": 18}
print(info["name"])
print(info.get("gender"))
print(info.get("gender", "man"))
-
字典的增删改查
info["id"] = 123456
print(info)
del info["age"]
info.clear()
info["id"] = 111111
print(info.keys())
for key in info.keys():
print(key)
print(info.values())
for value in info.values():
print(value)
print(info.items())
for key, value in info.items():
print("key=%s,value=%s" % (key, value))
根据字典的查,可以看出,实际上for遍历是可以有多个参数的,因此,前面对列表的遍历可以优化。
a = ["a", "b", "c", "d"]
for i, x in enumerate(a):
print(i, x)
集合
-
集合set和字典dict类似,也是一组key的集合,但set不存储value。由于key不能重复,因此在set中的内容都是无重复的。 -
集合set是无序的。 ss = set([1, 1, 2, 3, 3])
print(s)
小结
| 是否有序 | 是否可变 |
---|
列表[ ] | 有序 | 可变 | 元祖( ) | 有序 | 不可变 | 字典{ } | 无序 | key不可变,value可变 | 集合{ } | 无序 | 可变(不重复) |
6、函数
-
函数的定义
def 函数名():
代码
def 函数名(参数1, 参数2):
代码
def 函数名(参数1,参数2):
return xxx
-
举例:返回多个值 def divid(a, b):
shang = a//b
yushu = a%b
return shang, yushu
s, y = divid(5, 2)
print(shang, yu)
-
全局变量和局部变量问题: a = 1
def test():
global a
a = 2
print(a)
print(a)
7、文件操作
文件操作和C语言有点像,也是使用open函数,同时有各种模式。
f = open("test.txt", "w")
f.write("Hello World!")
f.close()
f = open("test.txt", "r")
content1 = f.read(5)
content2 = f.readline()
content3 = f.readlines()
文件常规操作:需要先导入os模块
import os
os.rename("test.txt", "test2.txt")
os.remove("test2.txt")
os.mkdir("临时文件夹")
os.rmdir("临时文件夹")
print(os.getcwd())
os.chdir("../")
os.listdir("./")
8、异常
-
捕获异常 try:
print("-----test1-------")
f = open("123.txt", "r")
print("-----test2-------")
try:
pass
finally:
f.close()
except IOError:
pass
9、自定义模块 模块:用来从逻辑上组织Python代码(变量、函数、类),本质就是.py文件,用于提高代码的可维护性。(类似Java的包)
- 创建两个文件夹,再分别创建两个文件,如下所示:
- 在t1.py中定义一个加法函数,如下所示:
- 在t2.py中引用自定义的模块,如下所示:
|