本文记录 python 基本知识学习中查漏补缺的部分
目录
1.基本语法
1.1 常量和变量
1.1.1 常量
- 空值
两个空值在内存地址中一致,但是值不相等。
# 用'is'和'=='分别判断两个空值的关系
import numpy as np
a = np.nan
b = np.nan
if a == b:
print("Same")
else:
print("Not Same")
if a is b:
print("Same")
else:
print("Not Same")
# 运行结果
Not Same
Same
- is 用于判断对象的引用是否相同,即内存地址
- == 用于判断对象的值是否相同
- nan 是一个float64的非空对象,两个空值指向同一个内存地址,但是具备自身的值属性,因此值不相等。
1.1.2 变量
- 多个变量赋值
# 同时为多个变量赋相同的值
a = b = c = 1
print(a, b, c)
# 同时为多个变量指定多个值
a1, b1, c1 = 1, 2, 'python'
print(a1, b1, c1)
# 运行结果
1 1 1
1 2 python
1.2 数据类型
1.2.1 数字(Number)
- 复数:a+bj 或 complex(a,b)
复数的实部a和虚部b都是浮点型 - 类型转换
a = 1.8
# float 转成 int
b = int(a)
print(b)
# int 转成 float
c = float(b)
print(c)
# 创建一个复数
d = complex(1, 2)
print(d)
# 运行结果
1
1.0
(1+2j)
1.2.2 字符串(String)
- 取值
从左到右索引默认从0开始,从右到左索引默认从-1开始 - 内置函数
- format(): 从其他信息中构造字符串
- split(): 通过某种字符分隔字符串
- upper(): 把字符串转换成大写
- lower(): 把字符串转化成小写
- 数据转换
# 字符串和整数的相互转换
# chr:将整数转换为字符串
a = 12
b = chr(a)
print(b) # '12'
# ord:将字符串转换为整数
c = ord(b)
print(c) # 12
# repr:将对象转化为表达式字符串,即加上引号
a = "print(a)"
print(repr(a)) # 'print(a)'
# eval(str):计算在字符串中的有效Python表达式,并返回一个对象
a = 1
b = 2
f = eval(repr(a + b))
print(f) # 3
# hex:将整数转换为十六进制字符串
a = 24
b = hex(a)
print(b) # 0x18
# oct:将整数转换为八进制字符串
c = oct(a)
print(c) # 0o30
1.2.3 列表(List)
- 左闭右开
- append 在尾部添加元素
- 直接首尾合并两个列表:+
1.2.4 元组(Tuple)
- 数据不可被修改
- 用( )存放数据
1.2.5 字典(Dictionary)
- 数据存放: {‘key1’ : ‘value1’, ‘key2’ : ‘value2’}
1.2.6 集合(Set)
- 不考虑元素顺序和出现次数
- 增 add ,删 remove, 查 in
- 并集 | ,交集 & ,异或 ^ (i.e. 并 - 交)
# eval:实现list、tuple、dict与str之间的转化
# 字符串转换成列表
a = "[[1,2], [3,4], [5,6]]"
b = eval(a)
print(b) # [[1, 2], [3, 4], [5, 6]]
# 字符串转换成元组
a = "([1,2], [3,4], [5,6], (0,0))"
b = eval(a)
print(b) # ([1, 2], [3, 4], [5, 6], (0, 0))
# 字符串转化成字典
a = "{1: 'a', 2: 'b'}"
b = eval(a)
print(b) # {1: 'a', 2: 'b'}
# 序列转换成元组
s = [1, 2, 3]
t = tuple(s)
print(t) # (1, 2, 3)
# 序列转换成列表
l = list(s)
print(l) # [1, 2, 3]
1.3 运算符
1.3.1 算数运算符
- 整除(//)
相当于除法向下取整 - 异或(^)
相同为0,不同为1 - 取反(~)
- 右移(>>)
- 左移(<<)
1.3.2 赋值运算符
- b += a 等效于 b = b + a
- b *= a 等效于 b = b * a
1.3.3 比较运算符
- 等于:==
1.3.4 逻辑运算符
- and:x and y
布尔"与" ,如果 x 为 False,返回 False,否则返回 y 的计算值 - or:x or y
布尔"或" ,如果 x 为非 0,返回 x 的值,否则返回 y 的计算值 - not:x not y
布尔"非" ,如果 x 为 True,返回 False ,否则返回 True
1.3.5 成员运算符
- in
- not in
1.3.6 身份运算符
- is :相当于id(x) == id(y)
- is not:相当于id(x) != id(y)
1.4 文件
- 读取文件
# 读取excel文件
import pandas as pd
df = pd.read_excel( r"path\name.xlsx",encoding='utf-8')
# 读取csv文件
import csv
with open('path\name.csv',encoding='utf-8') as file:
csv_reader = csv.reader(file)
# 读取txt文件
f = open('path\name.txt', encoding='utf-8')
content = text_file.read()
2.基本语句
2.1 条件语句
- if 语句
- if else 语句
- if elif else 语句
2.2 循环语句
- for 循环
- while 循环
- Python没有 do while 循环
2.3 循环控制语句
- break:跳出整个循环
- continue:跳出当前循环
- pass:空语句,保证程序完整性
2.4 函数
- 定义函数
- global
当想在函数内部使用全局变量时,可用global进行标注 - return
当想返回多个变量值时,可以把多个变量放在一个列表中,所需数据按照相应索引顺序打印
3.面向对象
3.1 类
- 下划线控制访问
- 单下划线开头(_foo):表示 protected 类型的变量,只允许类对象和子类对象访问,不能用于 from module import
- 双下划线开头(__foo):表示private类型的变量, 只允许该类本身进行访问
- 双下划线开头和结尾(__foo__):定义的是特殊方法,一般是系统定义名字,例如__init__()
3.2 类的继承
- class 子类名(父类名)
- 调用父类的方法时,需要加上父类的类名前缀,且需要带上 self 参数变量
- Python先在本类中查找调用的方法,找不到才去父类中找
- 可以继承多个类
3.3 方法重写
如果父类方法功能不能满足需求,可以在子类重写父类的方法
class Parent: # 定义父类
def myMethod(self):
print('调用父类方法')
class Child(Parent): # 定义子类
def myMethod(self):
print('调用子类方法')
pass
c = Child() # 子类实例
c.myMethod() # 子类调用重写方法