python 简介
python是一门广泛流行的动态语言。它不光可以写后端,还可以写web,图像处理,做自动化运维,自动化测试,爬虫,数据分析。
特点
- 纯面向对象语言,万物皆对象
- 支持面向过程和面向对象的编程范式
- 有着丰富的标准库和第三方库支持
- 良好的可扩展性,可以很容易的和其他语言进行交互
缺点
- 忘掉吧!
python主流种类
- CPython. 官方版, 使用C语言实现, 使用最为广泛, 会将源代码z转换成字节码(.pyc)运行
- JPython. 使用JAVA实现
- PyPy. 使用Python实现,为速度而优化
Python2 还是 Python3
因为linux系统自带python2.x版本。所以在未来几年还是主要使用版本。
但是3.x不管是从性能还是功能上,已经远远超越了2.x,python库基本上都可以在3.下使用了。所以是时候学习3.x了。
What's new in Python3 ?
- print to print()
2.x: >>> print "hello world"
3.x: >>> print("hello world")
- raw_input() to input()
2.x: >>> raw_input(">")
3.x: >>> input(">")
- All is unicode
- 再也不用操心乱码问题
- 数学运算
2.x:
>>> 1/2
0
3.x:
>>> 1/2
0.5
- 详细信息请移步 WhatsNew
第一个程序
创建一个hello_world.py,内容如下
#/usr/bin/env python3
# -*- coding: utf-8 -*-
print("hello world")
第一行代码指定使用哪个python解释器,env会去找名叫python3的解释器来执行代码
第二行代码指定了使用哪种编码
执行代码
$ python3 hello_world.py
hello world
缩进
Python的代码既整洁又美观,因为它使用缩进来表示层级关系。
推荐使用4个空格来代替Tab键。
#/usr/bin/env python3
# -*- coding: utf-8 -*-
if True:
print("Hello")
else:
print("World")
就是这么干净,是不是更喜欢Python了呢!
基本数据类型
数据类型是重点,重点,重点
数字
-
int,整数
-3,-2,-1,0,1,2,3
-
float,包含小数
1.2,0.1
-
字符串
使用单引号或双引号括起来的就是字符串。
'Hello',"World"
它们有什么区别:没什么区别,看个人心情。
不过有个地方要注意一下
test1 = 'I'm boy'
test2 = "I'm boy"- 字符串格式化
- 在python中,抛弃字符串拼接 “+”
- 使用%s
- 字符串格式化
-
布尔型
- True
- False
- 0 == False,1 == True
- 列表
- 定义一个列表
new_list = [1,2,3,4]
- 列表操作
- 列表通过索引(下标)获取数据,索引从0开始。如 new_list[0] 为1
- append(object) 往列表末尾添加元素
- clear() 清空列表所有元素
- copy() 浅拷贝
- count(value) 统计指定元素出现几次
- index(value,[start,[stop]]) 查找指定元素第一次出现的下标
- insert(index,object) 将元素插入指定位置
- pop([index]) 默认删除列表最后一个元素
- remove(value) 删除第一次出现的元素
- sort() 对列表的元素进行排序
- extend(iterable) 将iterable中的元素添加到列表中
- 定义一个列表
- 元组
- 列表是可变的,而元组不可变
- 声明一个元组
new_tuple = (0,1,2,3)
- 元组操作
- count()
- index()
- 字典
- 存储的k-v键值对,查询速度超级快
变量与赋值
什么是变量?它是一个代号,通过变量,可以调取真实数据。
先声明一个字符串变量
name = 'wupeiqi'
说明:
- 先声明一个变量名name
- 在内存中开辟一个空间,用来存储字符串 'wupeiqi'
- 通过 ‘=’ 把name 指向到存储 ‘wupeiqi’ 的内存地址
现在来打印变量name
print(name)
变量名命名规则
-
只能以字母或者下划线开头
-
由字母下划线和数字组成
合法变量名 a_1, _a1
非法变量名 1_a -
Python关键字不能作为变量名,如 if else
-
尽量使用有意义的变量名
用户交互
很多情况下,程序需要通过用户的输入来进行程序的走向。
比如程序不知道你的性别,所以就要用户告诉程序。
Python3 使用 input()函数来获取用户输入
sex = input("Are you are boy or girl? ")
流程控制
当知道了用户输入,就可以就此来做判断。
条件判断 if ... elif ... else
sex = input("Are you are boy or girl? ")
if sex == "boy":
print("去男厕")
elif sex == "girl":
print("去女厕")
else:
print("我也不知道你该去哪个厕所")
循环
这不行啊!如果用户不小心输错性别,那不得后悔死啊!
所以就要用到循环来给用户更多的机会
while 循环
while True:
sex = input("Are you are boy or girl? ")
if sex == "boy":
print("去男厕")
elif sex == "girl":
print("去女厕")
else:
print("我也不知道你该去哪个厕所")
这下好了,用户总算可以找对厕所了。
然而,用户又说了:为毛程序一直问我性别啊!输对了还问,傻13啊
原来 while 的条件为 True,所以程序会一直运行。
那就让程序知道为boy时退出(女生继续玩,嘿嘿)
while True:
sex = input("Are you are boy or girl? ")
if sex == "boy":
print("去男厕")
exit() # exit() 退出程序
elif sex == "girl":
print("去女厕")
else:
print("我也不知道你该去哪个厕所")
for 循环
都说事不过三,不能老是犯错误吧!
所以加个次数限制,如果还是错了,那真对不起了!
这里限制3次
for i in range(3):
sex = input("Are you are boy or girl? ")
if sex == "boy":
print("去男厕")
exit()
elif sex == "girl":
print("去女厕")
else:
print("我也不知道你该去哪个厕所")
print("你到底是男是女还是~~")
有两个关键字可以控制循环
- break 跳出当前循环
- continue 跳出本次循环,继续下一次循环
文件操作
打开文件hello_world.py
new_file = open('hello_world.py','r')
文件模式
- r, 只读。
- w, 只写。文件存在会覆盖重写,文件不存在会创建,
- a, 追加。文件存在会定位到文件末尾添加新内容,文件不存在会创建并写入
- w+
一定要小心使用 w 模式,会抹掉文件内容的
读取文件
- new_file.read() 一次性读取所有内容
- new_file.readlines() 按行读取所有内容,依次存储在列表中
- new_file.readline() 一次读取一行
写入文件
new_file.write("xxx")
关闭文件句柄
new_file.close()
使用with ... as ... 的方式可在运行完代码后自动close
with open('hello_world.py','r') as f:
print(f.read)
待补充
基础很枯燥,很乏味。但却是最重要的。
没事多温习下,发现遗漏的知识点再补充进来。
网友评论