学习Python3之一:基础
2018-07-28 15:18:01 37 举报
AI智能生成
Python3是一种高级编程语言,以其简洁易读的语法和强大的功能而受到广大程序员的喜爱。它支持多种编程范式,包括面向对象的、命令式、函数式和过程式编程。Python3的设计哲学强调代码的可读性和简洁性,尤其是使用空格缩进划分代码块,而不是使用大括号或者关键词。Python3拥有丰富的内置数据类型和标准库,支持文件处理、网络编程、数据库访问等众多功能。此外,Python3还具有跨平台的特性,可以在Windows、Linux、Mac等多种操作系统上运行。对于初学者来说,Python3是一个理想的入门语言,因为它的语法简单,易于理解,而且有大量的学习资源和社区支持。
作者其他创作
大纲/内容
1、简介
高级语言(相当高级),解释型语言,动态语言
TIOBE 2018.5 排名:第四(仅次于 Java、C、C++)
特点:优雅、明确、简单
优点:代码量少;跨平台;完善的基础代码库
缺点:运行速度慢(比C、Java慢);源码不能加密
应用领域
网站、后台服务:如Youtube
各种工具:爬虫抓取技术等
网游服务器端
案例:Youtube、Instgram、豆瓣、Google、Yahoo、NASA
版本:2.x、3.x,互不兼容
安装
http://www.python.org/
Mac:brew install python3
Windows:安装的时候勾上——Add python3.6 to Path
检验是否安装成功
Linux/Mac:命令行输入python3(或 python)
Windows:命令行输入python
命令行交互模式
提示符:>>>
退出:exit() 或 ctrl+D
解释器
CPython:C语言开发,使用最广泛(默认)
IPython:基于CPython,交互式解释器(推荐)
PyPy:采用JIT技术,动态编译,执行速度快,比 CPython 快5倍
Jython:在Java平台运行,将Python代码编译成Java字节码执行
IronPython:在.Net平台运行的解释器,将Python代码编译成.Net字节码执行
3、语法
pass
空语句,用来占位(若不用 pass,只留空,会报错)
逻辑运算符
and
or
not
比较运算符
==
!= 或 <>
>、<、>=、<=
if
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
三元表达式
value_true if condition else value_false
eg:"fat" if is_fat else "not fat"
eg:"fat" if is_fat else "not fat"
循环
for
for x in ...:
pass
# i 从0~4
for i in range(5):
pass
pass
# i 从0~4
for i in range(5):
pass
while
while <条件判断>:
pass
pass
break:结束循环
continue:跳过本次循环
若死循环,可用 ctrl+c退出
list、tuple
list:有序集合(即数组)
# 定义
classmates = ['Michael', 'Bob', 'Tracy']
# 长度
len(classmates):3
# 访问元素
classmates[0]:'Michael'
classmates[3]:报错'IndexError: list index out of range'
classmates[-1]:最后一个元素
# 添加
classmates.append('Adam'):添加到末尾
classmates.insert(1, 'Jack'):插入指定位置1
# 删除
classmates.pop():删除末尾元素
classmates.pop(1):删除指定位置1
# 多维数组
s = ['python', 'java', ['asp', 'php'], 'scheme']:t[2][1]表示'php'
classmates = ['Michael', 'Bob', 'Tracy']
# 长度
len(classmates):3
# 访问元素
classmates[0]:'Michael'
classmates[3]:报错'IndexError: list index out of range'
classmates[-1]:最后一个元素
# 添加
classmates.append('Adam'):添加到末尾
classmates.insert(1, 'Jack'):插入指定位置1
# 删除
classmates.pop():删除末尾元素
classmates.pop(1):删除指定位置1
# 多维数组
s = ['python', 'java', ['asp', 'php'], 'scheme']:t[2][1]表示'php'
tuple:元祖,不可变 list(初始化后不能改变)
# 定义
t = (1, 2)
t = ():空元祖
t = (1,):只有1个元素的元祖,要和 t=(1)区别,所以要加,
t = (1, 2)
t = ():空元祖
t = (1,):只有1个元素的元祖,要和 t=(1)区别,所以要加,
代码更安全,能用代替 list 的尽量用tuple
dict、set
dict:字典,key-value 存储
使用 Hash 算法来存储 key
key 必须是不变对象(整数、字符串)
key 的存放顺序和放入顺序无关
key 必须是不变对象(整数、字符串)
key 的存放顺序和放入顺序无关
优点:
极快的查找速度
缺点:
占用大量内存,内存浪费多
极快的查找速度
缺点:
占用大量内存,内存浪费多
# 定义
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
# 获取 value
d['Bob']:75
d.get('Bob', -1):若不存在,返回指定值-1
# 删除
d.pop('Bob')
# 判断是否存在
if 'Bob' in d:
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
# 获取 value
d['Bob']:75
d.get('Bob', -1):若不存在,返回指定值-1
# 删除
d.pop('Bob')
# 判断是否存在
if 'Bob' in d:
set:和 dict 类似,但不存储 value(只含 key)
# 定义
s = set([1, 2, 3]):使用 list 作为输入
# 添加
s.add(4)
#删除
s.remove(4)
# 交集、并集等
s1&s2
s1|s2
s1-s2:差集(项在s1中,但不在s2中)
s1^s2:对称差集(项在s1或s2中,但不会同时出现在二者中)
s = set([1, 2, 3]):使用 list 作为输入
# 添加
s.add(4)
#删除
s.remove(4)
# 交集、并集等
s1&s2
s1|s2
s1-s2:差集(项在s1中,但不在s2中)
s1^s2:对称差集(项在s1或s2中,但不会同时出现在二者中)
2、基础知识
编写
后缀名.py文件
执行:python test.py
直接执行
文件头:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
chmod +x .py
执行:test.py
采用缩进方式(不使用 分号;、大括号{ }),使用4个空格的缩进
注意复制、粘贴代码时缩进可能出错
语句以:结尾,下一行缩进视为代码块
#开头为注释
大小写敏感
输入输出
输出:print('hello', name)
格式化:%
%d:整数,%2d--占2位整数,%02d--补0占2位
%f:浮点数,%.2f--保留2位小数
%s:字符串
%x:十六进制
%f:浮点数,%.2f--保留2位小数
%s:字符串
%x:十六进制
用法:'Hello, %s' % 'world'
%d:整数,%2d--占2位整数,%02d--补0占2位
%f:浮点数,%.2f--保留2位小数
%s:字符串
%x:十六进制
%f:浮点数,%.2f--保留2位小数
%s:字符串
%x:十六进制
%%:转义表示%
输入:input()
eg:s = input('please input:')
数据类型、变量、常量
整数
1,-1010
0xff(16进制)
int('99'):整数转换
浮点数
3.14,1.23e9,3.28e-7(科学计数法)
浮点数运算可能有四舍五入的误差
浮点数超出一定范围就是 inf(无限大)
字符串
单引号:'abc'
双引号:"xyz"
单引号本身是一个字符,可用用双引号括起来:"i'm ok"
转义:'I\'m \"OK\"!'
不转义:r,例如:r'\\\t\\'
换行:'''
print('''line1
... line2
... line3''')
... line2
... line3''')
布尔值:True、False
非:not True、not False
空值:None,不同于0值、False
变量:a = 2,a = 'abc'
Python 是动态语言:变量类型不固定
常量:PI = 3.14,通常用大写字母表示常量
除法
普通除法:9 / 3 = 3.0(整数除法也是浮点数);10/3=3.3333333333333335
地板除(只取整数部分):10 // 3 = 3
取余:10 % 3 = 1
编码
不统一
ASCII 编码:127个字符(英文字母、数字、一些字符),1个字节
GB2312编码:中国制定
Shift_JIS:日文
Euc-kr:韩文
各国标准
统一
Unicode:通常用2个字节表示一个字符(使用生僻字,需要4个字节)
UTF-8(可变长):为了节省存储空间
英文字母:1个字节(完全和 ASCII 编码一致)
中文:3个字节
生僻字:4-6个字节
存为文件、服务器发送给浏览器:Uncode->UTF-8
读入内存:UTF-8->Unicode
Python
ord:获取字符的整数表示
ord('A'):65
ord('中'):20013
chr:将整数转换为字符
chr(65):'A'
chr(20013):'中'
直接用16进制整数编码(Unicode)
'\u4e2d\u6587':'中文'
bytes(UTF-8)
x = b'ABC'
每个字符只占用一个字节
encode():str 转为 bytes
'ABC'.encode('utf-8'):b'ABC'
'中文'.encode('uff-8'):b'\xe4\xb8\xad\xe6\x96\x87'
在 bytes 中,无法显示为 ASCII 字符的字节,用/x##
decode():bytes 转为 str
b'ABC'.decode('ascii'):'ABC'
b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'):'中文'
b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore'):'中'
忽略一小部分无效的字节
len
字符数
len('ABC'):3
len('中文'):2
字节数
len(b'ABC'):3
len(b'\xe4\xb8\xad\xe6\x96\x87'):6
len('中文'.encode('utf-8')):6
UTF-8编码1个中文3个字节
0 条评论
下一页