最近需要用
python做数据分析,决定开始学python,总结一些基础笔记
# 一、导语
python是解析性语言python能做什么- 大数据分析
- 自动化运维与自动化测试
- web开发:
flask、jdango - 机器学习
TensorFlow - 胶水语言:如混合c++、java编程,能够把其他语法编写的模块连接在一起
Python语言的特点
- 语法简洁
- 可跨平台
- 应用广泛
- 支持中文
- 强制可读:通过强制缩进体现语句间的逻辑关系提高了程序的可读性
- 模式多样:语法层面同时支持面向过程和面向对象两种编程方式
- 粘性扩展:通过接口和函数集成其他语言编写的代码
- 开源理念
- 库类丰富
Python语言开发环境配置
Python解释器IDLE开发环境- 交互式启动
- 文件式启动
Python语言集成开发环境——PyCharm
# 二、基本知识
# 注释
- 注释是辅助性文字,不被执行
- 单行注释:以
#开头
#这是注释
@前端进阶之旅: 代码已经复制到剪贴板
多行注释:以
'''(3个单引号)开头和结尾
'''
这是注释
这也是注释
这还是注释
'''
@前端进阶之旅: 代码已经复制到剪贴板
# 命名
- 命名是为变量关联标识符的过程,用于确保程序元素的唯一性
- 标识符由字母、数字、下划线(和汉字)等字符及其组合构成
- 标识符的首字符不能是数字 ,且中间不能出现空格
- 标识符对大小写敏感
# 保留字
- 保留字(
Keyword)也被称为关键字,是被编程语言内部定义并保留使用的标识符 Python的标准库提供了一个keyword模块,可以输出当前版本的所有关键字:
>>> import keyword
>>> ls=keyword.kwlist
>>> ls
>>>len(ls)
33
@前端进阶之旅: 代码已经复制到剪贴板
Python 3 有33个保留字
TrueFalseNoneandasassertbreakclasscontinuedefdelelifelseexceptfinallyforfromglobalifimportinislambdanonlocalnotorpassraisereturntrywhilewithyield
# input()函数
- 使用
input()函数从控制台获得用户输入 input()函数以字符串类型返回结果
# eval()函数
eval(<字符串>)函数的作用是间输入的字符串变成Python语句并执行
x=eval(input("请输入:"))
@前端进阶之旅: 代码已经复制到剪贴板
# print()函数
print()函数可以输出字符信息,也可以用字符的形式输出变量- 输出字符信息时,可以直接将待输出内容传递给
print()函数 - 输出变量值时,
print()函数用槽格式和过format()方法将变量和字符串结合到一起输出
# 函数
- 函数可以理解为对一组表达特定功能表达式的封装,将特定功能代码编写在一个函数里,使程序模块化更好,便于阅读和复用
- 可通过保留字
def自定义函数
# 文件操作

# 使用with操作文件
with open(os.path.dirname(__file__) + '/blog.text','w') as f:
f.write(json.dumps(data))
@前端进阶之旅: 代码已经复制到剪贴板

# 三、基本类型

类型判断两个方式
-
type判断基本类型 如type(10) == int不推荐 -
isinstance(值,类型)或者isinstance(值,(int,float,str))三种中任意一种- 例
isinstance(1,int)
- 例
-
Numberintfloatcomplex复数- 如
36j
- 如
-
Boolbool('')/bool([])/bool({})/bool(0)/bool(None)- 都是转化为
False
-
字符串
str(序列)- 单引号
- 双引号
- 三引号(可以换行写多个字符串和ES6的反引号类似)
- 在字符串前面加一个
r,这个字符串就不是一个普通字符串,而是一个原始字符串会原样输出print(r'\n88fafa')此时\n不会转译
-
list列表 (序列) -
tuple元组 (序列) -
集合
set(无序,没有索引,不能切片,元素唯一,不能重复,只有value,没key){}如{1,2,3,4}1 in {1,2,3}1 not in {1,2,3,4}- 两个集合插集
{1,2,3} - {4,5} - 两个集合求交集
{1,2,3,4} & {2,3} - 并集
{1,2,3,4,5,6} | {3,4,7} - 定义一个空的集合
set()
-
字典
dict(有key无value,不同于集合只有value)- 很多
key-value组成,不能够有相同的键, key键不可变类型,可以是int/str/tuplevalue可以是:int/str/float/list/set/dict- 定义一个空的字典
{}
- 很多
两个整型相除得到整型 type(1//2) ==>int 整除会保留整数
// 二进制
0b10012
// 八进制
0o101
// 16进制
0x10
// 10进制转二进制
bin(10)
// 八进制转二进制
bin(o09012)
// 八进制、二进制转十进制
int(0b1000)
// 十进制转16进制
hex(88891)
// 八进制转化
oct(0b100)
@前端进阶之旅: 代码已经复制到剪贴板
转译字符
\n 换行
\t 横向制表符
@前端进阶之旅: 代码已经复制到剪贴板
内置的字符串处理函数
| 函数 | 描述 |
|---|---|
len('x') |
返回字符串x的长度,也可返回其他组合数据类型元素个数 |
str('x') |
返回任意类型x所对应的字符串形式 |
chr(x) |
返回Unicode编码x对应的单字符 |
ord('x') |
返回单字符表示的Unicode编码 |
hex(x) |
返回整数x对应十六进制数的小写形式字符串 |
oct(x) |
返回整数x对应八进制数的小写形式字符串 |
内置的字符串处理方法(共43个,常用16个)
- 在
Python解释器内部,所有数据类型都采用面向对象的方式实现,封装为一个类 - 字符串是一个类,具有类似
<a>.<b>()形式的字符串处理函数,称为方法
| 方法 | 描述 |
|---|---|
str.lower() |
返回字符串str的副本,全部字符小写 |
str.upper() |
返回字符串str的副本,全部字符大写 |
str.islower() |
当str所有字符都是小写时,返回Ture,否则返回False |
str.isprintable() |
当str所有字符都是可打印的,返回Ture,否则返回False |
str.isnumeric() |
当str所有字符都是数字时,返回Ture,否则返回False |
str.isspace() |
当str所有字符都是空格,返回Ture,否则返回Flase |
str.endswith(suffix[,start[,end]]) |
str[start:end]以suffix结尾返回Ture,否则返回Flase |
str.srartswith(prefix[,start[,end]]) |
str[start:end]以prefix开始返回Ture,否则返回Flase |
str.split(sep=None,maxsplit=-1) |
返回一个列表,由str根据sep被分割的部分构成 |
str.count(sub[,start[,end]] |
返回str[start:end]中sub子串出现的次数 |
str.replace(old,new[,count]) |
返回字符串str的副本,所有old子串被替换为new,如果count给出,则前count次old出现被替换 |
str.center(width[,fillchar]) |
字符串居中函数 |
str.strip([chars]) |
返回字符串str的副本,在其左侧和右侧去掉chars中列出的字符 |
str.zfill(width) |
返回字符串str副本,长度为width。不足部分在其左侧添加0 |
str.format() |
返回字符串str的一种排版格式 |
str.join(iterable) |
返回一个新字符串,由组合数据类型iterable变量的每个元素组成,元素间用str分隔 |
# 四、序列-元组、字符串、列表
序列共性
- 切片
- 序号
in判断符2 in [1,2,3]2 not in [1,2,3]len()max(list)min(list)


可变类型
list需要动态改变,就用列表dictset
不可变类型
strtuple定义之后不可变,安全性较高int
字符串基本操作
// +号运算
str1 = 'hell'
str2 = 'world'
str = str1 + str2
// 乘法运算
str1*3 // 重复3次
// 切片
str1[1:2]
@前端进阶之旅: 代码已经复制到剪贴板
// 赋值操作
year,month,day = (2019,10,12)
@前端进阶之旅: 代码已经复制到剪贴板
如果只有一个元素,应该这样表示元组
(1,),一个元素都没有的元组type( () )

# 五、运算符

列表元组都可以比较
(1,2,3) > (1,1,1) // 两两比较第一个、第二个...数字
@前端进阶之旅: 代码已经复制到剪贴板
字典的成员运算符
// 只针对key
'a' in {'a': '1'} // True
@前端进阶之旅: 代码已经复制到剪贴板
身份运算符
is两个取值相等才会返回True'1' is '1' // Trueis not不等
// 关系运算符比较的是两个值是否相等 如
1 == 1.0 // True
// is比较的是两个变量内存地址是否相等 id(值) 获取内存地址
1 is 1.0 // False
@前端进阶之旅: 代码已经复制到剪贴板
对象的三个特征
id(身份) =>is判断value=>==判断type=>isinstance判断
位运算符
把数字当二进制进行运算。把非二进制转化为二进制才计算
&按位与|按位或^按位异或~按位取反<<左移动>>右移动
# 六、循环、条件、枚举
if elsewhilefor in
range
// 等同于
for(var i=0;i<len;i++){}
// range
for i in range(0,10)
// 2是步长
for i in range(0,10,2)
// 取出1,3,5,7
a = [1,2,3,4,5,6,7,8]
for i in range(0,len(a),2)
//切片写法
a[0:len(a):2]
@前端进阶之旅: 代码已经复制到剪贴板
# 七、枚举
# 八、闭包、模块、函数、变量作用域
# 模块

// 在文件中写`__init__.py` 只是标注这是一个包 可以什么都不用写
@前端进阶之旅: 代码已经复制到剪贴板
导入模块重新命名
import test as t
@前端进阶之旅: 代码已经复制到剪贴板
函数
函数内部没有
return返回的结果就是None
// 函数可以返回多个值
def test():
return x, y,z
// 接收返回的值
x,y,z = test() // 其实就是返回了一个元组类型
@前端进阶之旅: 代码已经复制到剪贴板
# 闭包
'''
闭包 = 函数+环境变量(在函数外部)
'''
def test():
num = 10
def fun(x):
return num * x
return fun
f = test()
print(f(10))
origin = 0
def go(step):
global origin
new_pos = step + origin
origin = new_pos
return new_pos
print(go(1))
print(go(2))
print(go(3))
@前端进阶之旅: 代码已经复制到剪贴板
# 匿名函数 lambda
# map函数

库re